Google Compute EngineとCloudflareを利用してWordPressを無料で運用
はじめに
これまではAWS LightsailでWordPressを運用してきましたが、GCP Compute Engineの無料枠を利用して運用できないかと考えて試すことにしました。
Google Compute Engine
インスタンスを作成
- マシンの構成
- マシンタイプは
e2-micro
にします。
- マシンタイプは
- ブートディスク
-
標準永続ディスク
を選択します。OSはDebian 11を選択しました。
-
- ファイアウォール
-
HTTP トラフィックを許可する
とHTTPS トラフィックを許可する
を有効にします。
-
- ネットワークインターフェース
- 外部IPv4アドレスで固定IPを設定します。
インスタンスを削除する際の注意
Apache
ApacheとPHPのインストール
sudo apt install apache2 libapache2-mod-php php php-fpm php-common \
php-mysql php-gmp php-curl php-intl php-mbstring php-xmlrpc php-gd \
php-imagick php-xml php-cli php-zip
VirtualHostの設定
<VirtualHost *:80>
ServerName wordpress.example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/wordpress
ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log
CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined
<Directory /var/www/wordpress>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
sudo a2ensite wordpress
sudo systemctl reload apache2
DNSの設定
DNSでServerName
で指定したドメインとIPアドレスの対応を設定すると、Webサーバにアクセスできるようになります。
この時点ではCloudflareのDNSではプロキシを無効にしておきます。
SSL証明書をLet's Encryptで設定
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
質問に回答していくとSSL証明書が設定され、HTTPSでアクセスできるようになりました。
SSL証明書の自動更新を設定
まずは実際の証明書を更新しないでテストをします。
sudo certbot renew --dry-run
テストが正常に実行できたらcronを設定します。必要に応じてselect-editor
を実行してエディタを選択しておきます。
select-editor
crontab -e
12 4 1,15 * * sudo certbot renew
certbot
コマンドについては以下の記事を参考にしました。
MariaDB
MariaDBのインストール
MariaDBをインストールして、自動的に起動するようにします。
sudo apt install mariadb-server mariadb-client
sudo systemctl start mariadb
sudo systemctl enable mariadb
ユーザーとデータベースの作成
mysql_secure_installation
を実行してセットアップをします。
sudo mysql_secure_installation
WordPressのためのデータベースとユーザーを作成します。
mysql -u root -p
CREATE DATABASE wordpress;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'Passw0rd';
GRANT ALL ON wordpress.* TO 'wp_user'@'localhost' WITH GRANT OPTION;
WordPress
WordPressのインストール
wget https://wordpress.org/latest.tar.gz
tar xvzf latest.tar.gz
sudo mv wordpress /var/www/html/wordpress
sudo chown -R www-data:www-data /var/www/html/wordpress/
WebブラウザーでWordPressのセットアップをします。
CloudflareのWordPressプラグイン
CloudflareのWordPressプラグインをインストールします。
Auto Purge Content On Update
を有効にしました。
Cloudflareの設定
ページルールの設定
以下の記事を参考にしてページルールを設定しました。
リダイレクトループが発生したので、以下のドキュメントを参照してSSL: フル
を追加しました。
設定したページルールは以下になります。
- HOST/wp-admin/*
- SSL: フル
- キャッシュ レベル: スキップ
- パフォーマンスを無効にする
- HOST/&preview=true
- SSL: フル
- キャッシュ レベル: スキップ
- アプリを無効にする
- HOST/*
- SSL: フル
- キャッシュ レベル: Cache Everything
- エッジ キャッシュ TTL: 2時間
DNSの設定
DNSのプロキシを有効にします。
動作確認のため、Apacheを一時的に停止させてもWebサイトが配信されるか確認します。
おわりに
WordPressでWebサイトを運用しているとサーバーへの負荷が課題となる場合があります。私の場合はアクセスが集中しそうなWebサイトにWordPressを利用することは避けてきましたが、CDNを利用することでWordPressを活用できる場合もあるかと期待しています。
CDNを利用することでWebサイトも高速化していると期待してましたが、私の場合は速度はあまり変化がなかったです。
このあたりは、ひとつひとつ地道に改善させていく必要がありそうです。
Discussion