先日、ミニPCでリバースプロキシサーバを構築しました。
構築したミニPCサーバーにWordPressサーバーを構築し、Synology NASのWordPressサーバーをミニPCに移行しました。さらに次回は、メールサーバーを構築します。
移行前

移行後

Nginxのインストール
リバースプロキシサーバー構築編で実施済みなのでここでは割愛します。
SSLサーバー証明書(Let’s Encrypt)の取得
当ブログのドメインのSSLサーバー証明書をLet’s Encryptで取得します。
リバースプロキシサーバー構築時は、80,443番ポートが使用できなかったのでDNSチャレンジ認証で取得しましたが、今回は、これらのポートが使用できるのでletsencryptをインストールします。
letsencryptのインストール
sudo apt-get install letsencrypt
証明書の発行(evening-network.server-on.netはドメイン名適宜、置き換えてください)
sudo letsencrypt certonly --standalone -d evening-network.server-on.net
証明書の自動更新。cronで自動化。
sudo crontab -e
以下を追加。
# Renew the Let's Encrypt SSL certificates at 3:00 AM on the 1st of every month
00 03 01 * * sudo systemctl stop nginx; sudo letsencrypt renew; sudo systemctl start nginx
証明書は、
/etc/letsencrypt/live/evening-network.server-on.net/ の下に配置されます。
詳細については、こちらの記事が参考になると思います。ここでは、割愛します。


自動更新
PHPのインストールと設定
PHPをインストールします。
※他のWordPressサーバーからデータ移行する場合は、移行元のPHPのバージョンを必ず合わせてください。(実際、違うバージョンで移行したら記事の内容が一部壊れていました。)
バージョンを指定する場合。今回は8.0。
sudo apt update
sudo apt install php8.0-cli php8.0-mbstring php-pear php8.0-fpm php8.0-mysql php8.0-curl php8.0-dom php8.0-imagick php8.0-zip php8.0-intl
/etc/php/8.0/fpm/php.ini を修正
upload_max_filesizeを2Mから128Mに変更。
post_max_sizeを8Mから128Mに変更。
upload_max_filesize = 128M
post_max_size = 128M
etc/php/8.0/fpm/pool.d/www.conf を修正
変更前
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
;listen.mode = 0660
変更後
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
apache2を削除する(今回はNginxを使用するため)。
sudo apt remove apache2 -y
sudo apt purge apache2 -y
sudo rm -rf /etc/apache2
nginx .conf ファイル作成
/etc/nginx/conf.d で wordpress.confを作成する。
server_name はWordpressをインストールしているIPアドレスを設定する。ここでは、192.168.100.55。
erver {
listen 80;
server_name 192.168.100.55;
root /usr/share/nginx/wordpress;
index index.php;
charset utf-8;
# wordpress パーマネントリンク設定
try_files $uri $uri/ /index.php?q=$uri&$args;
# wp-config.phpへのアクセス拒否設定
location ~* /wp-config.php {
deny all;
}
# php-fpm用設定
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
}
ファイルチェック。ここでエラーが出たら修正する。
sudo nginx -t
再起動。
sudo systemctl restart nginx
MySQLのインストールと設定
インストール
sudo apt install mysql-server mysql-client -y
rootユーザーで設定を行う。
sudo mysql -u root -p
パスワードは任意。
次にデータベースを作成する。
下記のようにしたとき、
データベース名 | wordpress |
ユーザー名 | user-name |
パスワード | pass-word |
以下のコマンドを実行する。
CREATE DATABASE wordpress CHARACTER SET UTF8 COLLATE UTF8_BIN;
CREATE USER 'user-name'@'localhost' IDENTIFIED BY 'pass-word';
GRANT ALL ON wordpress.* to 'user-name'@'localhost';
exit
Wrodpressインストール
/usr/share/nginx/ の下に、Wordpressをインストールする。
cd /usr/share/nginx/
sudo curl -O https://ja.wordpress.org/latest-ja.tar.gz
sudo tar xzfv latest-ja.tar.gz
sudo chown -R nginx:nginx wordpress
/usr/share/nginx/wordpress/wp-config.php の変更。
前段で、以下のように設定したので、各項目を当てはめる。
データベース名 | wordpress |
ユーザー名 | user-name |
パスワード | pass-word |
データベースの文字セット | utf8mb4 |
認証用ユニークキー(右記のURLで生成する) | https://api.wordpress.org/secret-key/1.1/salt/ |
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** Database username */
define( 'DB_USER', 'user-name' );
/** Database password */
define( 'DB_PASSWORD', 'pass-word' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
/**#@+
* Authentication unique keys and salts.
*
* Change these to different unique phrases! You can generate these using
* the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
*
* You can change these at any point in time to invalidate all existing cookies.
* This will force all users to have to log in again.
*
* @since 2.6.0
*/
ここに自動生成されたユニークキーをコピーする
初期設定画面を表示する。192.168.100.55は、WordpressがインストールしているIP。
http://192.168.100.55/wp-admin/install.php
(All-in-One WP Migrationで移行する場合は注意する点があるので、先に過去の記事を参照してください。)
以降、画面の指示に従って設定してください。
任意:別のサーバーからデータを移行する場合(All-in-One WP Migration)
今回も、以前使用したAll-in-One WP Migration(有料)を使用しました。手順は過去の記事を参照してください。
https化する
前項であった、
/etc/nginx/conf.d で wordpress.conf を書き換えます。
evening-network.server-on.net はドメイン名(適宜置き換えてください。)
server {
listen 443 ssl;
server_name evening-network.server-on.net;
root /usr/share/nginx/wordpress;
index index.php;
charset utf-8;
# wordpress パーマネントリンク設定
try_files $uri $uri/ /index.php?q=$uri&$args;
# wp-config.phpへのアクセス拒否設定
location ~* /wp-config.php {
deny all;
}
# php-fpm用設定
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
ssl_certificate /etc/letsencrypt/live/evening-network.server-on.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/evening-network.server-on.net/privkey.pem;
}
server {
if ($host = evening-network.server-on.net) {
return 301 https://$host$request_uri;
}
listen 80;
server_name evening-network.server-on.net;
return 404; # managed by Certbot
}
ファイルチェック。ここでエラーが出たら修正する。
sudo nginx -t
再起動。
sudo systemctl restart nginx
https化されたblogへアクセスする。evening-network.server-on.net はドメイン名(適宜置き換えてください。)
https://evening-network.server-on.net
アクセスできれば成功。
今回、以下のサイトを参考にさせていただきました。


2024/03/29現在、J412は在庫切れ、N150が販売中です。
コメント