本文へスキップ
← ガイド一覧

WordPressでブログ・ホームページを作る (Docker)

WordPress(ワードプレス)は、コーディングなしでブログやホームページを作れるプログラムです。Docker ComposeでWordPressとDBを一度に立ち上げ、ドメインとHTTPSまで接続する方法です。

準備するもの

1. 設定ファイルを作る

mkdir ~/wordpress && cd ~/wordpress
nano compose.yaml

次の内容を貼り付け、2つのパスワードをそれぞれ長く複雑な値に変更します。(db-passwordは2か所に同じ値)

services:
  db:
    image: mariadb:11
    restart: unless-stopped
    environment:
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: db-password
      MARIADB_ROOT_PASSWORD: root-password
    volumes:
      - db:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "127.0.0.1:8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: db-password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp:/var/www/html

volumes:
  db:
  wp:

DBはポートをまったく開けておらず、WordPressは127.0.0.1にだけ接続しています。外部からは、下のNginxを通してのみアクセスできます。

docker compose up -d

2. Nginxでドメインを接続

Nginxがない場合はインストールします。(sudo apt install -y nginx)

sudo nano /etc/nginx/sites-available/example.com

example.comを自分のドメインに置き換えて入力します。

server {
    listen 80;
    server_name example.com www.example.com;
    client_max_body_size 64M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

3. HTTPSの適用

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

ファイアウォール(ufw)を使っている場合は、80・443を開けておきます。(ファイアウォールのポートを開ける)

4. WordPressのインストール画面

ブラウザーでhttps://my-domainにアクセスすると、言語の選択画面が表示されます。韓国語を選び、サイトのタイトル、管理者のID・パスワードを決めれば完了です。管理画面はhttps://my-domain/wp-adminです。

インストール画面は、最初にアクセスした人が進められます。ステップ3まで終えたら、すぐにインストールを完了してください。

管理のヒント

  • アップデート: WordPress本体・テーマ・プラグインは、管理画面からアップデートします。古いプラグインはハッキングの最も多い原因なので、使っていないプラグインは削除してください。
  • バックアップ: 投稿と設定はDBに、アップロードした画像とテーマはwpボリュームにあります。バックアッププラグインを使うか、次のようにDBをエクスポートしておきます。
cd ~/wordpress
docker compose exec db mariadb-dump -u root -p wordpress > wp-db-$(date +%F).sql

(rootのパスワードを聞かれます)ダウンロードの方法は、サーバーのデータをバックアップするを参考にしてください。

うまくいかないとき

  • 502 Bad Gateway — docker compose psで、コンテナが実行中か確認してください。
  • 「Error establishing a database connection」 — compose.yamlの2つのdb-passwordが同じか確認してください。初回の実行後にパスワードを変更した場合、DBには以前の値が残っています。
  • HTTPSの適用後に画面が崩れたり、アクセスが繰り返されたりします — Nginxの設定にX-Forwarded-Protoの行があるか確認してください。

解決しない問題がある場合は、Discordのチケットでお問い合わせください。