Symfoware

Symfowareについての考察blog

Ubuntu16.04 Server + nginx + php-fpmの動作環境を構築する

Ubuntu16.04 Serverにnginxをインストール。
php-fpmを使用してphpが動作する環境を作成してみます。

Debian版の過去記事を参考にしました。
Debian 7 + nginx + php-fpmな環境を構築する



php-fpmのインストール



aptでphp-fpmをインストールしました。


$ sudo apt install php7.0-fpm




php-fpmの設定ファイルは
「/etc/php/7.0/fpm/php-fpm.conf」

phpの設定ファイルは
「/etc/php/7.0/fpm/php.ini」

にそれぞれ作成されます。


動作モードを確認するため、php-fpmの設定ファイルを確認します。


$ vi /etc/php/7.0/fpm/php-fpm.conf



ファイルの末尾付近


;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;

; Multiple pools of child processes may be started with different listening
; ports and different management options. The name of the pool will be
; used in logs and stats. There is no limitation on the number of pools which
; FPM can handle. Your system will tell you anyway :)

; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files from a glob(3) pattern. This directive can be used everywhere in the
; file.
; Relative path can also be used. They will be prefixed by:
; - the global prefix if it's been set (-p argument)
; - /usr otherwise
include=/etc/php/7.0/fpm/pool.d/*.conf



/etc/php/7.0/fpm/pool.d/にある設定ファイルを読み込んでいます。
このディレクトリにはwww.confがあるので、この中身を見てみます。


$ vi /etc/php/7.0/fpm/pool.d/www.conf




listenの項目を探します。


; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;     will be used.
user = www-data
group = www-data

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
; 'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /run/php/php7.0-fpm.sock




ユーザーは「www-data」で動作。
unix-socket「/run/php/php7.0-fpm.sock」をリッスンしていることがわかりました。

nginxからは、このソケットにリクエストを転送するよう指定します。



php-fpmの起動と自動起動設定



systemctlでOS起動時にサービスが開始されるか確認してみます。


$ systemctl list-unit-files --type=service | grep php
php7.0-fpm.service                         enabled



インストール時に自動起動が有効になっていますね。
/run/phpにpidファイルとsocketファイルが作成されていました。


$ ls /run/php | grep php
php7.0-fpm.pid
php7.0-fpm.sock







nginxのインストール



引き続き、aptでnginxのインストールを行います。


$ sudo apt install nginx



インストール後、サービスの状態を確認。


$ systemctl list-unit-files --type=service | grep nginx
nginx.service                             enabled




php-fpm同様、nginxも自動起動が有効になっています。
インストール後、ブラウザでhttp://[サーバーIP]/を表示してみると、こんなページが表示されるはずです。

849_01.png




nginxの設定



拡張子phpのリクエストがきたら、php-fpmにリクエストを転送するよう設定します。
編集する設定ファイルは「/etc/nginx/sites-enabled/default」


$ sudo vi /etc/nginx/sites-enabled/default



50行目付近にphp設定のサンプルがコメントアウトされた状態で記載されています。
socketを使用する箇所のコメントを解除し、有効にします。


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #     # With php7.0-cgi alone:
        #     fastcgi_pass 127.0.0.1:9000;
        #     # With php7.0-fpm:
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }




編集が終わったらnginxを再起動。


$ sudo service nginx restart




wwwのルートはデフォルトで「/var/www/html」となっています。
/var/www/html/info.phpを作成


$ sudo vi /var/www/html/info.php




phpinfoを表示してみます。


  1. <?php phpinfo(); ?>




ブラウザでhttp://[サーバーIP]/info.phpを表示。

849_02.png

ちゃんとphpが動いてくれていますね。
関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2018/04/18(水) 23:07:37|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<GraalVMをUbuntu Server 16.04にインストールする | ホーム | waifu2x.pyを使用してjpg画像を拡大する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://symfoware.blog.fc2.com/tb.php/2136-ef7f4f26
この記事にトラックバックする(FC2ブログユーザー)