リプレイスは何度かした事がありますが、備忘録とXserver VPSの初期設定を確認したので、後日の為にメモしておきます。

Xserver VPS | 圧倒的な性能・圧倒的なコスパVPS

なぜXserver VPS?

元は1GBのVPSだったのですが、Rails動かしたりする追加のリソースが欲しかった。
本来は、別々に作った方が良いのですが、追加コストや保守対象を減らす為。
Dockerの方が便利だけど、個人で使うにはVPSの方が安価で良いですね。

理由1. Xserver VPSはコスパが良いらしい。
【2023年1月】VPSおすすめ16選を徹底比較!無料やWindowsが使えるサービスも紹介

理由2. 今朝まで、最大64%オフキャンペーンやってたので、昨夜 3年契約でポッチっと。
元々、Xdomainを何年も使っていて、トラブルや不満もなかったので、大丈夫だろうなと。

契約からSSHログインまで

プランやOSを選択して、決済完了で直ぐ使える状態になりました。(早い)
接続許可ポートで、SSH(22)をONにして、コンソールから

% ssh root@IPアドレス
: (入力したrootパスワード)

rootログインやパスワード認証、IP制限なしの22番ポート解放は良くないので、後で変更予定。
接続許可ポートで、任意の番号のポートだけ開けるとかできないのが残念だけど、
手前で制限できるのはGood!

設定を確認して必要があれば変更

画面からOS再インストールができるので、壊れても気にせず作業開始!

手順はこちら
サーバー初期設定(CentOS[RedHat系]) – Night Only Project.

SELinux無効化

有効だったので無効化しました。

# getenforce
Enforcing

スワップ追加

スワップは1GBと、ちょっと少なめだけど、あるのでOK(必要になったら追加する)
メモリが2GBよりも若干少ない(VPSは実際に使える量が表示と違ったりするので気にしない)

# free
              total        used        free      shared  buff/cache   available
Mem:        1877956      149368     1523812        8692      204776     1575372
Swap:       1048572           0     1048572

ディスク容量も確認。こっちはちゃんと50GBある。

# df
ファイルシス   1K-ブロック    使用   使用可 使用% マウント位置
devtmpfs            928504       0   928504    0% /dev
tmpfs               938976       0   938976    0% /dev/shm
tmpfs               938976    8692   930284    1% /run
tmpfs               938976       0   938976    0% /sys/fs/cgroup
/dev/vda4         50160620 1555388 48605232    4% /
/dev/vda2          1038336  177736   860600   18% /boot
/dev/vda1           159564   11464   148100    8% /boot/efi
tmpfs               187796       0   187796    0% /run/user/0

ホスト名変更

IPアドレス使って命名されている。好きなのに変更

# hostname
x162-xx-xx-xx

rootパスワード設定

画面から自分で設定しているので、スキップでもOK!
無いとは思うけど、ログとか残されてたらなので、一応、変えておく。

SSHポート変更

IP制限しない場合は、アタックされるので変えておいた方が良い。
接続許可ポートで、全て許可して、firewalld(CentOS 7の場合)等に任せる方法もあるけど、
使用予定のないポートを使うのもあり。

firewalldで制限されているので、一旦、停止

# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 月 2023-01-23 19:02:45 JST; 2h 2min ago

# systemctl stop firewalld

# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 月 2023-01-23 21:05:25 JST; 3s ago

自動起動も、一旦、停止

# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

管理ユーザー作成

centosユーザーがいるけど、何だろう?

# ll /home
合計 0
drwx------. 3 centos centos 95  1月 23 19:49 centos

パスワードは設定されていない。

# cat /etc/shadow | grep centos
centos:!!:19380:0:99999:7:::

SSHの鍵もない(0バイトな)ので、ログインできない。

# ll /home/centos/.ssh
合計 0
-rw-------. 1 centos centos 0  1月 23 19:00 authorized_keys

削除して、様子見 →今の所、問題なさそう

# userdel -r centos

別途、ユーザーを作成しました。

Ansibleでサーバー構築

下記をベースにしたものを使っていたので、接続先等を変更して実行。
DBとファイルのダンプを現サーバーから持ってきて、リストア。

CentOS7 Vagrantfile+Ansible playbook提供(WordPress対応)
https://dev.azure.com/nightonly/vagrant-ansible-origin/_git/vagrant-ansible-centos7?version=GBwordpress-master

ただ、PHPだけ8.2にバージョンアップしました。サポート切れているので。

ansible/roles/php73-nginx/tasks/main.yml

-  yum: name={{ item }} state=present enablerepo=remi-php73,remi-safe,epel
+  yum: name={{ item }} state=present enablerepo=remi-php82,remi-safe,epel

え!WordPressの画面が表示されない

hostsを設定してブラウザからアクセス
リクエストは来ているけど500エラーになっている。

tail -f /var/log/nginx/front_ssl_access.log

xx.xx.xx.xx - - [24/Jan/2023:09:45:58 +0900] "GET / HTTP/2.0" 500 352 "https://nightonly.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36" 0.833 "blog.nightonly.com"

tail -f /var/log/php-fpm/www-error.log

[24-Jan-2023 00:45:58 UTC] PHP Fatal error:  Uncaught mysqli_sql_exception: Table 'wordpress.yoast_wp_seo_models_indexable' doesn't exist in /usr/share/nginx/wordpress/wp-includes/wp-db.php:2056
Stack trace:
#0 /usr/share/nginx/wordpress/wp-includes/wp-db.php(2056): mysqli_query(Object(mysqli), 'SELECT * FROM `...')
#1 /usr/share/nginx/wordpress/wp-includes/wp-db.php(1945): wpdb->_do_query('SELECT * FROM `...')
#2 /usr/share/nginx/wordpress/wp-content/plugins/wordpress-seo/lib/orm.php(285): wpdb->query('SELECT * FROM `...')
#3 /usr/share/nginx/wordpress/wp-content/plugins/wordpress-seo/lib/orm.php(1946): Yoast\WP\Lib\ORM::execute('SELECT * FROM `...', Array)
#4 /usr/share/nginx/wordpress/wp-content/plugins/wordpress-seo/lib/orm.php(383): Yoast\WP\Lib\ORM->run()
#5 /usr/share/nginx/wordpress/wp-content/plugins/wordpress-seo/src/repositories/indexable-repository.php(233): Yoast\WP\Lib\ORM->find_one()
#6 /usr/share/nginx/wordpress/wp-content/plugins/wordpress-seo/src/repositories/indexable-repository.php(123): Yoast\WP\SEO\Repositories\Indexable_Repository->find_for_home_page()
#7 /usr/share/nginx/wordpress/wp-content/plugins/wordpress-seo/src/memoizers/meta-tags-context-memoizer.php(89): Yoast\WP\SEO\Repositories\Indexable_Repository->for_current_page()
#8 /usr/share/nginx/wordpress/wp-content/plugins/wordpress-seo/src/integrations/front-end/wp-robots-integration.php(89): Yoast\WP\SEO\Memoizers\Meta_Tags_Context_Memoizer->for_current_page()
#9 /usr/share/nginx/wordpress/wp-content/plugins/wordpress-seo/src/integrations/front-end/wp-robots-integration.php(69): Yoast\WP\SEO\Integrations\Front_End\WP_Robots_Integration->get_robots_value()
#10 /usr/share/nginx/wordpress/wp-includes/class-wp-hook.php(292): Yoast\WP\SEO\Integrations\Front_End\WP_Robots_Integration->add_robots(Array)
#11 /usr/share/nginx/wordpress/wp-includes/plugin.php(212): WP_Hook->apply_filters(Array, Array)
#12 /usr/share/nginx/wordpress/wp-includes/robots-template.php(32): apply_filters('wp_robots', Array)
#13 /usr/share/nginx/wordpress/wp-includes/class-wp-hook.php(292): wp_robots('')
#14 /usr/share/nginx/wordpress/wp-includes/class-wp-hook.php(316): WP_Hook->apply_filters(NULL, Array)
#15 /usr/share/nginx/wordpress/wp-includes/plugin.php(484): WP_Hook->do_action(Array)
#16 /usr/share/nginx/wordpress/wp-includes/general-template.php(3009): do_action('wp_head')
#17 /usr/share/nginx/wordpress/wp-content/themes/lightning/header.php(11): wp_head()
#18 /usr/share/nginx/wordpress/wp-includes/template.php(730): require_once('/usr/share/ngin...')
#19 /usr/share/nginx/wordpress/wp-includes/template.php(676): load_template('/usr/share/ngin...', true, Array)
#20 /usr/share/nginx/wordpress/wp-includes/general-template.php(48): locate_template(Array, true, true, Array)
#21 /usr/share/nginx/wordpress/wp-content/themes/lightning/front-page.php(1): get_header()
#22 /usr/share/nginx/wordpress/wp-includes/template-loader.php(106): include('/usr/share/ngin...')
#23 /usr/share/nginx/wordpress/wp-blog-header.php(19): require_once('/usr/share/ngin...')
#24 /usr/share/nginx/wordpress/index.php(17): require('/usr/share/ngin...')
#25 {main}
  thrown in /usr/share/nginx/wordpress/wp-includes/wp-db.php on line 2056

wordpress.yoast_wp_seo_models_indexableが無いよと怒られています。
YoastSEO pluginをバージョンアップすれば直ると下記に書いてありましたが、

Incompatible with PHP 8.1 release – Table yoast_wp_seo_models_indexable doesn’t exist · Issue #17772 · Yoast/wordpress-seo

管理画面も表示できないので、一旦、外しました。

# cd /usr/share/nginx/wordpress/wp-content/plugins
# mv wordpress-seo ~/

メッセージ出るけど、動くようになりました!

入れ直す前に本体と他のpluginのバージョンアップもしちゃいます。
「Yoast SEO」をインストール。再設定も必要なのね。

固定ページのプレビューに反映されなかったりや、カスタマイズが途中までしか表示されなかったりもあったけど、色々触っていたら治ってしまったので原因不明ですが、動いたので良いか。

最後に

DNSを切り替えて、リプレイス完了!
元のインスタンスは数日様子を見てから削除します。

Ansibleで設定をコード化していたので、サクッと終わりました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です