広告

CentOS8 でミラーサイトを作る/WordPress のバックアップ

IT

前回、Webサーバーの設定まで終了したので、WordPress をインストールして、このサイトのミラーサイトにしておこうと思っています
まずはWordPress を動作させるに、PHP と MySql をインストールしますが、以前とそれほど変わらないと思っています。

広告

WordPress インストール

PHP 、MariaDB、WordPress とインストールしていきます

PHP7.3 のインストール

centOS8 のデフォルトは、PHP7.2なので、remiレポジトリを導入しPHP7,3をインストール

# dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# dnf module disable php
# dnf module install -y php:remi-7.3
# php -v

php-fpmの起動

# cp -p /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.org
# vi /etc/php-fpm.d/www.conf
  ・
  ・
 listen.owner = apache
 listen.group = apache
 listen.mode = 0666


# systemctl start php-fpm
# systemctl enable php-fpm
# systemctl is-enabled php-fpm
 enabled

PHP 基本的な設定

# cp -p /etc/php.ini /etc/php.ini.org
# vi /etc/php.ini
 expose_php = Off
 post_max_size = 80M
 upload_max_filesize = 80M
 date.timezone = "Asia/Tokyo"
 mbstring.language = Japanese
 mbstring.internal_encoding = UTF-8
 mbstring.http_input = UTF-8
 mbstring.http_output = pass
 mbstring.encoding_translation = On
 mbstring.substitute_character = none 

$ php -r 'phpinfo();' |  grep 'PHP Version'
PHP Version => 7.3.15

MariaDB 10 のインストール

$ dnf list | grep maria

centOS8 になり、デフォルトで「MariaDB 10」が導入されているので、そのままインストール

# dnf install -y mariadb-server mariadb mariadb-devel
 完了しました!

# systemctl restart mariadb
# systemctl status mariadb
# systemctl enable mariadb

mysql_secure_installationの実行

管理者パスワードは、事前に決めてメモしておく
   ★管理者パスワード :  hogehoge_passwd
このパスワードは、mysql コマンドで「root」ユーザーのパスワード となる

$ sudo mysql_secure_installation
・
Set root password? [Y/n] y                <--------------- 管理者パスワード
Remove anonymous users? [Y/n] y       <--------- 匿名ユーザー削除
Disallow root login remotely? [Y/n] y     <----- リモート管理者ログイン拒否
Remove test database and access to it? [Y/n] y <---- test データベース削除
Thanks for using MariaDB! 

文字コードの設定

# cp -p /etc/my.cnf.d/mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf.org 
# vi mariadb-server.cnf
   ・
   ・
 [mariadb]                 <------ 追加  character-set-server = utf8mb4 
 [client-mariadb]          <------ 追加  default-character-set = utf8mb4 

# systemctl start mariadb 
# systemctl status mariadb

データベースにアクセスし、確認

$ mysql -uroot -p「★管理者パスワード」
MariaDB [(none)]> show variables like "chara%";
 +--------------------------+------------------------------+
 | Variable_name            | Value                        |
 +--------------------------+------------------------------+
 | character_set_client     | utf8mb4                      |
 | character_set_connection | utf8mb4                      |
 | character_set_database   | utf8mb4                      |
 | character_set_filesystem | binary                       |
 | character_set_results    | utf8mb4                      |
 | character_set_server     | utf8mb4                      |
 | character_set_system     | utf8                         |
 | character_sets_dir       | /usr/share/mariadb/charsets/ |
 +--------------------------+------------------------------+

MariaDB [(none)]> quit
 Bye

WordPress インストール

centOS7時の記事を参考に、インストール

バックアップ

とりあえず、WordPress は動作したと思うので、本サーバーのバックアップをしていきます、

WordPress データベースのバックアップ

本サーバー側で作業していきます
まずは、バックアップを保存するディレクトリを作成し、データベースをバックアップ。データバースの、ユーザ名、ホスト名、パスワードは事前に明確にしておきます

  • データベース名     | WpDb
  • ユーザー名       | WpAdmin
  • パスワード       | WpPasswd
  • データベースのホスト名 | localhost

「mysqldump」でバックアップ

・バックアップ作業用ディレクトリを作成
・本サーバーでデータベースをすべてバックアップ
・ミラーサーバーへコピー
・ミラーサーバーのデータベースをリストア
・WordPress の設定をミラーサーバー用に変更

//バックアップ作業用ディレクトリ作成
$ cd ~
$ mkdir ./Backup
$ cd ./Backup/

//本サーバーでバックアップ
$ mysqldump -u  WpAdmin -pWpPasswd  -h localhost -A > WordPress.bak

//バックアップファイルをミラーPCへコピー
// SSH のポート番号 54321 の場合
$ scp -P 54321 ./WordPress.bak 192.168.0.100:
Enter passphrase for key '/home/hogehoge/.ssh/id_ecdsa':

//ミラーサーバーのデータベースをリストア 
$ mysql -u root -p WpDb  < WordPress.bak
 パスワード:  <-- データベースのパスワードではなく、mysql の root パスワード

これで、データベースのコピーは終了したが、WordPress の設定情報も更新されています。
したがって、本サーバーとミラーサーバーでは、アドレスが違うためミラーサイトへ直接のアクセスしても、内部的には本サーバーのURLで動作するので、正常に表示されません
データベースのWordPresのURL設定を変更する必要があります
変更方法は、mysqlのデータバース内容を直接変更する方法と、wordpressの設定ファイルで変更する方法を紹介します。
後者の方が簡単です

ミラーサイトのURL情報を変更:①mysql で設定の情報を書き換える

//ミラーサイトでの作業
$ mysql -u root -p「rootパスワード」
 MariaDB [(none)]> show databases;
 +--------------------+
 | Database           |
 +--------------------+
 |  WpDb              |
 | information_schema |
 | mysql              |
 | performance_schema |
 +--------------------+
 4 rows in set (0.001 sec)
 MariaDB [(none)]> use WpDb
 MariaDB [WpDb]> select * from wp_options where option_name = "siteurl";
 +-----------+-------------+------------------------------+----------+
 | option_id | option_name | option_value                 | autoload |
 +-----------+-------------+------------------------------+----------+
 |         1 | siteurl     | http://www.hogehoge.com/blog | yes      |
 +-----------+-------------+------------------------------+----------+
 1 row in set (0.000 sec)
 MariaDB [WpDb]> select * from wp_options where option_name = "home";
 +-----------+-------------+------------------------------+----------+
 | option_id | option_name | option_value                 | autoload |
 +-----------+-------------+------------------------------+----------+
 |         2 | home        | http://www.hogehoge.com/blog | yes      |
 +-----------+-------------+------------------------------+----------+
 1 row in set (0.000 sec)

//次のコマンドで、www.hogehoge.com を www2.hogehoge.com に変更する
 MariaDB [WpDatabase]>update wp_options SET option_value = "http://www2.hogehoge.com/blog" where option_id = 1 OR option_id = 2;

ミラーサイトのURL情報を変更:②wp-config.phpを編集する

#サーバーでの作業
#ブログのディレクトリへ移動
cd /home/www/html/blog/
# wp-config のバックアップを取る
sudo cp -p wp-config.php wp-config.php.bak

#編集
vi ./wp-config.php

#最後の行に、URL情報を追加
####
####
define('WP_HOME', 'http://www2.hogehoge.com/blog/');
define('WP_SITEURL', 'http://www2.hogehoge.com/blog/');
###
###
#保存

確認: 新しいURLで管理画面にログインし、「設定」>「一般」でURLが正しく認識されているか確認します。 

メニューの「カスタムリンク」でうまく設定できない場合がありました

私の環境では、バックアップURLでほぼ正常に動作しましたが、一部のリンクで本サーバーURLへリンクされる場合が確認されました
調べてみると、必ずNGではないですが「カスタムリンク」でそのような現象が起きてます
カスタムリンクでは、「URL」項目に直接リンク先URLを設定しますが、そこに本サーバーのURLを設定している場合、うまく変換されず本サーバーへリンクしてしまう現象です
このリンク先のURLを相対パスにすることで、とりあえずは治りました

#カスタムリンク
https://www.hogehoge.com/blog/
    # ↓
    #相対アドレスへ変更
/blog/

    これで、ミラーサイト(www2.hogehoge.com)でも本サーバーと同様にWordPress にアクセスできるようになりました

    wp-content をバックアップ

    投稿記事内容は、mysql に保存されていますが、テーマやアップロードしたメディアなどは、wp-content ディレクトリに保存されているようなので、これもバックアップします。
    ・WordPress インストールディレクトリへ移動
    ・tar コマンドで圧縮
    ・ミラーサイトへコピー
    ・ファイルをミラーサイトの作業ディレクトリへ移動
    ・展開
    ・展開された、wp-content ディレクトリをhttpd ユーザーアカウントに変更
    ・ミラーサイトのwp-contentディレクトリの名前変更
    ・作業ディレクトリのwp-content を移動

    // wp-content をバックアップ
    # cd /home/www/html/blog
    # tar cvzf blog.tar.gz ./wp-content/
    
    // blog.tar.gzを作業用のディレクトリに移動
    # mv blog.tar.gz /home/hogehoge/Backup/
    
    // アカウントの変更
    # chown hogehoge.hogehoge blog.tar.gz
    
    // ミラーサイトへコピー
    # exit
    $ cd /home/hogehoge/Backup/
    $ scp -P 54321 ./blog.tar.gz 192.168.0.100:
    Enter passphrase for key '/home/kazu/.ssh/id_ecdsa':
    
    // ミラーサイトで作業
    // ユーザーホームディレクトリにコピーされている
    // 作業ディレクトリへ移動
    $ mv ./blog.tar.gz ./Backup/
    $ cd ./Backup/
    
    // 展開
    $ tar xvzf ./blog.tar.gz
    
    // 展開されたディレクトリをhttpd ユーザーアカウントに変更
     $ sudo chown -R apache.apache ./wp-content/
    
    // wordpress ディレクトリへ移動し、バックアップディレクトリ名を変更
    $ cd /home/www/html/hogehoge.com/blog/
    $ sudo mv wp-content wp-content.org
    
    // オリジナルのディレクトリを移動
    $ sudo mv ./wp-content /home/www/html/hogehoge.com/blog/
    

    これでミラーサイトのWordPress にログインできるはずなので
    wordpress の「設定」⇒「一般設定」を確認

    タイトルとURLをコピーしました