CentOSでNginxとPHP、MySQLを動かす。
※本ページはプロモーションが含まれていますNginxをインストールする
Nginxをインストール
$ sudo yum install nginx -y
PHP関連とMySqlをインストール
PHPをインストール
$ sudo yum install php-cli php-mbstring php-mysql -y
php-apcをインストール
# yum install --enablerepo=remi,remi-test php-pecl-apc -y
php-fpmをインストール
$ sudo yum install --enablerepo=remi,remi-test php-fpm -y
MySqlをインストール
# yum install mysql-server -y
phpMyAdmin インストール
$ sudo yum install phpmyadmin -y
php−fpmの設定
php−fpmの実行権限を「apache」から「nginx」に変え、Nginxとphp−fpm間をunix socket通信にするために「listen」を変更。
$ sudo vi /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 = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx listen = /var/run/php-fpm/php-fpm.sock;
nginxの設定
nginxでサブドメインを使用できるようにし、WordPressをマルチサイトで動かす設定もする。
WordPressのインストール場所は「/usr/share/nginx/html/wordpress」にする。
Nginxとphp−fpm間をunix socket通信にするために「fastcgi_pass」を変更。
「WP Super Cache」をWordPressマルチサイトで使う設定。
$ sudo vi /etc/nginx/conf.d/default.conf
server { listen 80; server_name example.com *.example.com ; access_log logs/example.com.access.log; error_log logs/example.com.error.log; root /usr/share/nginx/html/wordpress; index index.php; set $cache_uri $request_uri; # POST requests and urls with a query string should always go to PHP if ($request_method = POST) { set $cache_uri 'NULL'; } if ($query_string != "") { set $cache_uri 'NULL'; } # Don't cache uris containing the following segments if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $cache_uri 'NULL'; } # Don't use the cache for logged in users or recent commenters if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") { set $cache_uri 'NULL'; } # Use cached or actual file if they exists, otherwise pass request to WordPress location / { try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php ; } location ~ .php$ { try_files $uri /index.php; include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; #following line is needed by WP SUPER CACHE plugin #fastcgi_param SERVER_NAME $http_host; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/wordpress$fastcgi_script_name; } location ~* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { access_log off; log_not_found off; expires max; } location = /robots.txt { access_log off; log_not_found off; } location ~ /. { allow XXX.XXX.XXX.XXX; deny all; access_log off; log_not_found off; } #XXX.XXX.XXX.XXXの部分は自分のIPアドレスを入れて、そのIP以外ではログイン出来ないようにする。 #location ^~ /wp-content/cache/ { deny all; access_log off; log_not_found off; } }
Nginxの設定ファイルを開く。
$ sudo vi /etc/nginx/nginx.conf
http内に設定を追加。
http { ・・・ fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; }
phpMyAdminの設定
「phpadmin.example.com」で運用する。DNSの設定で「phpadmin.example.com」を使用できるようにしておく。
サブドメインとphp-fpmの設定。
$ sudo vi /etc/nginx/conf.d/virtual.conf
server { listen 80; server_name phpadmin.example.com; access_log /var/log/phpmyadmin.access_log; error_log /var/log/phpmyadmin.error_log; location / { root /usr/share/phpMyAdmin; index index.php; } location ~ .php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$fastcgi_script_name; include fastcgi_params; } }
phpMyAdmin で session を使うために、session ディレクトリのオーナーを nginx に変更。
$ sudo chown -R nginx.nginx /var/lib/php/session/
認証タイプをbasic認証からcookie認証に変更。
$ sudo vi /etc/phpMyAdmin/config.inc.php
$cfg['Servers'][$i]['auth_type'] = 'cookie';
php.iniの設定
デフォルトの設定ではWordPressで画像をアップロードする時にファイルサイズが大きいとアップロードできないので、ファイルのアップロードサイズの上限を変更。php.iniの3箇所を変更。上限サイズは適当に。
$ sudo vi /etc/php.ini
upload_max_filesize = 20M post_max_size = 20M memory_limit = 128M
APCの設定。
vi /etc/php.d/apc.ini
を開き、下記ファイルサイズを変更。
apc.shm_size=64M ↓ apc.shm_size=128M
各種サービスの起動と自動起動設定
php−fpm
# service php-fpm start
# chkconfig php-fpm on
MySQL
# service mysqld start
# chkconfig mysqld on
nginx
$ sudo service nginx start
$ sudo chkconfig nginx on
MySQLとphpMyAdminの初期化
MySQLの初期化
$ sudo /usr/bin/mysql_secure_installation
phpMyAdminの初期化
「phpadmin.example.com/setup」にアクセスして初期設定を行う。
おわりに
以上がCentOSでNginxとPHP、MySQLを動かすまでに行った作業のメモ。
次はWordPressのインストール。
■CentOS+NginxにWordPressをインストールする。
その他の記事
■さくらVPSでCentOS+Nginx+WordPressを動かす
■MacでさくらVPS CentOSの初期設定