【2020年決定版】GCPでWordPressブログを無料運用する方法(通信編)

【2020年決定版】GCPでWordPressブログを無料運用する方法(通信編)

はじめに

当記事は【2020年決定版】GCPでWordPressブログを無料運用する方法(開設編)の続きです。
当記事では、独自ドメインの取得、独自ドメインとIPアドレスの紐づけ、安心安全な通信を行わせるためのSSL化を行います。
WordPressのアクセスをまだ完了していない方は開設編を参照してください。

【2020年決定版】GCPでWordPressブログを無料運用する方法(開設編)

独自ドメインの取得

独自ドメインとは

ブログを運用するにあたって必要なのは独自ドメインです。
独自ドメインがないと、開設編でアクセスしたようにIPアドレスを知っている人だけしかアクセスすることができません。
そのため、独自ドメインを取得する必要がありますが、基本的に有料です。
無料ドメインというものもありますが、信頼性、保守性から考えて有料ドメインを取得することをお勧めします。

無料で独自ドメインの取得サービス6選
https://ferret-plus.com/8797

有料ドメインでも年間数百円~数千円程度と非常に安いです。
このドメインの取得以外に費用がかかることはないため(初年度のみ)なるべく有料ドメインを取得しましょう。
ドメインの取得はGMOグループのお名前.comムームードメイン、もしくはGoogleが管理するGoogle Domainsがいいかと思います。
Google Domainsはお名前.comに比べて数百円程度高くつきますがGCP登録時に登録したクレジットカードがそのまま使用できる、天下のGoogleが管理するというメリットがあります。
私はGoogle Domainsで取得しましたが、どの管理会社で取得しても問題なく設定できるのでコストを抑えたい人はお名前.comをおすすめします。
〇〇.workや〇〇.xyzなど〇〇.comにこだわなければ数円で取得できるドメインもあります↓


Google Domains

以降はGoogle Domainsでのドメイン取得・設定を行います。
お名前.comでのドメイン取得・設定は下記サイト(外部サイト)がわかりやすいです。
GCPとWordPressを使って独自ドメインブログを無料で運営してみよう!「5.ブログのドメイン登録(お名前.com)」
GCE(Google Compute Engine)で独自ドメインを設定する

まずはGoogle Domainsにアクセスします。
そして、検索窓に取得したドメインの文字列を入力します(例えば、hogehoge.comを取得したいならhogehogeと入力する)。
本ブログサイトのドメインtemplepmetと入力した場合が下の画像です。

templepmet.comは本ブログサイトのドメインとして使用されているため、取得することができません。
緑色のチェックマークが表示されている末尾のドメインは取得することができます。
ブログの定番ドメインは.comや.netです。
.comは競争率が高いため簡単な文字列だと取得できない場合が高いです。
自分の納得のいくドメインを選択し購入してください。

ドメインとIPアドレスの紐づけ

外部IPアドレスを静的に変更

まずはじめにGCPのナビゲーションメニューからネットワーキング→VPCネットワーク→外部IPアドレスを開きます。
そこで「エフェメラル」と書かれている部分を選択し「静的」に変更します。

エフェメラルとは短命なという意味で、IPアドレスが勝手に変わる場合があります。
エフェメラルのままドメインと紐づけするとドメインでアクセスした際に元のIPアドレスが変わっていると正しくアクセスすることができません。
したがって、IPアドレスを勝手に変えられないように静的に変更します。


すると名前を聞かれますが適当に名付けてください。


静的に変更できていることを確認してください。
そして、外部アドレスに表示されているIPアドレスをコピーしてください(後で貼り付けます)。

DNSゾーンの作成

ナビゲーションメニューからネットワーキング→ネットワークサービス→Cloud DNSを開いてください。
そこからゾーンを作成をクリックしてください。

下の画像のように設定してください。

次にレコードセットを追加してください。

ドメイン側の設定

Google Domainsにアクセスし、
そこで、カスタムネームサーバーを使用するにチェックし、レコードセットを追加したページに書かれたネームサーバーと同じものを設定してください。
(レコードセットを追加したページを閉じた方はCloud DNSから作成したゾーン名をクリックすると開けます。)


完了したら保存して、取得したドメイン名でアクセスできることを確認してください。
DNSの反映に時間がかかる場合があります。

Advertisement

SSL化

証明書の発行

SSL証明書を取得するソフトウェアCertBotをインストールします。
GCPのナビゲーションメニュー→Compute Engineを開きSSHと書かれた部分をクリックします。
これにより作成したインタンスにSSH接続することができます。

コンソールが立ち上がったら以下のコマンドをコピペして実行します。

 wget https://dl.eff.org/certbot-auto && chmod a+x certbot-auto


次にSSL証明書を作成します。

 ./certbot-auto certonly --webroot -w /var/www/html/ -d 各自取得したドメイン

実行中にDo you want to continue? [Y/n]と聞かれたらyを入力しエンターを押してください。
Enter email addressと聞かれたらメールアドレスを入力。
(A)greeと聞かれたらaを入力。
Would you …と聞かれたらnを入力。
下の画像のように出力されたらOKです。

証明書の設定

以下のコマンドを実行してdefault-ssl.confファイルを編集します。

 sudo nano /etc/apache2/sites-available/default-ssl.conf 

ファイルの上部ServerAdmin…とDocumentRootの間に下記を追記してください。
※CTRL+Vで通常通り貼り付けできます。

<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>


そしてファイルを下に下がってSSLCertificateFileと書かれた行・SSLCertificateKeyFileと書かれた行をコメントアウトして下記のコードを追記してください。

SSLCertificateFile "/etc/letsencrypt/live/各自取得したドメイン/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/各自取得したドメイン/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/各自取得したドメイン/chain.pem"


編集後CTRL+X→yを入力後エンターすると保存されます。

Advertisement

証明書の自動更新設定

CertbotによるLet’s Encrypt証明書は3か月で有効期限が切れてしまいます。
したがって、証明書を自動で更新するように設定します。
まず、下記コマンドでcertbotパッケージを/etc/letsencryptに移動します。

sudo mv certbot-auto /etc/letsencrypt/

次に、定期的なジョブを定義するためのファイルcrontabに下記コマンドで記述します。

sudo crontab -e

Choose 1-3 [1]:と聞かれたらエンターを入力してください。
ファイルの末尾に下記内容を張り付けてCTRL+X→y→エンターで保存してください。

45 2 * * 6 cd /etc/letsencrypt/ && ./certbot-auto renew && /etc/init.d/apache2 restart


これでSSL証明書が期限切れになると自動で更新してくれるようになります。

HTTPからHTTPSへリダイレクト設定

次に下記コマンドでwordpress.confファイルを編集します。

sudo nano /etc/apache2/sites-available/wordpress.conf

そしてファイルの中身をすべて消去し、下記内容をコピペしてCTRL+X→y→エンターで保存してください。

※各自取得したドメインの部分をそのままコピペしないように注意してください

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

ServerName 各自取得したドメイン
ServerAlias 各自取得したドメイン
# Redirect permanent / https://各自取得したドメイン/
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> 

 

最後に証明書の設定を有効化し、Apacheサーバーを再起動します。

下記コマンドを順に実行してください。

sudo a2ensite default-ssl
sudo a2enmod ssl
sudo service apache2 restart
Advertisement

HTTPS接続の確認

WordPressにアクセスします。
ログイン後、SettingsからWordPress AddressとSite Addressを各自取得したドメインに変更してください。
httpからhttpsに変更するのもお忘れなく。

変更後、下部のSave Changesをクリックして保存するとHTTPSで接続されるようになります。

ログアウト後再度アクセスしHTTPS接続されていることが確認できれば完了です。
鍵マークが閉じていて、鍵マークをクリック後接続が保護されていることまで確認してください(画像はGoogle Chromeです)。

さいごに

これで通信編は以上です。お疲れさまでした。
これだけでWordPressブログを運用することができます。
WordPressについてご存じの方はここまでで終了です。
基本的な設定は以上で終わりですが、次回はWordPressの設定を行います。
私のおすすめのWordPressの設定を紹介するのでぜひ参考にしてください。