こんにちは、skkです。
今回のテーマは、今更ながらWordPressです。
今回は、メモリ1GB程度の軽量VPSでも安定して動作させるための設定から、Docker Composeによる構築、Nginxでのリバースプロキシ設定、そしてSSL化(HTTPS)までを一気に解説します。
事前に以下を準備する必要があります。
・VPSサーバ(Nginxインストール済であること)
・独自ドメイン
1. メモリ不足対策:スワップ領域の作成
今回使用しているVPSは、以前から使用しているAPIサーバと同一のサーバです。

プランは最小のプランなので、初期状態のVPSではメモリが不足し、DBが落ちることがあります。まずは1GBのスワップ領域を確保しておきます。
# 1GBのファイルを作成してスワップとして登録
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 再起動後も有効にする設定
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 確認(Swap領域があることを確認)
free -m
total used free shared buff/cache available
Mem: 957 348 217 13 391 434
Swap: 1023 0 1023
2. Docker / Docker Compose のインストール
APIサーバとしても使用しているため、環境に影響を与えないためにDockerをインストールします。
# パッケージ更新
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
# 公式GPG鍵の追加とリポジトリ登録
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# インストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3. WordPressの環境構築(Docker Compose)
次に、WordPressとデータベース(MariaDB)の構成を定義します。
まずは、作業ディレクトリ(~/wordpress)を作成します。
mkdir -p ~/wordpress/html ~/wordpress/db
cd ~/wordpress
次にdocker-compose.yamlファイルを作成します。
サーバ自体のメモリが少ないので、deploy.resources.limits でメモリ使用量を制限し、DBのバッファサイズも節約設定にしているところがポイントです。
services:
db:
image: mariadb:10.6
container_name: wp-db
restart: always
volumes:
- ./db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wp_user
MYSQL_PASSWORD: wp_password
deploy:
resources:
limits:
memory: 256M
command:
- --innodb_buffer_pool_size=128M
wordpress:
depends_on:
- db
image: wordpress:latest
container_name: wp-app
restart: always
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: wp_password
WORDPRESS_DB_NAME: wordpress
deploy:
resources:
limits:
memory: 256M
コンテナ起動
sudo docker compose up -d
この時点で http://[サーバIP]:8080 でアクセス可能になりますが、SSL化が終わるまでは落としておきましょう。
4. NginxによるリバースプロキシとSSL化
独自ドメインでアクセスできるようにし、Let’s EncryptでSSL化します。
Nginx設定ファイルの作成 /etc/nginx/sites-available/wordpress を作成し、以下の内容を記述します。
server {
listen 80;
server_name your-domain;
location / {
proxy_pass http://localhost: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;
client_max_body_size 64M;
}
}
設定の反映とSSL証明書の取得
# シンボリックリンク作成とテスト
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
# CertbotでSSL化
sudo apt install python3-certbot-nginx -y
sudo certbot --nginx -d your-domain
5. WordPressの初期設定とセキュリティ
無事に https://your-domainでアクセスできたら、管理画面から以下の設定を行います。
- URL確認: [設定] > [一般] でURLが
httpsになっているか確認。 - 管理画面URLの変更: プラグイン
WPS Hide Loginを導入し、/wp-adminを独自のURLに変更(wp-adminはwordpressのデフォルトの管理URLであり攻撃対象になるため。変更後のURLを必ずブックマークに登録しておいてください)。 - 高速化:
WP Super Cacheを導入し、キャッシングを有効化。 - 不要プラグインの削除: 初期状態の
Hello Dolly等は削除。
プラグインをインストールしすぎると、容量を食うので最小限にしています。
まとめ
今回の構成により、メモリを抑えつつセキュアで高速なWordPress環境が整いました。Dockerを使っているため、別のサーバへの引っ越しもディレクトリごと移動するだけで簡単です。
また、料金は449円/月+独自ドメイン1300円くらい(ドメインによって異なります)です。
では、また。

コメント