CentO7にNginxをインストールしWordPressの環境をセットアップします、がまずはnginxとPHP7をインストールします。
Webサーバは今までApacheを使用していましたが今回Nginxへ切り替えします。Nginxは近年急速にシェアを拡大している高速軽量でC10K問題にも対応している高機能なWebサーバです。リバースプロキシとしても動作し、HTTPだけではなくSMTPやIMAP、POP3もバランシング可能など高機能で拡張性も高いようです。以前は、Apacheに比べて少なかったネット情報も大分豊富になってきました。これはもうNginxでいくしかないでしょう。
目次
1.Nginxセットアップ
(1)インストール
Nginxを公式サイトからインストールします。CentOS7の公式リポジトリにNginxは無いのでNginx公式サイトからリポジトリを取得してインストールします。EpelリポジトリにもNginxはありますがNginx公式の方が最新になっているようです。
1 2 3 4 5 6 7 8 9 10 11 |
# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm #展開されたリポジトリを確認 # ls -la /etc/yum.repos.d/ -rw-r--r--. 1 root root 113 7月 15 2014 nginx.repo #リポジトリを確認 # less /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 |
nginxのリポジトリを有効にしてインストールします。
1 |
# yum -y install nginx enablerepo=nginx |
(2)Firewall設定
CentOS7ではデフォルトで外部と通信できるポートはsshのみです。httpとhttpsポートも外部から接続できるようにします。
httpとhttpsの即時有効化
1 2 |
# firewall-cmd --add-service=http --zone=public # firewall-cmd --add-service=https --zone=public |
httpとhttpsの永続設定(再起動後も有効)
1 2 |
# firewall-cmd --add-service=http --zone=public --permanent # firewall-cmd --add-service=https --zone=public --permanent |
(3)Nginxの設定ファイル追加
新規のconfファイルを作成し設定内容を記述します。Wordpressに対応したサンプルです。
# vi /etc/nginx/conf.d/gtrt7.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
server { listen 80; server_name gtrt7.com; root /usr/share/nginx/gtrt7/wordpress; index index.php; charset utf-8; # wordpress パーマネントリンク設定 try_files $uri $uri/ /index.php?q=$uri&$args; # wp-config.phpへのアクセス拒否設定 location ~* /wp-config.php { deny all; } # php-fpm用設定 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include fastcgi_params; } } |
nginxのバージョン情報を消す設定
1 2 3 |
# vim /etc/nginx/nginx.conf #httpディレクティブに以下の1行を追加 server_tokens off; |
nginx設定ファイルの検証
1 2 3 |
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
test is successfulと表示されればnginxの設定ファイル検証はOKです。
2.PHP7関連のセットアップ
(1)PHP7とphp-fpm等のインストール
epelリポジトリとCentos7用のremiリポジトリを有効にしてPHP7をインストールします。未導入の場合は以下の手順でインストールします。
1 2 |
# yum -y install epel-release.noarch # rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |
既にPHP5.XX がインストールされている場合依存関係で問題がでる可能性があるのでCentos7用のremiの優先度を最大にしておきます。
1 2 |
# vi /etc/yum.repos.d/remi-php70.repo priority=1 |
php-fpmなどの関連パッケージも一括してインストールします。
1 |
# yum -y install --enablerepo=remi --enablerepo=remi-php70 php php-opcache php-devel php-fpm php-gd php-pdo php-dom php-mbstring php-mcrypt php-mysqlnd php-mssql php-pecl-xdebug php-openssl php-json php-pecl-apcu php-pdo_sqlite php-pdo_mysql php-pecl-memcached php-bcmath php-msgpack php-ldap php-pecl-imagick php-pgsql php-pecl-pthreads php-pecl-msgpack php-posix php-pecl-zip |
インストールしたPHPのバージョンを確認します。
1 2 3 4 5 6 |
php --version PHP 7.0.13 (cli) (built: Nov 8 2016 20:16:29) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.13, Copyright (c) 1999-2016, by Zend Technologies with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans |
7.0.13が確認できました。
(2)PHP7の設定
php.iniを環境に合わせて変更します。以前はデフォルトキャラクターをUTF-8に設定していましたがPHP7からデフォルトがUTF-8になったためこの変更は不要になりました。タイムゾーンと言語の設定をします。
1 2 3 4 5 6 7 |
# vi /etc/php.ini #[Date]ブロック # タイムゾーン date.timezone = "Asia/Tokyo" #[mbstring]ブロック # デフォルト言語 mbstring.language = Japanese |
(3)php-fpmの設定
www.confの設定を変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# vi /etc/php-fpm.d/www.conf [www] # 使用するポートを設定 listen = 127.0.0.1:9000 # php-fpmのサービス実行ユーザ、グループを指定 user = nginx group = nginx # Listenするユーザ、グループを指定 listen.owner = nginx listen.group = nginx # php-fpmのサービスのプロセス数を定量とする pm = static #php-fpmの最大子プロセス数を設定 pm.max_children = 10 # php-fpmが受け付ける最大要求数を設定 # ここで設定した要求数を処理したら子プロセスを再起動 pm.max_requests = 500 |
nginxユーザーが存在するか確認します。いなければ作成します。
1 2 3 4 5 |
# cat /etc/passwd|grep nginx #いなければグループを追加します # groupadd nginx # ユーザを追加します # useradd -s /usr/sbin/nologin -g nginx -d /var/www -c nginx nginx |
(4)セッションファイル書込許可
Webサーバでセッションファイルが書き込めるようにセッションディレクトリの所有権をnginxに変更します。
1 |
# chown -R root:nginx /var/lib/php/session |
3.起動と確認
(1)php-fpm
php-fpmを起動し、再起動後でも自動起動されるように設定します。
1 2 |
# systemctl start php-fpm.service # systemctl enable php-fpm.service |
(2)Nginx
nginxを起動し再起動後でも自動起動されるよう設定します。
1 2 |
# systemctl start nginx.service # systemctl enable nginx.service |
テスト用PHPファイルを作成して確認します。
Documentルートに移動しphpinfo()の結果を出力するPHPファイルを作成します。
1 2 |
# cd //usr/share/nginx/gtrt7/wordpress # sh -c "echo '<?php echo phpinfo(); ?>' > index.php" |
ブラウザで、http://gtrt7.comにアクセスしてphp関連情報が画面に出力されればnginxとphp-fpmとの連携は成功です。確認が済んだら作成したindx.phpはセキュリティーリスクになりますので削除しておきます。
1 |
# rm -f index.php |
続きは「CentOS7にWordpressをセットアップ」を参照してください。