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
- WordPressによるWebアプリケーション開発
- マスタリングNginx
- インフラデザインパターン ~安定稼動に導く127の設計方式 (WEB+DB PRESS plus)
- WordPressプロフェッショナル養成読本 [Webサイト運用の現場で役立つ知識が満載! ] (Software Design plus)
- いきなりはじめるPHP~ワクワク・ドキドキの入門教室~
- パーフェクトPHP (PERFECT SERIES 3)