WordPress
nginx
vagrant
centos7
PHP7

vagrantにwordpressの環境を構築する

vagrantにcentos7+nginx+PHP7+mariadbの環境でwordpressを導入する

nginxの本を買って、試してみたが
centos6の記述だったり、初心者にはどのディレクトリにあるファイルのことを言っているのかわからなかったり、真似して一通りやってみたらphpのインストール書いてねーぞってなったり大変だった。。
とりあえず、以下の画像のページがvagrantで表示できるまでの記事。

スクリーンショット 2018-07-05 21.53.43.png


購入したnginxの本は次の2冊
nginx実践ガイド 2017年2月16日
nginx実践入門 2016年1月16日

正直、この本だけで構築するのは無理そうだったが、
理解を深めるって点では、「nginx実践ガイド」は1年前くらいに出た本だから、まぁいいんじゃないでしょうか(雑)


構築の仕方は次のような感じです。

(セキュリティなどの設定はまたおいおい。学習、入門などにどうぞ。)

作業用ディレクトリで以下のコマンドを実行する

vagrant init centos/7

Vagrantfileが生成される

vim Vagrantfile 

Vagrantfile内(config.vm.networkの行)のコメントアウトを外す

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "private_network", ip: "192.168.33.10"              

vagrantの起動と接続

vagrant up
vagrant ssh

ルートユーザに変更する

$ sudo su -

yumのアップデート

$ yum update

EPELリポジトリの追加

 $ yum -y install epel-release

remiリポジトリの追加

$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

 
使いそうなものをインストールしておく
vimのインストール (ついvimって打ってしまうので入れとく)

$ yum -y install vim

wgetのインストール (wordpressインストールとかに使う)

$ yum -y install wget

 

nginxのインストール準備
リポジトリの追加

$ vim /etc/yum.repos.d/nginx.repo

以下を記述して保存する

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://nginx.org/keys/nginx_signing.key

[nginx-source]
name=nginx source
baseurl=http://nginx.org/packages/mainline/centos/7/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://nginx.org/keys/nginx_signing.key

nginxをインストールする

$ yum -y install nginx

nginxのバージョン確認

$ nginx -v
nginx version: nginx/1.15.0

自動アップデートの設定

$ yum install yum-cron

$ vim /etc/yum/yum-cron.conf

Vagrantfile内のapply_updatesをnoからyesに修正する

# Whether updates should be applied when they are available.  Note
# that download_updates must also be yes for the update to be applied.
apply_updates = yes

nginxの状態確認(起動前)

$ systemctl status nginx
Active: inactive (dead)

nginxの起動

$ systemctl start nginx

nginxの状態確認(起動後)

$ systemctl status nginx
Active: active (running) 

サーバ再起動時にnginxが自動起動するように設定するようにする

$ systemctl enable nginx.service

(※ centos6などは次のようなコマンド。"chkconfig nginx on"。 参考サイト探しているときに紛らわしい。。)

 
ブラウザでアクセス(vagrantfileでコメントアウトを外したip)
http://192.168.33.10/

welcome to nginx!

表示される!!

次からは、wordpressの準備!

nginxでwebアプリケーション(phpの場合)を使用するために、php-fpmが必要なので入れる(結構ハマった。)

nginxの設定

$ vim /etc/nginx/conf.d/default.conf

以下を編集する
(〜.confのファイルが読み込まれるらしい。本やブログごとに名前が違って紛らわしいが、だぶんそういうこと。)

server {
    listen       80;
    server_name  localhost;
    root /var/www/html/;
    charset UTF-8;
    access_log  /var/log/nginx/sample.com.access.log  main;
    error_log /var/log/nginx/sample.com.error.log;

    location / {
        index  index.php index.html index.htm;
    }

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

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

nginxの再起動

$ systemctl restart nginx

 
phpとphp-fpmのインストール

$ yum -y install --enablerepo=epel,remi,remi-php72  php php-mbstring php-pdo php-mysqlnd php-fpm

PHPのバージョン確認

$ php -v
PHP 7.2.7

php-confの設定を行う

$ vim /etc/php-fpm.d/www.conf

それぞれの行を修正する

修正前
listen = 127.0.0.1:9000
修正後
listen = /var/run/php-fpm.sock

修正前
user = apache 
修正後
user = nginx 

修正前
group = apache
修正後
group = nginx

修正前
;listen.owner = nobody
;listen.group = nobody
修正後
listen.owner = nginx
listen.group = nginx

php-fpmの起動

$ systemctl start php-fpm

php-fpmの状態確認

$ systemctl status php-fpm

サーバ再起動時にphp-fpmが自動起動するように設定するようにする

$ systemctl enable php-fpm

 

とりあえず、phpが使えるか確認してみる。

$ cd /var/www/html
$ vim index.php

みんな大好き hello world! 以下を記述して保存する。

<?php echo ‘Hello PHP7’;

ブラウザでアクセス 
http://192.168.33.10/

表示された!

先ほどのindex.phpはいらないので消しとく

 $ rm index.php

  
wordpressのインストール

$ cd /var/www/html/

日本語版の最新のwordpressを取得する

$ wget https://ja.wordpress.org/latest-ja.tar.gz

解凍する

 $ tar xfz latest-ja.tar.gz

以下のディレクトリが生成される
wordpress

wordpressディレクトリの所有権を変更する

$ chown -R nginx. wordpress

アクセスすると...
http://192.168.33.10/wordpress/

リダイレクトされ、セットアップ画面が表示される!
http://192.168.33.10/wordpress/wp-admin/setup-config.php

 
URLにwordpressが含まれているとなんか嫌なので整える

wordpressをリネイム(とりあえず、sample.comにする)

$ mv wordpress sample.com

rootの位置をsample.comにする
nginxの設定を修正する

$ vim /etc/nginx/conf.d/default.conf

rootの行を修正する

server {
    listen       80;
    server_name  localhost;
    root /var/www/html/sample.com;
    charset UTF-8;
    省略...

設定を変更したのでnginxの再起動

 $ systemctl restart nginx

 
http://192.168.33.10/

↑にアクセスすると↓にリダイレクトされる

http://192.168.33.10/wp-admin/setup-config.php

よしよし。

 
mysql(mariadb)をインストールする

$ yum -y install mariadb-server

mariadbの起動

$ systemctl start mariadb

サーバ起動時に自動で起動するように設定

$ systemctl enable mariadb

mariadb状態確認

$ systemctl status mariadb

 
wordpress用のデータベースを作成する

$ mysqladmin -uroot create wordpress

$ mysql -uroot

MariaDB > GRANT ALL PRIVILEGES ON wordpress .* TO (ここにユーザ名)@localhost IDENTIFIED BY 'ここにパスワード';

(ユーザ作ったけど、なんやかんやハマってしまいrootユーザで進めます)

 $ chown -R nginx:nginx /var/www/html/sample.com
 $ systemctl restart nginx
 $ systemctl restart php-fpm

 
以下にアクセスして、wordpressの初期設定を行う(データベース繋ぎこみ)
http://192.168.33.10/

ユーザ: root
パスワード:
ホスト名: localhost

何度か上記の内容で設定しようとしたが上手くいかず、
wordpressにこれコピぺしてwp-config.php設定してまたアクセスしてよって言われる。

画面をコピペして、以下に配置する

$ vim /var/www/html/sample.com/wp-config.php

内容は、以下のファイルを参考に作成できそう。

$ vim /var/www/html/sample.com/wp-config-sample.php

各行を以下のような内容で修正する

define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');

これで再度アクセスして設定する
http://192.168.33.10/

wordpressの初期テーマの画面が表示される!

 

 
なんとかwordpressの画面が表示されるまでできた。
mysqlあたりの設定が適当になったので、なんとかしたい。。。

とりあえず、今回はnginxでwordpressが使えるようになったので良しとしよう!

次は、varnishとwordpressを使ってみたり、ログの収集やセキュリティ、本番運用など学習したい。

良いサイトや本あったら教えてください。

 


参考書:
nginx実践ガイド
nginx実践入門