🦆

Google Compute EngineとCloudflareを利用してWordPressを無料で運用

2023/09/02に公開

はじめに

これまではAWS LightsailでWordPressを運用してきましたが、GCP Compute Engineの無料枠を利用して運用できないかと考えて試すことにしました。

Google Compute Engine

インスタンスを作成

https://cloud.google.com/free/docs/free-cloud-features?hl=ja#compute

https://zenn.dev/taksas/articles/1f8e0f3676628d

  • マシンの構成
    • マシンタイプはe2-microにします。
  • ブートディスク
    • 標準永続ディスクを選択します。OSはDebian 11を選択しました。
  • ファイアウォール
    • HTTP トラフィックを許可するHTTPS トラフィックを許可するを有効にします。
  • ネットワークインターフェース
    • 外部IPv4アドレスで固定IPを設定します。

インスタンスを削除する際の注意

Apache

https://computingforgeeks.com/install-wordpress-on-debian-with-apache-and-letsencrypt/

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の設定

/etc/apache2/sites-available/wordpress.conf
<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証明書の自動更新を設定

https://it-jog.com/khow/serv/renewletsencrypt

まずは実際の証明書を更新しないでテストをします。

sudo certbot renew --dry-run

テストが正常に実行できたらcronを設定します。必要に応じてselect-editorを実行してエディタを選択しておきます。

select-editor
crontab -e
12 4 1,15 * * sudo certbot renew

certbotコマンドについては以下の記事を参考にしました。

https://qiita.com/s-katsumata/items/629222b24113d7a49b79

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プラグインをインストールします。

https://www.cloudflare.com/ja-jp/integrations/wordpress/

Auto Purge Content On Updateを有効にしました。

Cloudflareの設定

ページルールの設定

以下の記事を参考にしてページルールを設定しました。

https://webgaku.net/jp/wordpress/cloudflare-page-rules/

リダイレクトループが発生したので、以下のドキュメントを参照してSSL: フルを追加しました。

https://developers.cloudflare.com/ssl/troubleshooting/too-many-redirects/

設定したページルールは以下になります。

  1. HOST/wp-admin/*
  • SSL: フル
  • キャッシュ レベル: スキップ
  • パフォーマンスを無効にする
  1. HOST/&preview=true
  • SSL: フル
  • キャッシュ レベル: スキップ
  • アプリを無効にする
  1. HOST/*
  • SSL: フル
  • キャッシュ レベル: Cache Everything
  • エッジ キャッシュ TTL: 2時間

DNSの設定

DNSのプロキシを有効にします。

動作確認のため、Apacheを一時的に停止させてもWebサイトが配信されるか確認します。

おわりに

WordPressでWebサイトを運用しているとサーバーへの負荷が課題となる場合があります。私の場合はアクセスが集中しそうなWebサイトにWordPressを利用することは避けてきましたが、CDNを利用することでWordPressを活用できる場合もあるかと期待しています。

CDNを利用することでWebサイトも高速化していると期待してましたが、私の場合は速度はあまり変化がなかったです。

https://pagespeed.web.dev/

このあたりは、ひとつひとつ地道に改善させていく必要がありそうです。

Discussion