CentOS6から7にユーザを移行してみる

CentOS6からCentOS7にユーザを移行する作業があり、方法を調べてみました。

CentOS6 6.10
CentOS7 7.7.1908
にて確認しています。

作業は全てrootユーザにて行っています。

CentOS6側

# テスト用グループ作成
groupadd -g 19999 test-group
# テスト用ユーザ作成
useradd  -g 19999 -u 19999 foo
passwd foo
bar
bar

# ユーザ追加確認
cat /etc/passwd | grep foo
# パスワード確認(ハッシュ方式確認)
#   先頭が$1ならmd5
#         $5ならsha256
#         $6ならsha512
#   ※受け側のglibcが2.7以降であれば、どの形式でもそのままコピペ可のようです
cat /etc/shadow | grep foo
# グループ追加確認
cat /etc/group | grep test

# ユーザ変更
su - foo
# テストファイル作成
touch test
# rootに戻る
exit

# ホームディレクトリのバックアップ
tar cvf foohome.tar /home/foo
# 固めたアーカイブは手元に置いておきます(あとでCentOS7側に転送します)

Centos7側

# ホームディレクトリの内容を予めCentOS7側に転送しておきます

# ホームディレクトリの内容を展開
cd /
tar xvf ~/foohome.tar
ls -al /home

# ユーザ定義のインポート
# ※データが画面上で2行に見えている場合がありますが、そのまま1行として貼り付け下さい
#

# /etc/passwd  に CentOS6側の /etc/passwd  内の foo        の行をそのまま貼り込んで保存
vipw -p

# /etc/shadow  に CentOS6側の /etc/shadow  内の foo        の行をそのまま貼り込んで保存
vipw -s

# /etc/group   に CentOS6側の /etc/group   内の test-group の行をそのまま貼り込んで保存
vigr -g

# /etc/gshadow に CentOS6側の /etc/gshadow 内の test-group の行をそのまま貼り込んで保存
vigr -s

# 移行結果確認
ls -al /home

ユーザfooでCentOS7にログインして確認ください。

以上です

WordPressサイトをKUSANAGIに移行するテスト

今まで使っていたサイトの反応が遅くなって来ており、編集中に(外部からアクセスして下さっている方に)5xxエラーが時々出るようになったため、テスト用のIPアドレスとFQDNを準備し、KUSANAGIへの移行手順テストを先日行いました(これを受けて、6/21に本番移行しています)。

基本的な手順は、『ぼっちサーファーのブログ 複数のWordPressをKUSANAGI for さくらのVPSに移行する手順 まとめ』を参考にしています。
※2019年06月時点での情報となります

事前に用意する物

  • https://import.wp-migration.com/all-in-one-wp-migration-file-extension.zip
    コンテンツの移行に使いますので、予めダウンロードしておいて下さい。
  • kusanagiユーザー用のパスワード
  • MySQL(MariaDB)のrootパスワード
  • 既設WowdPress実行環境のPHPバージョン
    可能な限り、既設WowdPress実行環境のPHPは7.2に上げておいて下さい
  • データベース名
    仮の物でも構いませんが、本番と同じ名前でも構いません
  • データベースのユーザー名
    仮の物でも構いませんが、本番と同じ名前でも構いません
  • データベースユーザーのパスワード
    仮の物でも構いませんが、本番と同じ名前でも構いません
  • WordPressユーザー名
    仮の物でも構いませんが、本番と同じ名前でも構いません
  • WordPressユーザーのパスワード
    仮の物でも構いませんが、本番と同じ名前でも構いません
  • 移行対象サイト名(FQDN)
  • プロファイル名
    何でも可
  • テスト用のサイト名
    移行対象サイトとは別なFQDN
  • テスト用サイトのIPアドレス
    移行対象サイトとは別なアドレス
    DNSにも正引き登録しておいて下さい
  • 移行対象サイトのフルバックアップ
    プラグイン『All-in-One WP Migration』をインストールし、有効化、エクスポートして手元にダウンロードしておいて下さい
  • SSL証明書登録用のメールアドレス

環境作成

root環境で行います。

公式の手順に従い、適当なサービス上に環境を展開しておきます。
https://kusanagi.tokyo/cloud/

OSの初期設定

タイムゾーンがJSTでない場合

timedatectl set-timezone Asia/Tokyo

swap領域が取られていない場合(freeコマンドで確認)

dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab

KUSANAGIの初期設定

yum --enablerepo=remi,remi-php56 update -y
reboot
kusanagi init --tz tokyo --lang ja --keyboard ja --passwd 'kusanagiユーザーのパスワード' --nophrase --dbrootpass 'MySQL(MariaDB)のrootパスワード' --nginx --ruby24 --dbsystem mariadb
# 途中でPHPのバージョンを聞かれますので答えて下さい

KUSANAGIのプロビジョニング

  • hostsでサイト名をテスト用サイトのIPアドレスにリダイレクトさせます
    例として、移行前のサイト名をfoo.bar.com、テスト用のIPアドレスを123.123.123.123とします
    # C:\Windows\System32\drivers\etc\hostsに追加
    foo.bar.com 123.123.123.123
  • (出来れば)ブラウザのクッキーやキャッシュを削除します
  • kisanagiのプロビジョニングを行います
    kusanagi provision --WordPress --wplang ja --fqdn サイト名(FQDN) --noemail --dbname データベース名 --dbuser データベースのユーザー名 --dbpass 'データベースユーザーのパスワード' プロファイル名
  • ブラウザで移行対象サイトに接続し、WordPressの初期設定を行います
    各パラメータは事前に決めておいた物を入れておいて下さい
    テーブル接頭辞はそのままで構いません

データ移行

  • wp-config.phpにFTPパスワードを設定します
    vi /home/kusanagi/プロファイル名/DocumentRoot/wp-config.php
    # #define('FTP_PASS','*****');
    # ↓
    define('FTP_PASS','kusanagiユーザー用のパスワード');
  • プラグイン『All-in-One WP Migration』をインストール→有効化
  • ダウンロードしておいたall-in-one-wp-migration-file-extension.zipをプラグインとしてアップロード→インストール→有効化
  • cd /home/kusanagi/プロファイル名
    chmod 777 -R DocumentRoot
  • All-in-One WP Migrationでデータをインポートします
    インポート完了時に、『パーマリンク構造を保存する』をクリックします
    変更を保存をクリックします(設定の保存が行われます)
    変更を保存をクリックします(パーマリンク構造の更新が実行されます)
    ※認証画面に差し戻された場合、再度認証して下さい
    ※どうしても駄目なときは、次のサイトFQDN変更ののち、パーマリンク構造を元のサイトのものに合わせて下さい

サイトのFQDNを変更

kusanagi setting --fqdn テスト用のサイト名 プロファイル名
kusanagi ssl --https noredirect プロファイル名
# 次の2行は(kusanagi setting で変更済みの筈ですが)念のため
wp search-replace 'http://サイト名' 'http://テスト用のサイト名' --path=/home/kusanagi/プロファイル名/DocumentRoot/
wp search-replace 'https://サイト名' 'https://テスト用のサイト名' --path=/home/kusanagi/プロファイル名/DocumentRoot/

アクセステスト

  • hostsのリダイレクト設定を削除します
  • ブラウザからテスト用サイト名でアクセステスト

SSL証明書の設定

kusanagi ssl --email SSL証明書登録用のメールアドレス プロファイル名
kusanagi ssl --https redirect プロファイル名

セキュリティ警告への対応

cd /home/kusanagi/プロファイル名
chmod 440 DocumentRoot/wp-config.php
chown kusanagi:www DocumentRoot/wp-config.php
chmod -R 755 DocumentRoot/wp-content
mv DocumentRoot/wp-config.php ./

firewalldが動いていてsshを違うポートに変更する場合

# sshの待ち受けを22/tcpから12345/tcpに変更
# /etc/ssh/sshd_config は変更済で、sshdはリロード済みなこと
# 定義の確認
firewall-cmd --info-service=ssh
# 12345/tcp追加
firewall-cmd --permanent --service=ssh --add-port=12345/tcp
# 定義読み込み
firewall-cmd --reload
# 定義の確認
firewall-cmd --info-service=ssh
# 22/tcp削除
firewall-cmd --permanent --service=ssh --remove-port=22/tcp
# 定義読み込み
firewall-cmd --reload
# 定義の確認
firewall-cmd --info-service=ssh