古いThinkPad X61にAlmaLinuxをインストールして自宅サーバーを構築したので、カゴヤVPSで運用していたWordpressをドメインそのままで自宅サーバーに引越しをした。
その時の作業手順を記録に残します。
自宅サーバーにLAMP環境を構築する
(1)Apache+PHP7.4(Wordpressの推奨するバージョン)をインストールする
インストール可能なPHPのバージョンを確認
# dnf module list php
メタデータの期限切れの最終確認: 0:26:55 時間前の 2021年05月17日 01時01分55秒 に実施しました。
AlmaLinux 8 - AppStream
Name Stream Profiles
php 7.2 [d] common [d], devel, minimal
php 7.3 common [d], devel, minimal
php 7.4 common [d], devel, minimal
デフォルト(7.2)をリセットしてデフォルト(7.4)にセットする
# dnf module reset php
# dnf module enable php:7.4
インストール
# dnf install httpd php php-{devel,mbstring,opcache,gd,curl,mysqlnd,fpm}
SSL証明書を更新するための準備
# dnf install certbot python3-certbot-apache
バージョン確認
# php -v
PHP 7.4.6 (cli) (built: May 12 2020 08:09:15) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies
Webサーバーを起動
# systemctl start httpd
# systemctl enable httpd
# systemctl start php-fpm
# systemctl enable php-fpm
(2)データベースをインストールして初期化する
インストール
# dnf install mariadb-server mariadb
デフォルトの文字コードをUTF8に設定
# vi /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
character-set-server = utf8 ← 追記する
データベース起動
# systemctl start mariadb
# systemctl enable mariadb
データベース初期設定
# mysql_secure_installation
(3)ファイアウォールの設定
# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --zone=public --add-service=https --permanent
# firewall-cmd --reload
設定内容を確認する
# firewall-cmd --zone=public --list-service
cockpit dhcpv6-client dns http https ssh
(4)ルーターの設定
静的IPマスカレード設定に以下の設定を追加する
TCP/www → 自宅サーバーのIPアドレス/www
TCP/https → 自宅サーバーのIPアドレス/https
(5)接続確認
# vi /var/www/html/index.php
<?php
phpinfo();
アクセスしてPHP情報が見れたら、ここまでの設定はOK。
http://自宅サーバー・グローバルIPアドレス/index.php
KAGOYAのVPSサーバーのバックアップ作業
(1)VPSサーバーから自宅サーバーにssh接続出来るようにする
VPSサーバーから自宅サーバーに接続するための秘密鍵をVPSサーバーに送信
自宅のローカル作業端末の接続設定
# cat .ssh/config
host kagoya
user root
hostname 133.xxx.xxx.xxx
Identityfile ~/.ssh/KAGOYA_ログイン用認証キー_20190103102000.key
TCPKeepAlive yes
秘密鍵を送信
# scp .ssh/id_rsa latoya:/root/.ssh/
VPSサーバーから自宅サーバーにログイン出来ることを確認する
自宅サーバーに接続するためのssh設定
# cat .ssh/config
host x61
user root
Port 接続用ポート番号
HostName xxx,xxx,xxx,xxx ← 自宅サーバーのグローバルIPアドレス
TCPKeepAlive yes
ログイン出来ることを確認する
# ssh x61
(2)VPSサーバーのバックアップ作業
WordPressバックアップ
# cd /var/www
# tar zcvf ~/wordpress.tgz wordpress
SSL証明書バックアップ
# cd /etc
# tar zcvf ~/letsencrypt.tgz letsencrypt
Apache設定ファイル
# tar zcvf ~/apache.tgz https
データベースバックアップ
# cd
# mysqldump -uroot -pパスワード DB名 > DB名.dump
自宅サーバーにバックアップしたファイルを送信する(XXXXは接続ポート番号)
# scp -PXXXX wordpress.tgz x61:/root/
# scp -PXXXX letsencrypt.tgz x61:/root/
# scp -PXXXX apache.tgz x61:/root/
# scp -PXXXX DB名.dump x61:/root/
自宅サーバーのリストア作業
(1)データベースを作成する。
事前に、/var/www/wordpress/wp-config.phpを開いて、データベース名・接続ユーザ・接続パスワードをメモしておく。
# mysql -uroot -p{rootパスワード}
# create database {データベース名};
# GRANT ALL PRIVILEGES ON {データベース名}.* TO {接続用ユーザ}@localhost IDENTIFIED BY '{接続パスワード}' WITH GRANT OPTION;
(2)リストア作業
# cd
Wordpressのリソース
# tar zxvf wordpress.tgz
# mv wordpress /var/www/
データベース
# mysql -uroot -p{rootパスワード} wordpress < wordpress.dump
SSL証明書
# tar zxvf letsencrypt.tgz
# mv letsencrypt /etc/
Apache設定ファイル
# tar zxvf apache.tgz
# mv httpd/conf/httpd.conf /etc/httpd/conf/
# mv httpd/conf.d/*.conf /etc/httpd/conf.d/
(3)Apache再起動
# systemctl restart httpd
(4)host設定
外部DNSのアドレス変更する前に動作確認をする必要があるので、ローカル端末でhostsを設定する
# sudo vi /private/etc/hosts
次の行を追記
192.168.xxx.xxx life60.net
(5)動作検証してからKAGOYAのVPSサーバー停止
- 自宅の端末からブラウザでホームページにアクセス出来ることを確認する。
- 外部DNSのAレコードを自宅サーバーのグローバルIPアドレスに変更する。
- 外部DNSの変更が反映されるまで数時間が掛かるので、半日ほど置いてから、自宅の外からスマホ等を使用してホームページにアクセス出来ることを確認する。
- KAGOYAのVPSサーバーを停止する
(6)SSL証明書の自動更新設定
手動で更新処理を試す
# certbot renew --post-hook "systemctl restart httpd"
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/life60.net.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following certificates are not due for renewal yet:
/etc/letsencrypt/live/life60.net/fullchain.pem expires on 2021-07-03 (skipped)
No renewals were attempted.
No hooks were run.
クーロン設定
# vi /etc/crontab
0 2 * * * root certbot renew --post-hook "systemctl restart httpd"
以上
コメント