nginx + PHP (php-fpm) のインストール

nginxのインストール

次の記事を参考にnginxをインストールします。

nginxのインストール

php-fpmのインストール

php-fpmとPHP関連のパッケージをインストールします。

yum install php-fpm php-mysql php-mbstring php-pear php-gd

PHPの設定 (php.ini)

タイムゾーンをAsia/Tokyoに設定します。

vi /etc/php.ini
;date.timezone =
date.timezone = Asia/Tokyo

php-fpmの設定

サーバの動作ユーザ、グループをnginxに変更します。

vi /etc/php-fpm.d/www.conf
;user = apache
user = nginx
;group = apache
group = nginx

ログディレクトリの所有者もapacheからnginxに変更します。

chown nginx /var/log/php-fpm/

php-fpmデーモンの起動

php-fpmデーモンをsystemctl経由で起動します。

systemctl start php-fpm

ホスト起動時のphp-fpmの自動起動を有効にします。

systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

php-fpmデーモンの起動状態を確認します。

systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2017-03-29 14:06:29 UTC; 17s ago
 Main PID: 4392 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
   CGroup: /system.slice/php-fpm.service
           ├─4392 php-fpm: master process (/etc/php-fpm.conf)
           ├─4394 php-fpm: pool www
           ├─4395 php-fpm: pool www
           ├─4396 php-fpm: pool www
           ├─4397 php-fpm: pool www
           └─4398 php-fpm: pool www

nginxにおけるPHP, FastCGIの設定

nginxにドメインexample.comの設定を追加します。phpファイルの場合はphp-fpm経由で処理をするFastCGIの設定を記述します。

vi /etc/nginx/conf.d/example.com.conf
server {
    listen       80;
    server_name  example.com;
    root   /var/www/webuser/example.com/htdocs;
    index  index.html index.htm index.php;

    location ~ \.php$ {
        try_files      $uri =404;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

nginxコマンドの-tオプションで設定ファイルのテストをします。

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

nginxをリロードして設定を反映します。

nginx -s reload

サイト管理ユーザの作成

サイト管理ユーザwebuserを作成します。

/usr/sbin/useradd webuser -m -d /var/www/webuser

passwdコマンドでwebuserのパスワードを設定します。

passwd webuser
Changing password for user webuser.
New password: (パスワード入力)
Retype new password: (パスワード再入力)
passwd: all authentication tokens updated successfully.

作成直後のホームディレクトリのパーミッションは700のため、nginxがアクセス出来るように711のパーミッションに変更します。

chmod 711 /var/www/webuser

Webコンテンツの配置

公開ディレクトリ/var/www/webuser/example.com/htdocs/を作成して、phpinfoを表示するinfo.phpを配置します。

mkdir -p /var/www/webuser/example.com/htdocs/
echo ' /var/www/webuser/example.com/htdocs/info.php

動作確認

http://example.com/info.phpにアクセスすることでphpinfoが表示されれば、動作することが確認できます。

PHPの最新版をソースからインストール

標準パッケージの場合は/etc/httpdが設定ファイル設置場所ですが、
ソースからインストールした場合は/usr/local/apache2/が設定ファイルの設置場所になります。
configureのオプションはそれぞれの環境、要望に応じて変更してください。

yum -y install gcc libxml2-devel gcc-c++ zlib-devel
cd /usr/local/src
wget http://www.ring.gr.jp/archives/net/apache/httpd/httpd-2.2.9.tar.gz
tar zxvf httpd-2.2.9.tar.gz
cd httpd-2.2.9
./configure --with-suexec-docroot=/var/www/
make
make install
ln -s /usr/local/apache2/bin/apachectl /usr/sbin/apachectl
wget http://jp2.php.net/distributions/php-5.2.5.tar.gz
tar zxvf php-5.2.5.tar.gz
cd php-5.2.5
./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbstr-enc-trans --enable-mbregex --enable-cli --with-pear --with-db --with-mysql=/usr --without-sqlite --without-pdo-sqlite --with-zlib --with-libxml-dir=/usr --with-libdir=lib64
make
make install

symfonyインストール PHPフレームワーク

念のためPEARをアップグレードしてchannelを追加してpearコマンドでインストール。

pear upgrade PEAR
pear channel-discover pear.symfony-project.com
yum -y install php-xml
vi /etc/php.ini
-------------------------------------------
memory_limit = 24M
-------------------------------------------
apachectl restart
pear install symfony/symfony
バージョンを指定する場合は
pear install symfony/symfony-1.1.6

symfonyインストール時にでるエラーはphp-xmlをインストールすることで解決できる。

symfony/symfony requires PHP extension "dom"

memory_limitを変更しているのはインストール時に下記エラーがでたため。

PHP Fatal error:  Allowed memory size of 16777216 bytes exhausted (tried to allocate 8192 bytes) in /usr/share/pear/PEAR/Installer.php on line 540

symfony-1.2系はPHP5.2.4以降を必要とするため、PHPバージョンが5.1.6であるCentOS5ではそのままインストールできないかもしれない。symfony-1.1系でもよいならばバージョンを指定してインストールすればいい。

symfony/symfony requires PHP (version >= 5.2.4), installed version is 5.1.6
pear install symfony/symfony-1.1.6

PHP pearのアップデートとMail Net/SMTPのインストール

PHPでWebサーバ,Mailサーバの設定検証用にPOP3, SMTPクライアントを作ろうと思い。

SMTPにはSMTP認証によるメール送信が可能なpearのMailモジュールを使うことにした。

デフォルトではインストールされていなかったのでpearコマンドでインストールしたが、
実際に使用するとNet/SMTPがないとエラーになるためこちらもインストールしようとした。

ところが、そのままではpearのバージョンが低いためインストールできない。

そこで、PEARのアップデートにStructures_Graph、Archive_Tarが必要なので
インストールしてアップデート後

ようやく、Net/SMTP(インストールするときの名前はNet_SMTP)を導入することができた。

pear install Mail
pear upgrade Structures_Graph
pear upgrade Archive_Tar
pear upgrade PEAR
pear install Net_Socket
pear install Net_SMTP