#本記事は、copilotで下書を書いています。
#terraformでの構築部分はこちらの記事を参考にして実施いたしました.。
https://qiita.com/koseiinfratop/items/a307393ed74dca01ab86
はじめに
今回はTerraformを使用してAWS環境上にWordPressサイトを構築し、SSLでセキュリティを強化する方法を紹介します。Terraformはインフラストラクチャーのコード化を可能にし、繰り返し可能な方法でサーバーをデプロイすることができます。
1章:Terraformファイル準備
まず、AWSのようなクラウドプロバイダーで使用するためのTerraformファイルを準備します。これには、ネットワーク設定、サーバーインスタンス、データベース、その他必要なリソースの定義が含まれます。
今回用意したファイルは下記の9つです。
上4つがterraformの設定ファイルで、残りがwordpressを構築するための設定ファイルです。各ファイルの内容と説明はページ下部に記載しております。
ファイル名 | 説明 |
---|---|
main.tf | Terraformの設定ファイル |
terraform.tfstate | インフラストラクチャの状態ファイル |
terraform.tfvars | 変数定義ファイル |
variable.tf | 変数宣言ファイル |
wordpress_config.sh | WordPressの設定スクリプト |
init.sh | 初期設定スクリプト |
nginx_config.sh | Nginx設定スクリプト |
nginx_default | Nginxのデフォルト設定ファイル |
prepareWordPress.sql | WordPressのデータベース設定スクリプト |
cloud9の環境に「handson」のフォルダを作成し各ファイルを配置
2章:実行
下記3つのコマンドを実行することで、Terraformはmain.tfに記述された設定に基づいて、WordPressのインフラストラクチャを構築します。また、他のスクリプト(init.sh、nginx_config.sh、wordpress_config.shなど)は、必要なソフトウェアのインストールや設定を行います
terraform fmt
このコマンドは、Terraform設定ファイル(main.tfなど)を整形します。これにより、コードが読みやすくなり、潜在的なエラーが見つけやすくなります。
terraform plan
このコマンドは、Terraformが行う予定の操作を表示します。これにより、何が作成、更新、または削除されるかを確認できます。これは、意図しない変更を適用する前に、設定が期待通りであることを確認するためのステップです。
terraform apply
最後に、このコマンドは実際にリソースを作成、更新、または削除します。terraform planで表示された操作が期待通りであることを確認した後に、このコマンドを実行します。
3章:WordPress初期設定
今回の設定だとwordpressのサーバーのIPが可変なので
固定IPへの紐づけ、およびドメインの取得を行います。
その後Route53でドメイン経由でのアクセスができるようにいたします。
下記のサイトを参考に実施いたしました
4章:SSL化
今回はReally Simple SSLというwordpressのプラグインをインストールしてSSL化を行いました
3章同様に下記サイトを参考にしましたが、躓いた点などを記載いたします。
1:管理コンソールへのログイン時に、クッキーが効かずログインできない。
→この場合、/var/www/html/wordpress/wp-config.php
に下記を追記して、
wordpressのEC2インスタンスのIPと揃えることにより、ログインができました。
/* Add any custom values between this line and the "stop editing" line. */
define('RELOCATE',true);
define('WP_HOME','http://XX.XX.XX.XX/wordpress');
define('WP_SITEURL','http://XX.XX.XX.XX/wordpress');
2:SSL有効化後wp-config.php
が編集できずに、プラグイン「Really Simple SSL」でエラーが発生。
下記コード内容をwp-config.php
へ追記
define('RELOCATE',true);
define('WP_HOME','http://tech-hobby1.com/wordpress');
define('WP_SITEURL','http://tech-hobby1.com/wordpress');
$_SERVER['HTTPS']='on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
3:「Really Simple SSL」でのセキュリティチェックにて警告が発生。
下記コード内容をwp-config.php
へ追記
//Begin Really Simple SSL session cookie settings
@ini_set('session.cookie_httponly', true);
@ini_set('session.cookie_secure', true);
@ini_set('session.use_only_cookies', true);
//END Really Simple SSL cookie settings
おわりに:
下記画面ショットのようにwordpressのサイトをterrafrmで構築し、SSL化をすることができました。
Terraformを使用することで、WordPressサイトの構築とSSL化を効率的かつ安全に行うことができます。このガイドが皆さんのプロジェクトに役立つことを願っています。どうぞ実践してみてください。