WordPress の導入と Node.js のインストールをする

唐突なのですがつい先程諸事情で別のサーバーをぶち壊しました.
今のPCをクリーンインストールする前は適切にdestroyせずにそのままフォルダごとrmするという
クソみたいなことをしたためにIPアドレスのブッキングがされたままという失態をしたので
今回はdestroyしてからVagrantfileを編集してやりましたよHAHAHA

では本題.

# 前回まで
1. [Vagrant に CentOS7 と nginx を入れて Transmit で接続する](https://qiita.com/Dal_/items/bf4fb85a4ea79e7fe8a3)
2. [nginx サーバーに PHP, MySQL を入れる](https://qiita.com/Dal_/items/5c937796f91dda9e63cd)

# 目的
前回入れられなかった Wordpress を入れて Node.js もいれて gulp を用いたテーマ開発ができるようにする.
なお今回 gulp の導入はしません.

# 手順 - 概略
1. WordPress をインストールし MySQL で WordPress の設定をする
2. Nodebrew をインストールし Node.js を入れる

## 1. WordPress をインストールし MySQL で WordPress の設定をする
公式がしっかりしているのでそれに準拠してやってもらえば確実です.
ちなみに今回はすべて　Teminal　上で終えたいために wget を用いていますが
ドットインストール様などで紹介されているようにパッケージを公式からダウンロードし
それを FTPツール でサーバーに移す方法でやってもらっても結構です.

``` terminal
$ mvserver
$ sudo yum install wget
$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz
$ sudo tar -xzvf latest-ja.tar.gz
```

これを書いているときの wget のインストール中なんか 7.3 kB/s とかそのくらいの速度を叩き出していましたが
速度によってはエラーを引き起こして完了できないので もしやる際はぜひ快適なネット環境下でやりましょう.
前回までの設定だと PHPの情報が表示されたままなので これをいじってあげます.

``` terminal
$ sudo vi /etc/nginx/conf.d/default.conf

location / {
    root   /usr/share/nginx/html/wordpress; // "/wordpress" を追加
    index  index.php;
#   index  index.html index.htm;
}

location ~ \.php$ {
#    root           html;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
     fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/wordpress/$fastcgi_script_name; // "/wordpress/" を追加
     include        fastcgi_params;
}

に編集


$ sudo systemctl restart nginx
```

<img width="801" alt="wordpress-start-install.png" src="https://qiita-image-store.s3.amazonaws.com/0/237236/93c6cfef-ed8f-f34d-11ed-09d6c9ad23b9.png">

この画面になればオッケーです.
では MySQL の設定をしていきましょう.

``` terminal
$ mysql -u root -p

mysql> create database (データベース名);
mysql> create user '(データベースのユーザー名)'@'localhost' identified by '(データベースのパスワード)';
mysql> grant all privileges on (データベース名).* to '(データベースのユーザー名)'@'localhost';
mysql> alter user '(データベースのユーザー名)'@'localhost' identified with mysql_native_password by '(データベースのパスワード)';
mysql> flush privileges;
mysql> exit
```

( )内の記述と 上の画像の記述とは対応関係が一致しています.
公式のドキュメントとは異なった作り方をしていますが 4行目と5行目の内容は
`mysql> GRANT ALL PRIVILEGES ON databasename.* TO "wordpressusername"@"hostname" IDENTIFIED BY "password";` と意味としては同じです. 多分.
5行目のは パスワードを native_password ってやつにしないと以前 wordpress さんに怒られたのでそれ以来記述しています.

これでデータベースの方は完成したので Wordpress の設定をしていきます.
wp-config.php を直接いじってもいいのですが とりあえず公式のスクリプトに従ってやってみましょう.

<img width="844" alt="wordpress-install-error.png" src="https://qiita-image-store.s3.amazonaws.com/0/237236/e99b3cfd-ab03-4f6b-748f-9a8fb8800cbf.png">

工ｴｴｪｪ(´д｀)ｪｪｴｴ工

パーミッションの問題な気がします.
`$ ls -la` で確認してみるとやっぱりそうですね.
パーミッションについて詳しいわけではないのですが Transmitなどではvagrantユーザーで接続していますし
サーバー自体はnginxなので 僕は所有者とグループをそれぞれnginxとvagrantにし
パーミッションを774にしています.
というわけでこんな感じ.

``` terminal
# $ pwd で /usr/share/nginx/html にいることを確認してください.

$ sudo chown -R nginx:vagrant wordpress
$ sudo chmod -R 774 wordpress
$ sudo systemctl restart nginx
```

これでもう一回やってみると……

<img width="844" alt="wordpress-install-error.png" src="https://qiita-image-store.s3.amazonaws.com/0/237236/d872577d-1da1-fcf2-b7bc-b2429d844e3c.png">

orz

だめだこりゃ (なお画像は使い回しです 手抜きです)
おとなしく wp-config.php を手動で作りましょう.
パーミッションは変えているので Transmit から wp-config-sample.php を複製してリネームして
スクリプトが提示してくれたテキストをコピーするっていう方法が楽だと思います.

~~~~~ 以下 Terminal で全部終えたいという方向け

``` terminal
$ cd wordpress
$ cp wp-config-sample.php wp-config.php
$ vi wp-config.php

# 日本語なので相当文字化けしています.
# よってここはエディタを使うほうがいいと思いますが意地でもという方は

:%d # vi のコマンドで全行削除です
# これをしてからテキストをコピーしてください.
```

なおこの問題について解決が可能な方はコメントくださると大変ありがたいです.

あとは Wordpressの指示に従ってください.


## 2. Nodebrew をインストールし Node.js を入れる

``` terminal
$ cd # 意味は多分ないです
$ sudo yum -y groupinstall 'Development tools'
$ curl -L git.io/nodebrew | perl - setup
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc
$ nodebrew install-binary latest
$ nodebrew list
$ nodebrew use (latest-ver) # nodebrew list で確認した最新のバージョンをお使いください.
```

2行目を実行するとなんかエラーっぽい
`There is no installed groups file.` っていうのが出てきますが
そのままインストールしてくれるので大丈夫です.

# 次回予告
次回予告というか書きたい記事についてですが
- gulp およびその周辺の Wordpressテーマ 作成の設定
- クリーンインストール後初期設定の備忘録
- Visual Studio Code の設定備忘録

とかですね.

# 参考文献・サイト・資料
今回の設定にあたっても多くのサイトや資料などを参考にさせていただきました.

Wordpressのインストールは主にここを中心に参考にしています. 公式様様です.
[WordPress のインストール - WordPress Codex 日本語版](https://wpdocs.osdn.jp/WordPress_%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

MySQLの設定に際してこちらの記事も大変参考になりました.
[MySQL 8.0 初期設定覚書](https://qiita.com/nobu-maple/items/3849b2161a21f90ae298)
なお今回はMySQL8を用いていますが 5.6 や 5.7 でも問題ないと思います.

Node.js およびそのパッケージマネージャの Nodebrew のインストールはこちらが参考になりました.
[NodeBrewインストール編](https://qiita.com/ebisennet/items/15c3c9fdb04e66db6323)

その他多数のサイトや資料などを参考にさせていただいております.
本当にありがとうございます.