CentOS6.5(6.x)にPHP5.6,MySQL5.6などをインストールするメモ


実環境では、CentOS6.xとPHP5.6やMySQL5.6とかをインストールして使うことが多くなったので、メモしておきます。

##環境の確認と設定

AWSとかクラウドのイメージを使うことが多くなったので、ネット接続等は基本問題ない。

###日本語環境

そもそも日本語localeが設定可能かの確認。

```bash
locale -a | grep ja_JP.utf8
```

これで、なにも表示されなければ、そもそもlocaleを設定できる状態にないので、設定を追加。

```bash
localedef -f UTF-8 -i ja_JP ja_JP.utf8
```

追加したか、そもそもあれば、設定を確認する。

```bash
vi  /etc/sysconfig/i18n
```

そこで、

```bash
LANG="ja_JP.utf8"
```

とする。

>多くの場合、LANG="en_US.UTF-8"になっている。

###タイムゾーン

とりあえず、

```bash
date
2015年 11月 18日 水曜日 10:33:36 JST
```

>JSTになっていればいいですが、UTCになっていることもある。

JSTになっていない場合は、

```bash
cp /usr/share/zoneinfo/Japan /etc/localtime
```
として、再度dateしてみる。

システムクロックを設定するためには、

```bash
vi /etc/sysconfig/clock
```

で、UTCになっていれば、

```bash
Zone=”Asia/Tokyo”
```
とする。

###SELinuxの状態確認と無効化

現状の確認は、

```bash
getenforce
```
で、Enforcedとなっていると、有効になっているので、diabledにします。

```bash
vi /etc/selinux/config
```
で、

```bash
SELINUX=disabled
```
とする。

##基本設定など

###ユーティリティーツールのインストール

必要なツールをインストールしておきます。

```bash
yum groupinstall -y 'Development tools'
```
>rootかsudoで。

で、だいたい必要なものは入ります。
その他、

```bash
yum install -y wget
```

とか。

###ユーザーの追加

多くの場合、作業用のユーザーを追加します。

```bash
useradd hoge
passwd hoge
```

>削除はuserdel hoge

###グループの作成、クループへの追加

必要に応じて、グループの作成、追加を行ないます。

```bash
groupadd webmaster
gppasswd -a hoge webmaster
```
>グループの削除はgroupdel -r webmaster
-rをつけると、homeディレクトリも削除
グループからユーザーを削除する場合はgpasswd -d hoge webmaster

追加を確認するには、

```bash
groups hoge
```
とする。

###sudo可能にする

wheelグループにいる人にsudoを許可します。

```bash
visudo
```

とし、%Wheel~の行をコメントイン（2箇所あるうちの最初の方）

必要なユーザーをwheelグループに追加します。

```bash
gpasswd -a hoge wheel
```

###ssh keyをコピーする

通常、Linuxの管理にはsshを使うと思うのでsshの設定をします。

>設定の前に、iptablesまたはクラウドサービスのFirewallで22番ポートが開いてることを確認しておく必要があります。

私は、Macを使い、brewでssh-copy-idを入れているので、

```bash
#@mac
cd ~/.ssh
ssh-copy-id -i id_isa.pub username@remotehost
```
パスワード聞いてくるので、正しく入力したらで完了です。
ssh-copy-idとかが使えない環境では、scp等でコピーします。

```bash
scp ~/.ssh/id_rsa.pub username@remotehost:~/.ssh/authorized_key
```

リモートに、ユーザーが追加されており、ホームディレクトリに.sshディレクトリがあることが前提になります。
また、

```bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
という感じで、適切にディレクトリ、Keyのパーミッションを設定しておかないとログイン時エラーが出ます。

コピーが終了したら、

```bash
ssh username@remotehost
```
で、ログインを確認しておきます。

###sshdの設定を確認（変更）しておく

ssh-copy-idやscpが利用できたということはパスワードログインがonになっているということです。
証明書のみでのログインを許可するように設定を変更します。

```bash
vi /etc/ssh/sshd_config
```
を編集し、

```bash
PasswordAuthentication no
PermitRootLogin no
```

として下さい。パスワードログインの無効化、ルートログインの無効化です。
設定を変更したら、

```bash
service sshd restart
```
とし、設定を反映させます。

##サーバ類のインストール

やっと本番です。私は基本、メンテナンス性などを考慮し、yumの基本レポジトリのみをつかってシステムを構築することがほとんどですが、最新ツールやフレームワークがPHP5.6やMySQL5.6以上を要求することがあるので、今回はそちらでインストールします。

とは言え、基本方針として、yumを利用してインストールしたいと思います。

###レポジトリの追加

現在のレポジトリを確認するには

```bash
yum repolist all
```
で、確認できます。

epel,remiのレポジトリを追加します。

```bash
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
```
>最新のレポジトリを確認するには、epel,remiのページを見て、CentOSのバージョンに合ったrpmのURLを調べます。

epel,remiレポジトリがonになっていると、yum update等の際、時間がかかるので、デフォルトではoffにしておき、インストールの際に、--enablerepo=epel,remiなどとするようにします。

```bash
/etc/yum.repos.d
```

以下に、各種レポジトリファイルがあるので、enable=0に設定します。設定したら、yum repolist allで状況を確認します。

###Apacheのインストール

```bash
yum install httpd
```

最低限の設定として、/etc/httpd/conf/httpd.confの/var/www/htmlを

* -Indexes
* Override All

くらいしておいてもいい。

サービスをスタートさせ、再起動しても起動するようにします。

```bash
service httpd start
chkconfig httpd on
```

###PHPインストール

```bash
yum install php php-common --enablerepo=remi,remi-php56
```

###PHPモジュールのインストール

```bash
yum install php-mysqlnd php-mbstring php-gd php-pdo php-gd php-xml --enablerepo=remi,remi-php56
```

私はLaravelを使うので、さらに

```bash
yum install libmcrypt --enablerepo=epel
yum install php-mcrypt --enablerepo=remi,remi-php56
```

としました。最低限度の設定として、/etc/php.ini

* memory_limit = 512M（メモリサイズに応じて調整）
* display_erros = On（開発環境なら）

あたりをいじる。

設定をいじったらhttpd再起動。

```bash
service httpd restart
```

###MySQLのインストール

MySQLのレポジトリはyumでインストールできるようです。

####レポジトリのインストール

```bash
yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
```

####MySQLのインストール

MySQLをインストールします。

```bash
yum install mysql mysql-devel mysql-server
```

インストールが完了したら、まず、

```bash
mysql_secure_installation
```

を実行して、rootへのパスワード設定を行ないましょう。
>標準ではrootにパスワードはありません。5.7からはあります。

####最低限の設定

```bash
[mysqld]

character_set_server=utf8
innodb_file_per_table
skip-character-set-client-handshake
```

くらい。
メモリサイズもいじっておいたほうがいい。

```bash
innodb_buffer_pool_size = 1G
innodb_log_buffer_size = 64M
```

設定をいじったり再起動。OSを再起動しても起動するようにchkconfig設定。

```bash
service mysqld start
chkconfig mysqld on
```

とりあえずこんな感じ。