CentOS7-minimal上に社内向け各種OSSシステム構築 -- (2) (L)EMP

#はじめに
[(1) OSインストールと初期設定](http://qiita.com/nobu182/items/636f2bfaac0fe751aede)でLEMPのうちの"L"は済みましたので、残りのE(Nginx)、M(MySQL)、P(PHP)を入れていきます。
はい、"MariaDB"ではなく"MySQL"です。
実は日本語全文検索に対応するため、MariaDBはソースからインストールする必要があったのですが、それがどうしてもうまく行かなくて。なのでパッケージでのインストールでもpluginで対応できるMySQLとしました。
#Nginx

公式ページのドキュメント http://nginx.org/en/linux_packages.html#stable のとおりの手順で入れていきます。
まずリポジトリファイルを作成します。

```
$ sudo vi /etc/yum.repos.d/nginx.repo
```
下記内容を記載します。

```/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/[OS]/[OSRELEASE]/$basearch/
gpgcheck=0
enabled=1
```
[OS]は"rhel" / "centos"、[OSRELEASE]には"5" / "6" / "7"をそれぞれ指定、となっているので、具体的には

```
baseurl=http://nginx.org/packages/centos/7/$basearch/
```
となります。
あとはyumでインストールして、サービスを起動、自動起動の設定を行うだけ。

```
$ sudo yum install -y nginx
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
```
2018年6月時点では1.14.1-1がインストールされました。
ブラウザでデフォルトポートにアクセスして初期画面が表示されたらOKです。

![nginx1.10.0-index_html.png](https://qiita-image-store.s3.amazonaws.com/0/116852/fe15cb6e-6cd5-f199-e2f3-8609941966d0.png)


初期画面が表示されない場合、firewallでhttp通信が許可されていない可能性があります。

```
$ systemctl status firewalld
[...]
   Active: active (running) since ...  （←firewall動作中）
[...]
$ sudo firewall-cmd --list-services --permanent
ssh dhcpv6-client
```

上記の場合、httpがサービスとして設定されていないので、下記コマンドで追加します。

```
$ sudo firewall-cmd --add-service=http --zone=public --permanent
success
```

確認。

```
$ sudo firewall-cmd --list-services --zone=public --permanent
ssh dhcpv6-client http
```

再度ブラウザでデフォルトポートにアクセスしてみてください。

# MySQL
公式ページのドキュメント http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html を参考に入れていきます。
まず http://dev.mysql.com/downloads/repo/yum/ のページから「Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package」のダウンロードページを表示し、下図のリンク先（＝ダウンロードするrpmパッケージのURL）を確認します。
![Fig220.png](https://qiita-image-store.s3.amazonaws.com/0/116852/94447f86-4ab3-52c0-eff9-bb65573ded3d.png)
あとは

* そのrpmパッケージをダウンロード
* リポジトリをインストール
* そのリポジトリからMySQLをyumでインストール
* サービス起動
* サービス自動起動設定

でMySQLは入ります。

```
$ sudo wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ sudo yum localinstall -y mysql57-community-release-el7-8.noarch.rpm
$ sudo yum install -y mysql-community-server
$ sudo systemctl start mysqld
$ sudo systemctl enable mysqld
```
管理者ユーザーの初期パスワードを確認します。

```
$ sudo grep 'temporary password' /var/log/mysqld.log
2016-06-15T02:19:06.523104Z 1 [Note] A temporary password is generated for root@localhost: gd+yc.Gmf4eG
$
```
今回は"gd+yc.Gmf4eG"が初期パスワードのようです。初期パスワードでログインし、管理者ユーザーパスワードを変更します。

```
$ mysql -u root -p
Enter password:
[...]
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
Query OK, 0 rows affected (0.01 sec)
> exit
$
```
その後、

```
$ sudo mysql_secure_installation
```
でデータベースの各種初期設定を行います。管理者ユーザーパスワードは先ほど変更してますので、変更する必要はないですし、その他は基本'y|Y'で応答して行けばOKです。

# PHP
## remiリポジトリの追加
まずepelリポジトリをyumで追加。

```
$ sudo yum install -y epel-release
```
以下はsudoではうまく行かなかったので、管理者ユーザーで行いました。

```
$ su -
# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
```
remiリポジトリを追加します。

```
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```
以下が作成されていればOKです。

```
$ sudo ls /etc/yum.repos.d/remi* -l
-rw-r--r-- 1 root root 1177 12月  9 18:14 /etc/yum.repos.d/remi-php70.repo
-rw-r--r-- 1 root root  449 12月  9 18:14 /etc/yum.repos.d/remi-safe.repo
-rw-r--r-- 1 root root 2340 12月  9 18:14 /etc/yum.repos.d/remi.repo
```

## PHP7インストール
PHP5.6にするか迷うところですけど、強気に7。
（5.6のサポートはあと1年チョイ後の2017/08/28までですので。）

```
$ sudo yum install -y --enablerepo=epel,remi-php70 php php-mbstring php-pear php-fpm php-mcrypt php-mysql php-gd php-ldap php-imap
$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm
```

### PHP-FPMの設定
「その設定は不要」と記載したページ http://satakeh.hatenablog.com/entry/2014/11/13/072048 もありますが、内容が難しいので大勢になびいて /etc/php.ini ファイルを下記のとおり修正します。

```
$ sudo vi /etc/php.ini
```

```/etc/php.ini
[...]
;cgi.fix_pathinfo=1   ←コメントアウト
cgi.fix_pathinfo=0
[...]
```
ApacheではなくNginxを入れましたので、ユーザー・グループを'apache'から'nginx'に変更します。

```
$ sudo vi /etc/php-fpm.d/www.conf
```

```/etc/php-fpm.d/www.conf
[...]
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
;user = apache   ←コメントアウト
user = nginx
; RPM: Keep a group allowed to write in log dir.
;group = apache   ←コメントアウト
group = nginx
[...]
```

###Nginxの設定
設定ファイルを下記のとおり修正します。

```
$ sudo vi /etc/nginx/conf.d/default.conf
```

```/etc/nginx/conf.d/default.conf
server {
    listen       80;
    #server_name  localhost;
    #server_nameはうっかりして変更し忘れてると後々悩むこともあるため、きちんと設定します
    server_name  [hostname or ip address];
[...]
    location / {
        root   /usr/share/nginx/html;
        #index  index.html index.htm;
        index  index.html index.htm index.php;
    }
[...]
    location ~ \.php$ {
        #root           html; うーん、何となく僕は変更してるんですが、このままでよいのかも？
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
[...]
}
```
'-t'オプションで設定ファイルをチェックして、問題がなければnginxとphp-fpmをリスタートさせます。

```
$ sudo nginx -t
$ sudo systemctl restart nginx
$ sudo systemctl restart php-fpm
```
動作確認用のphpページファイル作成。

```
$ sudo vi /usr/share/nginx/html/testphp.php
```

```/usr/share/nginx/html/testphp.php
<?php
    phpinfo();
?>
```

ブラウザで http://[hostname]/testphp.phpにアクセスして正常にページが表示されればOKです。
![Fig230.png](https://qiita-image-store.s3.amazonaws.com/0/116852/d38a36cb-1318-873a-2cc7-f5973d23cc22.png)