CentOS7 + WordPress + Nginx + MySQL を動かしてみよう

VagrantでCentOS7をインストールして、CentOS7 + WordPress + Nginx + MySQL を動かしてみましょう。

Vagrantは「Vagrant」からrpmをダウンロードしてインストールします。CentOS7のboxは「A list of base boxes for Vagrant – Vagrantbox.es」から選びました。

$ sudo rpm -ivh ~/Downloads/vagrant_1.7.0_x86_64.rpm 
$ vagrant box add centos7  https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box
$ mkdir centos7; cd centos7/
$ vagrant init centos7
$ vagrant up

最初の起動では、/vagrantディレクトリのマウントに失敗しました。vagrant-vbguestでVirtualBox Guest Additionを最新にします。

$ vagrant plugin install vagrant-vbguest
$ vagrant vbguest
$ vagrant halt

WordPressへアクセスしたいので192.168.33.10のIPを有効化します。Vagrantfileで次の行を有効にします。

  config.vm.network "private_network", ip: "192.168.33.10"

起動して、SSHログイン後、アップデートをします。

$ vagrant up
$ vagrant ssh
$ sudo yum -y update

Nginxをインストールするには、リポジトリを登録してからyumを使います。

$ sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum -y install nginx
$ sudo yum info nginx
$ sudo systemctl start nginx.service

ファイアウォールで閉じているhttp, httpsを開きます。

$ sudo firewall-cmd --permanent --zone=public --add-service=http
$ sudo firewall-cmd --permanent --zone=public --add-service=https
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --state
$ sudo firewall-cmd --list-services

MySQLを使う場合はリポジトリを追加してインストールします。mysql_secure_installation でセキュアな状態にします。パスワードの指定以外では基本的にデフォルト値のまま実行します。

$ wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
$ sudo rpm -Uvh mysql-community-release-el7-5.noarch.rpm 
$ sudo yum install mysql-community-server
$ sudo systemctl start mysqld.service
$ sudo /usr/bin/mysql_secure_installation

PHP, php-fpmインストールは次のようになります。

$ sudo yum -y install php-mysql php php-gd php-mbstring php-fpm php-xml

デフォルトの設定ファイルをコピーして残しておきます。設定ファイルを編集してuser, group を nginxにしたらphp-fpmを起動します。

$ sudo cp -a /etc/php-fpm.d/www.conf  /etc/php-fpm.d/www.conf.original
$ sudo vi /etc/php-fpm.d/www.conf
$ sudo systemctl start php-fpm.service

nginx, php-fpm, mysqld サービスの有効化

$ sudo systemctl enable php-fpm.service
$ sudo systemctl enable nginx.service
$ sudo systemctl enable mysqld.service

データベースの用意は次のようにwp.sqlを用意して、これをmysqlコマンドへ渡します。mysqlのrootパスワードが必要です。

$ cat wp.sql 
create database wpdb default character set utf8;
grant all on wpdb.* to 'wpuser'@'localhost' identified by 'wpuser';
FLUSH PRIVILEGES;
$ mysql -u root mysql -p < wp.sql 

WordPressはこの時点で最新の4.0.1をダウンロードして展開。

$ wget http://ja.wordpress.org/wordpress-4.0.1-ja.zip
$ cd /var/www/
$ sudo mv html html.old
$ sudo unzip ~/wordpress-4.0.1-ja.zip 
$ sudo chcon -R system_u:object_r:httpd_sys_content_t:s0 wordpress/
$ sudo chown -R nginx:nginx wordpress/
$ sudo mv wordpress html

Nginxの設定ファイルも作成します。ログファイルを書き出すディレクトリも用意しています。

$ sudo vi /etc/nginx/nginx.conf 
$ sudo cp -a /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.original
$ sudo mkdir /var/log/nginx/192.168.33.10
$ sudo chown nginx /var/log/nginx/192.168.33.10
$ sudo chmod 750 /var/log/nginx/192.168.33.10/
$ sudo vi /etc/nginx/conf.d/default.conf

Nginxの設定ファイルは次のように編集します。

$ cat /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  _;
    root         /var/www/html;
    index        index.php index.html index.htm;
    charset      utf-8;

    access_log  /var/log/nginx/192.168.33.10/host.access.log  main;
    error_log  /var/log/nginx/192.168.33.10/host.error.log;

    rewrite /wp_admin$ $uri/ permanent;

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    location ~ \.php$ {
        try_files $uri =404;
        expires   off;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    location ~ /\.ht {
        deny  all;
    }
}

用意ができたら再起動。

$ sudo systemctl stop nginx.service
$ sudo systemctl start nginx.service

PHPの動作環境を確認するためにinfo.phpを作成します。運用環境の場合は、確認後にinfo.phpは削除します。

$ sudo vi /var/www/html/info.php
$ cat /var/www/html/info.php 
<?php echo phpinfo(); ?>

http://192.168.33.10/info.php にアクセスしてPHPの情報が表示されれば、PHPは動いています。あとは、http://192.168.33.10/ へアクセスするとWordPressのインストールウィザードが動き始めるので、それに従ってインストールをします。

ちなみに、CentOS7からMySQLではなくMariaDBが標準で搭載されています。MariaDBを使う場合は次のようにしてインストールして使います。

$ sudo yum -y install mariadb-server mariadb
同じタグの記事: CentOS7
同じタグの記事: Linux
同じタグの記事: MySQL
同じタグの記事: nginx
同じタグの記事: WordPress
同じカテゴリの記事: Linux
関連書籍: WordPress