0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPressをXServer VPSに移行した

Posted at

今まで

2012年からエックスサーバーを使用してWordPressサイトを構築していた。

費用も安く、使い方も簡単、性能も高いと、素晴らしいサービスだが、ずっと気になっていたのが多少なりともエックスサーバーに依存している点。

最近XServer VPSをお試しで使ってみたら、必要十分な機能がそろっていて、信じられないくらいコスパが良い。2GBプランなんて、現在(2025年3月)月額830円、キャッシュバックで415円。AWSのIPv4アドレス代より安いくらいだ。

そこで、エックスサーバーからXServer VPSに移転して、WordPress環境を再構築してみた。

考え方

私の(偏屈な)考え方としては、

  • 可能な限り、何ものにも依存したくない。特定の企業・技術に依存することは可能な限り少なくしたい。となると、基本はLinux/OSS。
  • 可搬性を最大限にしたい。AWSから出て行けと言われたら、風呂敷1枚にデータを入れて、明日から別の場所で同じ環境を再現できるようにしたい。

つまり Minimum dependency, maximum portability ということ。

それを踏まえてWordPressサイトを構築した。

構成

ファイルはGitHubで公開。

誰が考えても同じ結論になると思うが、基本はLinux+Docker Container/Composeで構成している。

クラウド時代の英語みたいなもの。

アーキテクチャ図は以下の通り。
WordPress.png

sshhというのは、SSHを介してコンテナ環境にアクセスするためのコンテナ。

セキュリティリスクになるため注意が必要だが、簡単にコンテナ内にアクセスして、各種ファイルの編集や、cronによる自動処理(バックアップ等)ができる。

適当なDockerイメージがなかったため自作した(バカ)。

もっとスマートなやり方があったら教えてください。

DBのコンテナは1つ。

マイクロサービスの原則からすると、WordPressコンテナ毎にDBコンテナを作る方が良いらしいが、どのみちDBには個別にアクセスしないといけないのと、メモリー節約(DBコンテナ1つで200MB)のため一つにした。

手順

  • インスタンスにDockerをインストール。

  • ポート80(http), 443(https), 2222(sshh)を通す。

  • .envファイルを編集。

  • 各種ファイルを~/wordpressにコピー。

  • docker network create wordpress-network
    docker network create traefik-network
    docker compose up
    
  • 必要に応じsshhにアクセス(ssh -i testkey.sk -p 2222 ubuntu@your.address)し、backup.sh restore.sh を実行。

注意点

VPSサーバー

メモリーが1GBだと厳しい。2GB以上が必須。

ドメイン

ドメイン毎にWordPressコンテナやTraefikコンテナを割り当てている(.env)。

独自ドメインが必要。

Htpasswd

サイトで生成できるが、下記コードではエラーになるため、

TRAEFIK_BASIC_AUTH=traefikadmin:$2y$10$HKGpmSJI25/d5QYUGXOOo.VU1q14.D5XHeQT6lQVQycynyPMTyvPq

以下のように修正する。

TRAEFIK_BASIC_AUTH=traefikadmin:$$2y$$10$$HKGpmSJI25/d5QYUGXOOo.VU1q14.D5XHeQT6lQVQycynyPMTyvPq

wp-config.php

httpsに統一したほうが良い。

sshhでコンテナ環境にアクセスし、

cd wp_1
sudo chmod 666 wp-config.php
vi wp-config.php

wp-config.phpファイルを編集。

define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/' );

if (empty($_SERVER['HTTPS'])) {
    $_SERVER['HTTPS'] = 'on'; $_ENV['HTTPS'] = 'on';
}
define( 'WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/' );

に変更して再起動する。

wp-content/uploads

Restoreすると、権限が変更されてアップロードできなくなることがあった。

その場合は、以下のコマンドでwp-content/uploadsフォルダーを書き込み可能にする。

sudo chmod -R a+w  ~/wp_1/wp-content/uploads

自動処理

sshhのDocker composeで、以下の環境変数を設定できる(先頭の文字が一致すれば、複数設定可能)。

StartupCommand:コンテナ起動時に実行するコマンド。

CronJob:自動処理(cron)。

MariaDBのデータベース作成

環境変数 MARIADB_DATABASEを設定すれば一発で作成できるが、複数データベースを作成することができない。

entrypointでSQL処理を追加している。

単一のWordPressだけなら、 MARIADB_DATABASEを設定して、entrypointを削除すればよい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?