ブログ移住計画その6~AWSにWordPressをデプロイ~
やっと、AWSの環境にWordPressをデプロイしました。
いや、Ansibleをそのまま叩いて終わればよかったんですけどね。。。
ちなみに最終段階のAnsibleのディレクトリはこんな感じ。
. ├── ansible.cfg ├── group_vars/ │ └── all.yml ├── inventory/ │ └── hosts ├── playbook.yml ├── roles/ │ ├── httpd/ │ │ ├── handlers/ │ │ │ └── main.yml │ │ └── tasks/ │ │ └── main.yml │ ├── mysql/ │ │ ├── handlers/ │ │ │ └── main.yml │ │ └── tasks/ │ │ └── main.yml │ ├── php/ │ │ └── tasks/ │ │ └── main.yml │ ├── wordpress/ │ │ ├── tasks/ │ │ │ └── main.yml │ │ └── templates/ │ │ ├── .htaccess.j2 │ │ ├── .htaccess.root.j2 │ │ ├── .htpasswd.j2 │ │ └── index.php.j2 │ └── wp-cli/ │ ├── tasks/ │ │ └── main.yml │ └── templates/ │ └── wp-config.php.j2 └── ssh_config
踏み台経由でAWSの環境にアクセスする
Ansibleを直接サーバに実行せず、踏み台経由で実行する場合は設定が必要。
なので、まずホストの情報を記述してみました。
# ssh_config Host wp-bustion HostName <踏み台サーバIP> User centos Port <SSHポート> GatewayPorts yes IdentityFile <認証用暗号化鍵> Host wordpress HostName <WordPressサーバIP> User centos Port 22 GatewayPorts yes ProxyCommand ssh -F ssh_config -CW %h:%p wp-bustion IdentityFile <認証用暗号化鍵> Host wp-mysql HostName <MySQLサーバIP> User centos Port 22 GatewayPorts yes ProxyCommand ssh -F ssh_config -CW %h:%p wp-bustion IdentityFile <認証用暗号化鍵>
あとansible.cfgファイルで、playbook実行時にssh_configファイルを読ませるようにする。
[ssh_connection] control_path = %(directory)s/%%h-%%r ssh_args = -o ControlMaster=auto -o ControlPersist=60s -F ssh_config
最後に、Ansibleの実行対象を指定するサーバの指定を、ssh_configで設定しているHost名に変更しておく。
# inventory/hosts [wp] wordpress [mysql] wp-mysql
あとは素直に実行
ansible-playbook -i inventory/hosts playbook.yml
これで無事にデプロイ!と思ってました...
問題1: データベース接続確立エラーが発生
DB側の設定は完全にあっているのに、接続できないというエラーにドハマリ。
ひたすら調べていくと、SELinuxが原因とわかり、一部設定を変更した。
sudo setsebool -P httpd_can_network_connect_db 1 sudo systemctl restart httpd
問題2: .htaccessの設定が効かない
アクセス制御やリダイレクト制御を.htaccessに記述していたものの、設定が反映されるハマる。
しらべてみると、
<Directory "/var/www/html"> ・ ・ AllowOverride None ・ ・ </DIrectory>
の、NoneをAllに変える必要があるらしく、設定したら反映された。
WordPressをHTTPSにする
ここで作った証明書を反映させる。
ssl.csr、ssl.crt、ssl.keyを/etc/httpd/confに移動。
ssl.crtに2つファイルを作成して、証明書と中間証明書を作成
# hogehoge.com.2018.crtとしておく <メールできた証明書をそのままコピー> -----BEGIN CERTIFICATE----- ・ ・ ・ -----END CERTIFICATE-----
# intermediate_hogehoge.com.2018.crtとしておく <中間証明書をコピー> -----BEGIN CERTIFICATE----- ・ ・ ・ -----END CERTIFICATE-----
権限を変えておく
sudo chmod 600 hogehoge.com.2018.crt
ssl.confに設定ファイルを知らせる
# /etc/httpd/conf.f/ssl.conf SSLCertificateFile /etc/httpd/conf/ssl.crt/hogehoge.com.2018.crt ・ ・ SSLCertificateKeyFile /etc/httpd/conf/ssl.key/hogehoge.com.2018.key ・ ・ SSLCertificateChainFile /etc/httpd/conf/ssl.crt/intermidiate_hogehoge.com.2018.crt
これでhttpdを再起動するとSSLのパスフレーズが聞かれるはず。
WordPress側のSSL設定
WordPressの管理者画面にログインし、一般でサイトのアドレスをhttpからhttpsに変更する。
これで、ドメイン名で開くと、、、
はあ、終わった。
あとはプラグインとかいろいろと調整して、今週末には移行予定。
あとやりたいことは、
と思ってますー。