今回はGCEインスタンスを2つ使用して、ワードプレスサイトを構築してみたいと思います。
1つはMySQL専用で、もう1つはWordPress専用のものとして構成します。
これらを内部IPで通信させて、無事ワードプレスが使えるようにすることを目標とします。
こちら記事内容は勉強目的が大きいので、参考にしていただく際には自己責任でお願いします。
※マーケットプレイスに公開されているテンプレートを使用したほうが早く・楽に作成できます。
GCEインスタンス作成
Compute Engine>VMインスタンス>インスタンスを作成を選択し、以下のインスタンスを立ち上げます。
MySQL用インスタンス
デフォルトから以下の部分を変更します。
- 名前をwp-mysqlにする
- マシンのシリーズをN1、マシンタイプをf1-microにする
- ブートディスクをUbuntu 18.04 LTS Minimalにする
gcloudコマンドを使う場合は以下のようにできると思います。
gcloud compute --project=<your-project-id> instances create wp-mysql \
--zone=us-central1-a \
--machine-type=f1-micro \
--subnet=default \
--image=ubuntu-minimal-1804-bionic-v20210827 \
--image-project=ubuntu-os-cloud \
--boot-disk-size=10GB \
--boot-disk-type=pd-balanced \
--boot-disk-device-name=wp-mysql
WordPress用インスタンス
デフォルトから以下の部分を変更します。
- 名前をwp-serverにする
- マシンのシリーズをN1、マシンタイプをf1-microにする
- ブートディスクをUbuntu 18.04 LTS Minimalにする
- ファイアウォールのHTTPトラフックを許可するにチェックを入れる
- ファイアウォールのHTTPSトラフックを許可するにチェックを入れる
gcloudコマンドを使う場合は以下のようにできると思います。
gcloud compute --project=<your-project-id> instances create wp-server \
--zone=us-central1-a \
--machine-type=f1-micro \
--subnet=default \
--tags=http-server,https-server \
--image=ubuntu-minimal-1804-bionic-v20210827 \
--image-project=ubuntu-os-cloud \
--boot-disk-size=10GB \
--boot-disk-type=pd-balanced \
--boot-disk-device-name=wp-server
MySQLインスタンスの設定
MySQLインスタンスにmysqlをインストールします。
Compute Engine>VMインスタンスのページで wp-mysqlインスタンスへのSSHを選択します。
mysql-serverのインストールを行います。
$ sudo apt-get update
$ sudo apt-get -y install mysql-server-5.7
基本的なセキュリティ設定をします。ここでは以下のようにしておきます。
$ sudo mysql_secure_installation
# Would you like to setup VALIDATE PASSWORD plugin?
# Press y|Y for Yes, any other key for No:
enter
# Please set the password for root here.
# パスワードを設定
# Remove anonymous users? (Press y|Y for Yes, any other key for No) :
Y
# Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
Y
# Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
Y
# Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
Y
/etc/mysql/mysql.conf.d/mysqld.cnfにある設定ファイルbind-addressという項目をwp-mysqlインスタンスの内部IPアドレスに置き換えます。
$ sudo apt-get -y install vim # viコマンドが使えない場合
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
# bind-address を wp-mysqlインスタンスの内部IPアドレスに置き換え
$ sudo service mysql restart
# mysqlに入れることを確認
$ sudo mysql -u root -p
ここで、wp-serverインスタンスの内部IPアドレスを調べておきます。
mysqlにユーザーを作成します。mysqlに入った状態にして以下を実行します。
mysql> CREATE USER 'user'@'<wp-serverの内部IP>' IDENTIFIED BY 'userpass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'<wp-serverの内部IP>' IDENTIFIED BY 'userpass';
mysqlにワードプレス用データベースを作成しておきます。
mysql> CREATE DATABASE wordpress;
ここまで来たらwp-mysqlインスタンスの外部IPは不要なので削除します。
Compute Engine>VMインスタンスのページで wp-mysqlインスタンスを選択します。編集をクリックし、以下の箇所を編集します。
- ネットワーク インターフェースの外部 IPをなしにする
WordPressインスタンスの設定
WordPressインスタンスにapacheとPHPとWordPressをインストールします。
Compute Engine>VMインスタンスのページで wp-serverインスタンスへのSSHを選択します。
apacheのインストール・起動を行います。
$ sudo apt-get update
$ sudo apt-get -y install apache2
$ sudo systemctl enable apache2
$ sudo systemctl start apache2
$ curl http://<wp-serverの外部IPアドレス>
# htmlが表示される
次にWordPressに必要なPHPのインストールを行います。
$ sudo apt-get -y install php7.2 php7.2-mysql
$ php -v
# バージョンが表示される
次にWordPress本体をインストールします。
$ cd /var/www/html
$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz
$ sudo tar xvf latest-ja.tar.gz
$ sudo chown -R www-data:www-data wordpress
$ sudo rm latest-ja.tar.gz
ここまできたらwp-serverインスタンスの外部IPアドレスにアクセスすることで、ワードプレスページを表示させることができます。
http://<wp-serverインスタンスの外部IP>/wordpress
ワードプレスの初期設定
http://<wp-serverインスタンスの外部IP>/wordpress
にアクセスすることで、以下のページが表示されます。「さあ、始めましょう!」を選択します。
データベース接続設定ページが出ますので、先程作成した、データベース名・ユーザー名・パスワード・MySQL用インスタンス名(wp-mysql)を入力します。
接続に成功すると、サイトの設定ページが出ますので、そちらを好みの設定にしましょう。
その後もう一度トップページ(http://<wp-serverインスタンスの外部IP>/wordpress)にアクセスすると、無事ページが表示されていました。
最後に
無事、2つのGCEインスタンスを利用してワードプレスを動かすことができました。
マーケットプレイスから導入した場合と比べて、設定することが多く大変だった印象でしたがカスタマイズしていくことは勉強になるかなとは思いました。
もし今後使うことがなければ、課金されないようにプロジェクトごと削除など使用しているリソースを削除しておくことを忘れないようにしましょう。