リプレイスは何度かした事がありますが、備忘録と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をバージョンアップすれば直ると下記に書いてありましたが、
管理画面も表示できないので、一旦、外しました。
# cd /usr/share/nginx/wordpress/wp-content/plugins # mv wordpress-seo ~/
メッセージ出るけど、動くようになりました!
入れ直す前に本体と他のpluginのバージョンアップもしちゃいます。
「Yoast SEO」をインストール。再設定も必要なのね。
固定ページのプレビューに反映されなかったりや、カスタマイズが途中までしか表示されなかったりもあったけど、色々触っていたら治ってしまったので原因不明ですが、動いたので良いか。
最後に
DNSを切り替えて、リプレイス完了!
元のインスタンスは数日様子を見てから削除します。
Ansibleで設定をコード化していたので、サクッと終わりました。