forLifeMap

仕事、投資、技術メモ、オカルト、その他クソミソな趣味や日常についてあれこれ綴る、日記帳というより雑記帳。忘却の彼方に置き忘れた夢と情熱を求めて彷徨中。

VagrantでWordPress構築

昨日の勢いで、とりあえずローカル環境に
VagrantWordPressの構築までやった。
今後のためにメモを残しておく。

0.構築の前提

ホストOS:Windows 10
ホストの仮想基盤:VirtualBox
ゲストOS:CentOS 7.2
ゲストのWebサーバ:NGINX/1.10.2
ゲストのRDBサーバ:MySQL(Ver14.14)

Vagrantのboxファイル:Vagrantbox.esから

vagrant box add <box名> <URL>

でbox listに適当に追加。

1.Vagrantインスタンス作成

1-1. Vagrantの初期化

Git Bashで適当なフォルダに移動して下記を実行。
(そこがプロジェクトフォルダになる)

vagrant init <box名>
1-2. ゲストOSからホストOS経由でネット接続

プロジェクトフォルダにできたVagrantfileを
下記の通り編集する。

Vagrantfile

# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "192.168.XXX.XXX" ← コメントアウトを解除する

ここまでがホスト(Windows)側の話。
以降はターミナルでssh接続して作業する。

 2.CentOS7の設定変更

 2-1. rootパスワードを変更

Vagrantで作成したOSのroot初期パスワードが
vagrant」と安易だったので、適当に変更。
(入力後、新規パスワードの入力が求められる)

#パスワード変更
passwd
2-2. firewalldの設定変更

ダウンロードしたboxは設定が切られていたため、
http通信を許可し、自動起動設定を行う。

#http通信許可
sudo firewall-cmd --add-service=http --permanent
#設定反映
sudo firewall-cmd --reload
#自動起動の設定
systemctl enable firewalld
 2-3. 時刻同期の設定

時刻同期がうまくいってなかったので、
Chronyをインストールして諸々設定。

#Chronyのインストール
sudo yum install -y chrony
#自動起動の設定
sudo systemctl enable chronyd
#タイムゾーンの設定
sudo timedatectl set-timezone Asia/Tokyo
#Chronyの強制反映
chronyc -a makestep

また、「/etc/chrony.conf」には下記を追加。

# Additional Setting
server ntp.nict.jp iburst
stratumweight 0

# Allow NTP client access from local network.
allow 192.168.0.0/16
: 

 

 3.PHP関連のパッケージ導入

3-1. PHPPHP-MYSQLのインストール

PHP-MySQLもまとめてインストール。

#インストール
sudo yum install php php-mysql
#バージョン確認
php -v
3-2. PHP-FPMのインストール

PHPFastCGI実装のひとつ。これがないと
NGINXがPHPを実行できません。
Apacheの場合は必要ないみたい。多分。)

#インストール
sudo yum -y install php-fpm
#バージョン確認
php -v
#自動起動の設定
sudo chkconfig php-fpm on

 

4.NGINX導入

4-1. NGINXのインストール

今回はApacheではなくNGINXを使用。
(NGINXの方が高速・軽量らしいので)

#インストール
sudo yum -y install nginx
#バージョン確認
nginx -v
#自動起動の設定
sudo systemctl enable nginx

なお、NGINXはyumに登録されている
バージョンが若干古く、最新の安定版を
取得したい場合は下記の記事を参考にどうぞ。

4-2. PHP-FPMの設定変更、再起動

他所のサイトでも散々書かれているが、
ApacheならWordPressの導入は割と
スンナリ行くが、NGINXの場合はファイル
「/etc/php-fpm.d/www.conf」の変更が必要。

user = apache
user = nginx

group = apache
group = nginx

変更後はPHP-FPMを再起動する。

#再起動
sudo systemctl restart php-fpm

 

5.MySQLの導入

5-1. MySQL-communityのインストール

MySQLWordPressで利用するには、まずは
MySQL-Communityをインストールする必要が
あるらしいので、とりあえずインストール。

#インストール
sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
5-2. MySQLのインストール

なお、MariaDBWordPressで使用できるが、
今回は慣れてるMySQLで。

#インストール
sudo yum -y install mysql-server
#バージョン確認
mysql --version
#自動起動の設定
sudo systemctl enable mysqld

 

6.WordPressの導入

6-1. WordPressのダウンロード

インターネット経由でダウンロードする。
場所はどこでもいいけど、今回は

/var/www

にダウンロードする。

#移動
cd /var/www
#ダウンロード
sudo wget https://ja.wordpress.org/latest-ja.tar.gz
#展開(「wordpressディレクトリが出来る)
sudo tar xzf latest-ja.tar.gz
#展開後、圧縮ファイルを削除
sudo rm latest-ja.tar.gz
#「wordpress」からリネームコピー
sudo cp -r wordpress test
#パーミッション変更
chmod 755 /var/www/test

これで、「/var/www/test」をWordPress
ルートディレクトリとして使用する土台ができた。

6-2. MYSQLWordPress用のDB作成

WordPressで使用するDBを作成する。
(rootユーザーでログインする)

#MySQLを管理者権限で起動
mysql -u root
mysql> --DB作成
mysql>
create database test;
mysql> --ユーザー作成
mysql>
grant all on test.* to user@localhost identified by 'password';
mysql> --MySQLを終了
mysql>
\q

2・3行目を実行して「Query OK, ~」的な
実行結果が表示されればOK。なお、

 test … DB名
 user … DBAユーザー
 password … DBAユーザーのパスワード

なので、各自変更されたし。

6-3. DBをWordPressへ登録

WordPressの初期ダウンロード状態に
「wp-config-sample.php」があるので、
それをコピーして「wp-config.php」を作成し、
下記の通り変更する。


// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'test'); /** MySQL データベースのユーザー名 */
define('DB_USER', 'user'); /** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password');
: :
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');

test、user、passwordには
「6-2. MYSQLWordPress用のDB作成」で
設定したものを入れる。
'put your unique phrase here'の箇所には
下記URLで生成された秘密鍵を設定する。

https://api.wordpress.org/secret-key/1.1/salt/

6-4. NGINXの設定ファイルの変更

Apacheの「.htaccess」を使い慣れている人も
多いと思うが、NGINXの場合は「/etc/nginx/nginx.conf」
がそれに該当する設定ファイルである。
下記の通り設定するとうまくいった。

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    root /var/www/test;
    index index.php;     # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    root /var/www/test;
    index index.php;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }

    error_page 404 /404.html;
    location = /40x.html {
        root /usr/share/nginx/html;
    }

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

 

7.ブラウザーからアクセス確認

散々つまづきまくりながら上記の設定を
行い、とりあえずはWordPressの初期画面に
辿り着くことが出来た。
時間にしておよそ5時間ほど。

f:id:hNeumann:20171105223737j:plain


あとはWordPressの初期設定からである。

ぶっちゃけ、Linuxの操作は慣れてるから
割とサクサクできたけど、WordPress
あまり触ったことがないので不安である。

とりあえず、プラグインで色々遊んで
徐々にWordPressに慣れていこうと思う。
早くAWSで運用したい…


~参考にさせていただいたサイト~