ぴよっ子エンジニアの日記

IT技術のアウトプット、Webページ作成の経過を綴ります

yps1 task4まとめ

task4の手順をまとめました。


文字数が5000をこえてしまいました。
ブログ書いてる人が勝手に必要以上に付け足しているところは
青文字で記載しているので、不要な方は青文字は飛ばして下さい 。

■ 事前準備

・yps1 task1〜3の実施

github.com

・ターミナルでCentOSにログイン

 

■ 本日のゴール

ターミナルを用いてWordPressをダウンロードしログイン、テーマの反映まで行う

f:id:macyosuke:20200810135507p:plain

※上記のテーマは「Biz Ezone」

 

■ 概要

【1】ターミナルからEC2にログイン
【2】WordPressダウンロード
【3】WordPressディレクトリの移動
【4】DB作成及びDB関連権限付与
【5】WordPress設定ファイル編集
【6】アクセス権(パーミッション)設定
【7】Webサーバ設定ファイル(.htaccess)の編集
【8】default.confの編集
【9】WordPressインストール画面の表示確認
【10】WordPressログイン
【11】WordPressダッシュボード表示確認
【12】SSH SFTP Updater Supportの導入及び更新可能プラグインの更新
【13】権限変更
【14】テーマ反映
【追加課題】※追加課題のリンクは貼っていますが8/10時点で未実施です
【Laravelへの戻しについて】 
【おまけ】
 

■ 手順

【1】ターミナルからEC2にログイン

ターミナルからEC2にログインする。

 

【2】WordPressのダウンロード

cd /tmp
wget https://ja.wordpress.org/latest-ja.zip
unzip ./latest-ja.zip
wget は、指定したURLのファイルをダウンロードするコマンド

 

【3】 WordPressディレクトリの移動

WordPressをダウンロードするとwordpressというディレクトリが出来上がるので、移動する。

mv wordpress wwpp
mv wwpp /var/www/html/

◇ 補足
調べたところによると、WordPressをインストールするためには、WordPressファイルをドキュメントルート(=Webサーバ上に公開するための一番初めのディレクトリ)に移動する必要があるらしく、そのために行っているコマンドです。 
なぜ名前をwwppにしているのかについて、推測ではありますが、
そもそもの前提として後続の手順で変更するWordPressが持つDBのテーブルの接頭辞がデフォルトだとwp_になっていて、これがWordPressを知っている人であれば簡単に推測ができ、攻撃を受けやすくなるとのことで(wpl_も同様)セキュリティ上変更することが推奨されているようで、変更する名前と合わせたかったからというのが前提にあるのと、「wordpress」だと名前が長いから分かりにくいと言うのがあるのかなと思います。 

 

【4】DB作成及びDB関連権限付与

mysqlにログインしデータベースを作り権限付与する。

mysql -u root -p
create database wwppdb;
grant all on wwppdb.* to wwppuser@localhost identified by '任意のパスワード';
exit;

◇ 補足

上記で付与した権限「all」について、権限を付与する権限(=GRANT OPTION)以外の権限を表すため、これでユーザ「wwppuser」はwwppdb内の全てのテーブルで権限を付与すること以外は出来るようになった。
また、本コマンドではユーザの作成も兼ねているようです。

 

【5】WordPress設定ファイル編集

cd /var/www/html/wwpp/
cp -p wp-config-sample.php wp-config.php
vi wp-config.php

○ 設定内容

https://github.com/yotaro-ok/yps/issues/12#issuecomment-671045833
DB_NAME:wwppdb
DB_USER:wwppuser
DB_PASSWORD:設定したパスワード
table_prefix:wwpp_
※ シングルクォート、セミコロンは記載省略しています

◇ 補足

公式サイトによると、ダウンロード直後のWordPressにはwp-config.phpファイルは含まれず、wp-config.phpの生成方法として、
下記2種類の方法があるとのこと。今回は前者の方法。

  • wp-config-sample.phpを編集し、wp-config.phpという名前で手動作成
  • WordPressをセットアップする過程で入力された情報をもとに生成

ちなみに、今回修正した設定ファイルは決められた順序で書かれているので、ファイルの内容の順序を変更するとサイトにエラーが発生する場合があるとのことで注意が必要そうです。

 

【6】アクセス権(パーミッション)設定

cd /var/www/html
sudo chown -R centos:nginx /var/www/html/wwpp/
→ /var/www/html/wwwディレクトリ以下のファイル/ディレクトリを全てcentosユーザ、nginxグループのものにする)

sudo find /var/www/html/wwpp/ -type f -exec chmod 664 {} \;
→ /var/www/html/wwppディレクトリ以下のファイルを664に変更

sudo find /var/www/html/wwpp/ -type d -exec chmod 775 {} \;
→ /var/www/html/wwppディレクトリ以下のディレクトリを775に変更

◇ 補足

パーミッションを整理してみる
664と775について、1桁目=所有者、2桁目=グループ、3桁目=その他で、
rが読み出しで数値が4
wが書き出しで数値が2
xが実行可能で数値が1
-が許可なし
で、3桁それぞれがそれらの合計値を足したものになるので・・・

○ /var/www/html/wwpp/配下のファイル

所有者・・・読み書き可
グループ・・・読み書き可
その他・・・読み出しのみ可 

○ /var/www/html/wwpp/配下のディレクト

所有者・・・全て(読み書き実行)可
グループ・・・全て(読み書き実行)可
その他・・・読み出しと実行のみ可

になる。下記添付の通り。

f:id:macyosuke:20200810173231p:plain

※ 上記に記載の「centos」が所有者、「nginx」がグループになる

ちなみにcentosが属するグループを見てみたらnginxじゃなくてcentos adm wheel systemd-journalだった。

f:id:macyosuke:20200810175128p:plain

これがnginxと繋がっているのか・・?これ以上調べるとハマりそうなので、特に今のところ問題は起きていないので備忘録としてここに残しておくにとどめます。

○ コマンド 

chown・・・所有者を変更する
chown -R・・・再起的(ディレクトリ内に存在するもの一つ一つに対して処理)に所有者を変更する
-type f・・・ファイルを対象とする
-type d・・・ディレクトリを対象とする
-exec・・・見つかったファイルやディレクトリに対してコマンドを実行
{}・・・findでマッチしたファイル、ディレクト
¥;・・・最後の;はexecで指定したコマンドの終わりを示しており、¥は;をエスケープするためのもの(恐らくエスケープしないとどこが終わりかわからなくなってエラーになるとかそう言う感じだと思う)

 

【7】Webサーバ設定ファイル(.htaccess)の編集

cd wwpp
vi .htaccess
<files wp-config.php>
order allow,deny
deny from all
</files>
vi抜けて
sudo chmod 606 .htaccess

やってることは、(データベースのログイン情報など重要な情報が含まれている)wp-config.phpのファイルに第3者がアクセスできないようにしている
いくつか記事を読んでいると、Nginxでは.htaccessが利用できないというのをみたけど、でも動いてるけどどういう仕組みなんだろ?
一旦気にしないでおこうと思います。

◇ 補足
order・・・アクセス制限の許可と拒否の順番を設定するもの。
order allow,denyだと許可してから拒否
order deny,allowだと拒否してから許可
→ ちょっとピンとこなかったけど、つまり全部拒否してるよ・・ってことっすかね・・
第3者からのアクセス不可にしているということはわかりました。

 

【8】default.confの編集

sudo vi /etc/nginx/conf.d/default.conf
root 〜は全て下記にする
root /var/www/html/wwpp;
下記を追記する
location /wp-config.php {
  deny all;
}

再起動する
sudo systemctl restart php-fpm
sudo systemctl restart ngin

 

【9】WordPressインストール画面の表示確認

URLにEC2のアドレスを入力し、下記の画面が表示されることを確認

f:id:macyosuke:20200810191924p:plain

表示が確認できたら、「検索エンジンがサイトをインデックスしないようにする」にチェックを入れ、

f:id:macyosuke:20200809215527p:plain
画面下の「WordPressをインストール」ボタンを押下

 

【10】WordPressログイン

ログインボタンを押下

f:id:macyosuke:20200810184430p:plain

ユーザ名、パスワードを入力しログインボタンを押下

f:id:macyosuke:20200809215821p:plain

 

【11】WordPressダッシュボード表示確認

以下の通りダッシュボードが表示されることを確認

f:id:macyosuke:20200809220203p:plain

 

【12】SSH SFTP Updater Supportの導入及び更新可能プラグインの更新

更新可能なプラグインがあるが、AWSのEC2にWordPressをインストールして、WordPressの管理画面からプラグイン等をインストールする際、デフォルトのままだとFTP接続でエラーになるとのこと(yotaroさんもFTPポート空いていないからどうするって言ってたけど、それが原因っぽい)
なのでSFTP(SSHFTPを組み合わせたようなやつ、厳密にはいろいろ違うっぽい)で接続出来るようにする。
cd wp-content/plugins/
wget https://downloads.wordpress.org/plugin/ssh-sftp-updater-support.0.8.2.zip
unzip ./ssh-sftp-updater-support.0.8.2.zip
rm ./ssh-sftp-updater-support.0.8.2.zip
sudo chown -R centos:nginx ./ssh-sftp-updater-support/

上記が終わったら、WordPressの画面に戻り、プラグインのところにあるSSH SFTP Updater Supportを有効化する

f:id:macyosuke:20200809221652p:plain

有効化したら、SSH SFTP Updater Supportの下のプラグインを選択

f:id:macyosuke:20200809221753p:plain

SSH SFTP Updater Supportの下に無効化と出ている状態=有効化になっているということになります。

プラグインを更新してみる

f:id:macyosuke:20200809225121p:plain

接続情報を入力

f:id:macyosuke:20200809225845p:plain

【ホスト名】ホスト名:ポート番号の形式で入力

FTP/SSHユーザ名】centos

FTP/SSHパスワード】centosのパスワード

【Copy / Paste Private Key】XXX.pemファイルを選択 

f:id:macyosuke:20200810192940p:plain

SSH SFTP Updater Supportを導入するとSSH2の選択肢が増えているはずなので、SSH2を選択し開始を押下 

 

【13】権限変更

cd /var/www/html/wwpp/
sudo chmod 664 wp-config.php

 

【14】テーマ反映

外観 → 新しいテーマを追加→インストール→有効化

f:id:macyosuke:20200810215740p:plain

テーマを検索にartworkと入れてみる

f:id:macyosuke:20200810215905p:plain

気になるテーマをマウスオーバーする

f:id:macyosuke:20200810215942p:plain

インストールを押すとインストールが始まる。インストールが終わるとこのような状態になるので有効化を押す

f:id:macyosuke:20200810221629p:plain

最後に、画面左上のサイト名をクリックしたら設定したテーマが表示されます。

f:id:macyosuke:20200810222408p:plain

 ※上記のテーマは「Artwork Lite」

テーマを追加したら、追加したテーマとともに#yps1 #task4のハッシュタグをつけてツイートしてみましょうw 

 

【追加課題】

 

【Laravelへの戻しについて】

Laravelに戻すときは、default.confのパスを
root /var/www/html/wwpp;にしたところを、全て
root /var/www/html/yps/public;に戻し、再起動をしたらOKです。
sudo vi /etc/nginx/conf.d/default.conf
sudo systemctl restart php-fpm
sudo systemctl restart ngin

 

【おまけ】

① ログ出力確認

下記コマンドを入力し、ログの出力を確認する

sudo tail /var/log/php-fpm/error.log
sudo tail /var/log/php_errors.log 
sudo tail /var/log/nginx/error.log
sudo tail /var/log/nginx/access.log
sudo tail /var/log/mysqld.log
sudo tail /var/www/html/yps/storage/logs/laravel.log

※ ファイルの中身がそもそもなくて出力が確認出来なかったり、ファイルがそもそもなかったりする場合は、試しに中身を追記してみたり、ファイルを作成してみたりすると良いと思います。

 

② セキュリティ対策についてはこちら

baigie.me

【備忘録】

 

おわり