nginx Ubuntu 15.10 WordPress

WordPress 引っ越し (LAMP から LEMP)

投稿日:

「さくらの VPS 2G」から「さくらの VPS 512」に引っ越しました.

それに際して,Linux, Apache, MySQL, PHP という構成を Linux, nginx, MariaDB, PHP に変更しました.

移転元

WordPress 用のデータベースのダンプを取り,WordPress 用のディレクトリを保存します.例えば下記のように.

mysqldump -u wordpress -p wordpressdb > wordpressdb_yyyyMMdd.sql

cd /var/www
sudo tar zcvf html_yyyyMMdd.tar.gz html

データベースのダンプと WordPress ディレクトリは移転先にコピーしておきます.

移転先

Ubuntu 15.10 です.

パッケージを最新に.

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo reboot

ビルド用のパッケージ.

sudo apt-get -y install build-essential

MariaDB

インストールして自動起動設定して文字コードの設定.

sudo apt-get -y install mariadb-server mariadb-client
sudo mysql_secure_installation
(set root password)
sudo systemctl enable mysql
sudo systemctl start mysql

sudo vi /etc/mysql/conf.d/characterset.cnf
#---------------------------------
[client]
default-character-set=utf8
 
[mysqld]
character-set-server=utf8
#---------------------------------
sudo systemctl restart mysql

データベースのリストア

データベースに root でログインし,移転元のデータベースと同じユーザ名,データベース名,パスワードを設定.

sudo mysql -u root -p
create database wordpressdb;
grant all privileges on wordpressdb.* to wordpress@localhost identified by 'your_password';
exit

その後,移転元でダンプしたデータベースでリストア.

MySQL のダンプをそのまま MariaDB に入れ込む.

mysql -u wordpress -p wordpressdb < wordpressdb_yyyyMMdd.sql

nginx

IPv6, HTTP/2 モジュールを有効にして nginx をビルド.

sudo apt-get -y install libpcre3-dev libpcre++-dev libssl-dev
wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9
./configure --with-http_ssl_module --with-ipv6 --with-http_v2_module
make
sudo make install

WordPress ディレクトリ

例えば,nginx のデフォルトの html を移転元の WordPress のディレクトリに変更する.その際,デフォルトの 50x.html のみコピーしておく.

sudo mv /usr/local/nginx/html /usr/local/nginx/html_org

tar zxvf html_yyyyMMdd.tar.gz
sudo mv html /usr/local/nginx/

sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.org
sudo cp /usr/local/nginx/html_org/50x.html /usr/local/nginx/html/

nginx の設定ファイル

/usr/local/nginx/conf/nginx.conf を編集.

WordPress のための設定は,基本的には https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/ に書かれている通り.

HTTP/2 のための設定は,基本的には https://www.nginx.com/blog/nginx-1-9-5/ に書かれている通り.

例えば,

...

user www-data;

http {

...

    #gzip  on;

    ## for WordPress
    # Upstream to abstract backend connection(s) for php
    upstream php {
        server unix:/var/run/php5-fpm.sock;
        server 127.0.0.1:9000;
    }

    server {

        ....
	
        server_name  hirooka.pro;
        
        root /usr/local/nginx/html;
        index index.php;

        # location / {
        #     root   html;
        #     index  index.html index.htm;
        # }

     location / {
            try_files $uri $uri/ /index.php?$args; 
        }

        location ~ \.php$ {
            include fastcgi.conf;
            fastcgi_intercept_errors on;
            fastcgi_pass php;
        }

        ...

Systemd の設定ファイル

続いて,Systemd のためのファイル /etc/systemd/system/nginx.service を作成.その設定は基本的には https://www.nginx.com/resources/wiki/start/topics/examples/systemd/ に書かれている通り.

自分でビルドして IPv4 と IPv6 とで別々にディレクティブを分けてリスンする場合,例えば下記の通り.

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target network-online.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

nginx 起動

nginx のディレクトリのユーザー,グループを変更し,nginx と PHP と MariaDB を接続するためのパッケージをインストールし,MariaDB を再起動し,nginx の自動起動設定を行い,nginx を起動.

sudo chown -R www-data:www-data /usr/local/nginx

sudo apt-get -y install php5 php5-mysql php5-fpm

sudo systemctl restart mysql
sudo systemctl enable nginx
sudo systemctl start nginx

これで WordPress にアクセスできること,reboot 後も WordPress にアクセスできること.

-nginx, Ubuntu 15.10, WordPress

Copyright© hirooka.pro , 2013-2018 All Rights Reserved.