CentOS6.xにLAMP環境(Apache + MySQL + PHP)を構築する

# はじめに
「CentOS 6.9」がインストールされた環境に以下をインストールする

- Apache 2.2
- MySQL 5.6
- PHP 7.1

## インストール内容の確認
yumでインストールされるパッケージの内容を確認

```:console
yum info httpd
yum info mysql-community-server
yum info php
```
※必要に応じてyumのリポジトリのインストールやインストールするパッケージのバージョンを変更する


# Apacheのインストール

## 1. インストール
```:console
yum -y install httpd
```

## 2. インストールされたパッケージのバージョン確認
```:console
httpd -v
```

## 3. 設定ファイルの変更（変更箇所のみ抜粋）
```:httpd.conf
#ServerTokens OS
ServerTokens Prod

#ServerSignature On
ServerSignature Off

<Directory "/var/www/html">
#    Options Indexes FollowSymLinks
    Options -Indexes FollowSymLinks

#    AllowOverride None
    AllowOverride All
</Directory>

#DirectoryIndex index.html index.html.var
DirectoryIndex index.html index.html.var index.php
```

※ `ServerTokens` でHTTPヘッダの情報を設定。`Prod`で最小にする。
※ `ServerSignature` でエラーページのフッターの情報表示を設定。
※ `Options Indexes FollowSymLinks` でファイルがないページにアクセスしたときに、ディレクトリの中身を表示するかの可否を設定。`Indexes` を `-Indexes` とすることで表示されなくなる。
※ `AllowOverride` でディレクトリへの設定について、上位ディレクトリで設定した設定値を下位ディレクトリの設定で上書き可能かの可否を設定。`All` で上書き可能にする。
※ `DirectoryIndex` でURLにファイルを省略した場合の対象ファイルを設定。`index.php` を追加する。

## 4. 設定ファイルのチェック
```:console
service httpd configtest
```

## 5. サービス起動
```:console
service httpd start
```
※ 既に起動している場合は再起動(`service httpd restart`)


## 6. WEBページの確認
ブラウザで以下のURLを入力し、Apacheのページが表示されることを確認する。

```:URL
http://xxx.xxx.xxx.xxx/
```
※ `xxx.xxx.xxx.xxx` はサーバのIPアドレス。

# MySQLのインストール
## 1. yumリポジトリの追加
```:console
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
```

## 2. インストール
```:console
yum -y install mysql-community-server
```

## 3. インストールされたパッケージのバージョン確認
```:console
mysqld --version
```

## 4. 設定ファイルの変更（変更箇所のみ抜粋）
MySQLの設定ファイル（my.cnf）に以下の設定を追加する。

```:my.cnf
[mysqld]
character-set-server=utf8
default-storage-engine=InnoDB
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8
```

## 5. サービス自動起動の設定
```:console
chkconfig mysqld on
```

## 6. サービス起動
```:console
service mysqld start
```
既に起動している場合は再起動(`service mysqld restart`)


# MySQLのセキュリティ設定（mysql_secure_installation）
```:console
mysql_secure_installation
Enter current password for root (enter for none): ←そのままEnter
Set root password? [Y/n] Y                        ←rootパスワードを設定する

[ここでパスワードを入力]

Remove anonymous users? [Y/n] Y                   ←匿名ユーザは無効にする
Disallow root login remotely? [Y/n] Y             ←rootユーザーのリモートログインを禁止
Remove test database and access to it? [Y/n] Y    ←テストデーターベースを削除
Reload privilege tables now? [Y/n] Y              ←権限の変更を再読み込み
```

## MySQLコマンドライン起動
設定したパスワードでMySQLコマンドラインが起動できるか確認する。

```:console
mysql -u root -p
```

# PHPのインストール
## 1. yumリポジトリを追加
```:console
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
```

## 2. インストール
```:console
yum -y install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-pdo php-gd php-mysql php-xml php-mcrypt php-pecl-zip
```

## 3. インストールされたパッケージのバージョン確認
```:console
php --version
```

## 4. 設定ファイルの変更（変更箇所のみ抜粋）
PHPの設定ファイル（php.ini）に以下の内容を設定する。

```:php.ini
;memory_limit=128M
memory_limit=256M

;max_execution_time = 30
max_execution_time = 120

;error_log = php_errors.log
error_log = /var/log/php_errors.log

;post_max_size = 8M
post_max_size = 128M

;upload_max_filesize = 2M
upload_max_filesize = 128M

;date.timezone =
date.timezone = Asia/Tokyo

;mbstring.language = Japanese
mbstring.language = Japanese

;mbstring.internal_encoding =
mbstring.internal_encoding = UTF8

;mbstring.http_input =
mbstring.http_input = auto

;mbstring.detect_order = auto
mbstring.detect_order = auto

;expose_php = On
expose_php = Off
```

※ `mbstring.http_output` も設定すべきかも。。。
※ `memory_limit` `post_max_size` `upload_max_filesize` についてはアプリの仕様に合わせて設定すること。
　また、設定する際は「`memory_limit >= post_max_size >= upload_max_filesize`」となるよう注意すること。


## 5. WEBサーバ再起動
```:console
service httpd restart
```

## 6. 設定内容確認（phpinfo.php）
以下の内容を記述したファイル「phpinfo.php」を作成して、WEBサーバに配備。

```:phpinfo.php
<?php echo phpinfo(); ?>
```

### ブラウザで以下のURLに接続し、設定内容を確認する。

```:URL
http://xxx.xxx.xxx.xxx/phpinfo.php
```
※ `xxx.xxx.xxx.xxx` はサーバのIPアドレス。



# 参考
- [【環境構築】LAMP環境構築のメモ(CentOS6)](https://qiita.com/kazu56/items/e12d309097fa7e75ac6f)
- [CentOS 6.x に Apache + MySQL + PHP をインストールする手順](https://weblabo.oscasierra.net/centos6-installing-lamp-1/)