経験知ロゴ

CentOSでNginxとPHP、MySQLを動かす。

※本ページはプロモーションが含まれています

Nginx news

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の初期設定

役に立ったらこの記事のシェアをお願いします

ブログのフォロー・RSS購読は下記ボタンから