さくらのVPS CentOS6をMariaDB10.2・PHP7.1にアップしてNginx最新へ移行してみた【テスト編】

スポンサーリンク

ことの経緯

CentOS6はデフォルトでMySQLが5.1系、PHPが5.3系でApacheは2.2系と、いかにもWordPressを動かすのに非力という環境です。サポート期間は2020年11月まであるようでまだ2年以上あります。

なぜCentOS6を選んだのか

私は2016年12月にこのサイトを始めた時、CentOS7よりCentOS6の方が情報多そうという安易な理由からCentOS6を使っています。実際、サイトを立ち上げ時に参照させて頂いたサイトもCentOS6を使っていて、体系的に解説されていたのでこれならできるという思いでCentOS6を選んだのです。

時流とともに

当初は自分のサイトができた!という余韻に浸っていただけで、WordPressのインフラであるMySQL・PHP・Apacheなどのバージョンにあまり目がいっておらず、ただ動けばとりあえずOKという感じでいました。それから1年と数か月。私が知らなかっただけで時流は確実に動いていたのです。気が付いた時はApacheがやけにメモリ食うんじゃないの?ということぐらいでhttpdの再起動でお茶を濁してきましたが、これではいけないという思いが湧き上がってきたのです。それは記事でも取り上げた、仮想マシンのUbuntu上でWordPress環境を作ったあたりからです。

Nginxと最新インフラ

PHP-FPMってあるんだ!MariaDBって聞いたことはあるけど・・・これが高速で有名なNginxっていうウェブサーバーか?。VPSでもこれやりたいなぁーって思ってました。Apacheの調整は色々やったのですが、元凶がデフォルトで組み込まれているmod_phpとは知らずにいた自分が情けない。Apache2.2系でもPHP-FPMを組み込めたらしい・・・でも今回は評判が高いNginx最新でいきます。

とりあえず仮想CentOS6でテスト

記事をお読み頂いているみなさんはご存知かと思いますが、あくまでも仮想UbuntuでVPS上のサイトが再現されたということだけで、CentOS6ではありません。やはり仮想CentOS6上でまずはテストってなりませんか?実際PHP-FPMの設定でハマったり色々した結果。VPS上のサイトが仮想CentOS6でも問題なく動くことを確認しました。

さくらのVPS上でも成功!

よしいける!っていうかんじで本番VPSでチャレンジ!やはり嵌りは待っていました。
が、なんとか環境をアップデートできました。前置きが長くなって失礼しました。
今回は仮想CentOS上でのお話をさせて頂き、次回にさくらのVPS上の本番環境のお話をさせてもらいます。

前提

VirtualBox5.2.6上のCentOS6.9 Minimal Desktop
VPSと同じ環境であるWordPress通常シングルサイトサイト一つとマルチサイト一つの構築を目指します。

さくらのVPS上で悲劇?が・・・

面倒なので本番環境とは違いアップグレードではなく新規でMariaDB・PHP等をインストール。これが後にVPSでの悲劇?に繋がります。(ある程度予想はしてましたが・・・)

初めてCentOS6を起動される方はSElinuxを無効化しましょう

デフォルトのSElinuxの状態確認

# getenforce

おそらくEnforcingで有効化されています。

# nano /etc/selinux/config
SELINUX=disabled

と編集して再起動させましょう。

# getenforce
Disabled

となっていれば無効化できています。
この設定をしないとDB等に接続できない恐れがあります。

MariaDB10.2のインストール

Downloads Setting up MariaDB Repositoriesを参考にします。

# nano /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

上記内容を記したリポジトリファイルを作成・保存します。

# yum install MariaDB-server MariaDB-client

MariaDBの起動と自動起動の設定

# /etc/init.d/mysql start or # service mysql start
# chkconfig mysql on

MariaDBのバージョンを確認

# mysql -V
mysql  Ver 15.1 Distrib 10.2.13-MariaDB, for Linux (x86_64) using readline 5.1

セキュアインストール

# mysql_secure_installation

PHP7.1のインストール

# yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysql php-fpm

PHPバージョンの確認

# php -version
PHP 7.1.14 (cli) (built: Jan 31 2018 08:50:37) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

Nginxのインストール

# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# nano /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/6/$basearch/
gpgcheck=0
enabled=1

上記リポジトリファイルを作成・保存する。

# yum install nginx

Nginxのバージョンを確認

# nginx -V
nginx version: nginx/1.13.9
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
     ..........................

Nginxの起動と自動起動の設定

# service nginx start or /etc/init.d/nginx start
# chkconfig nginx on

MariaDBの設定

/etc/my.cnf
or
/etc/my.cnf.d/

配下のファイルで設定をします。
基本的に全てデフォルトでOKです。
気になる方は色々調べて下さいね。問題があったら設定の見直しでいいと思います。

PHPの設定

/etc/php.ini

ファイルで設定します。
デフォルトでいけますが、WordPressでファイルをアップロードする際に413 Request Entity Too Large つまり最大アップロードサイズエラーを出したくない方は、

post_max_size = 100M
upload_max_filesize = 100M

のようにUP上限サイズを適宜変更しておきましょう。*Nginxでも別途設定が必要。
Simplicity2などのWordPressテーマをアップロードする際、私はこのエラーが出ました。

PHP-FPMの設定

# nano /etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock  *今回はunixソケットを使う。
listen.owner = nginx 
listen.group = nginx 

の部分を変更

PHP-FPMの起動と自動起動の設定

# service php-fpm start or /etc/init.d/php-fpm start
# chkconfig php-fpm on

Nginxの設定

実際に動いている設定をそのままコピペすると

# nano /etc/nginx/conf.d/default.conf
server {
     listen       80;
     server_name centos6-vb.com *.centos6-vb.com centos6-vb.net centos6-vb.jp;
     charset utf-8;
     access_log  /var/log/nginx/host.access.log  main;

     location / {
        root   /var/www/html/wp-multi;
        client_max_body_size 100M; #最大アップロードサイズの変更
        index  index.html index.htm index.php;
        try_files $uri $uri/ /index.php?q=$uri&$args;
      }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        root /var/www/html/wp-multi;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     }
}

#vhost-setting


server {
     listen	 80;
     server_name centos6-vb.info;
     charset utf-8;
     access_log  /var/log/nginx/host.access.log  main;

     location / {
        root   /var/www/html/wordpress;
        client_max_body_size 100M;
        index  index.html index.htm index.php;
        try_files $uri $uri/ /index.php?q=$uri&$args;
      }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   /usr/share/nginx/html;
    }    
   
	location ~ \.php$ {
         root /var/www/html/wordpress;
 	  fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
 	  fastcgi_index index.php;
 	  include fastcgi_params;
 	  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 	}
}
# nano /etc/nginx/nginx.conf

の最後にもclient_max_body_size 100M;を追記

http {
    include       /etc/nginx/mime.types;
    
  ...............................
 
    include /etc/nginx/conf.d/*.conf;

    client_max_body_size 100M;  #追記
}

ここでNginxとPHP-FPMを再起動させておきます。

# service php-fpm restart
# service nginx restart

前提として/etc/hostsはこのようになっています。

# cat /etc/hosts
127.0.0.1   localhost centos6-vb centos6-vb.com centos6-vb.net centos6-vb.jp centos6-vb.info centos6-vb.site
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

最後に

どうでしたでしょうか?
ご自分の環境に読み替えて設定をしてみてください。
この記事を書いていて画像ファイルがアップロードできないことに気が付きました。
その場合WordPressのuploadsディレクトリの所有者をApacheから変更が必要でした。

# chown -R nginx:nginx uploads

Apacheが既に起動している場合がありますので、その時は

# service httpd stop

してから

# service nginx start

してみてください。
間違ってる部分もあるかもしれませんが、その際はご容赦ください。
なお、WordPressのインストールは割愛させてもらいました。
当サイトの関連記事等を参照してみてください。
この記事を書くのに当り、多くの他サイト様を参考にさせて頂きました。
諸先輩方の苦労に感謝いたします。

スポンサーリンク

シェアする

フォローする

スポンサーリンク