ほとんどの場面でapache httpdを使っているのだが、このnginxにもなれる必要が出てきた
ここではCentOS 7でnginxを使う場合について記す

インストール

CentOS 7提供のリポジトリで nginx は提供されていないようで epel のリポジトリからインストール

[root@c110 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@c110 ~]#
[root@c110 ~]# yum install epel-release
[root@c110 ~]# sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/epel.repo
 
[root@c110 ~]# yum --enablerepo=epel install nginx

起動

systemctlを使って起動させる

[root@c110 ~]# systemctl start nginx
 
[root@c110 ~]# systemctl enable nginx

ブラウザでそのマシンにアクセスすると下図のように表記される
2017y05m21d_210601160.png

この画面からコンテンツの場所は、/usr/share/nginx/html で、
設定ファイルは/etc/nginx/nginx.conf にあることが分かる

php連携

apache httpdだとモジュールphp5_moduleを読み込んで同一httpdプロセス内でphpを動かすかcgiベースで別のプロセスで動かすかであった。
nginxはどうやらcgiとしてphpを動かすみたい(あるかもしれないけど、調べた範囲で)。
まずはphp。php-fpm(php-FastCGI Process Manager)をインストール

[root@c110 ~]# yum install php-fpm

php連携(設定)

nginxとphpの連携はTCPソケットかUNIXソケットで行う。インストールしたphp-fpmはTCPソケットが既定の様でこれを採用した

[root@c110 ~]# diff -u /etc/php-fpm.d/www.conf.orig /etc/php-fpm.d/www.conf
--- /etc/php-fpm.d/www.conf.orig        2016-11-06 09:32:28.000000000 +0900
+++ /etc/php-fpm.d/www.conf     2017-05-21 21:31:48.486233802 +0900
@@ -36,9 +36,9 @@
 ; 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
 
 ; Choose how the process manager will control the number of child processes.
 ; Possible Values:
[root@c110 ~]#

そして、nginxへの設定
/etc/nginx/nginx.confの中へ追記する方法もあるのだが、「server block」向けのincludeフォルダが
用意されているので下記ファイルで設定を有効にさせた。
*nginx.confを汚したくないので

[root@c110 ~]# vi /etc/nginx/default.d/php-fpm.conf
location ~ \.php$ {
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include        fastcgi_params;
}

サービス再起動

php-pfmのデーモンを起動させ、nginxを再起動させる

[root@c110 ~]# systemctl start php-fpm
[root@c110 ~]# systemctl enable php-fpm
 
[root@c110 ~]# systemctl restart nginx

テストコンテンツを用意する。っと言っても簡単なものを。場所は/usr/share/nginx/html/がコンテンツルートなので

[root@c110 ~]# vi /usr/share/nginx/html/index.php
<?php
phpinfo();
?>
[root@c110 ~]#

として、該当URLにアクセス

2017y05m21d_220541868.png

一応動いた


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-05-21 (日) 22:10:54 (89d)