CentOS6系から7系に(KAGOYAからIndigoに)移行した際のメモ
2024/02/22
CentOS6系から7系に、さらにKAGOYAのVPSからWebARENA Indigoへ移行した。だいぶ前にCentOS8系に移行しようとして挫折したが今回は何とかなった。とはいえ色々とトラブルもあり2日間ほど時間を取られた。以下、作業内容及びトラブルに関するメモ。
Indigoに関する注意点
事前に留意しておきたい点がいくつかある。
SSH接続に関して
公式案内の通りCentOSの場合、ユーザ名は「centos」になる。「root」ではないので注意。
OSの初期化や再インストール不可
公式案内の通りIndigoはOSの初期化や再インストールはできず、インスタンスの削除後、再度インスタンスを生成する必要がある。
これの何が困るかと言うとIndigoは頻繁に在庫不足になり、インスタンスの生成が出来ないことがある。さらにはお知らせの通り1契約者あたり1日に作成できるインスタンス数を制限している。
上記によりインスタンス削除及び再生成というのは最終手段と思っておいたほうが良さそう。
スペックの変更は不可
公式案内の通りメモリ、CPU、SSD等のスペックは変更できない。
作業内容
基本的に全ての作業はrootユーザで行う。rootユーザでログインするには以下コマンドを打つ。
#rootログイン sudo su -
スワップ領域の作成
#swap設定 dd if=/dev/zero of=/swapfile bs=1M count=1024 mkswap /swapfile #設定ファイルを開く vi /etc/fstab #再起動時にswap領域が認識されるよう以下を追記 /swapfile swap swap defaults 0 0 #再起動 reboot #認識されているか確認 top
selinuxの停止
#selinuxの状態を確認 getenforce #以下が表示されていると有効状態 Enforcing #設定ファイルを書き換え vi /etc/selinux/config #変更前 SELINUX=enforcing #変更後 SELINUX=disabled
SSHの設定
#設定ファイルを開く vi /etc/ssh/sshd_config #書き換え前 #Port 22 #書き換え後 Port 7777 #許可するポートを追加 semanage port --add --type ssh_port_t --proto tcp 7777 #許可中のポートを確認 semanage port --list #再起動 systemctl start sshd
SSHクライアントソフトで接続を試しみると22ではログインNG、7777だとログインOKが確認できる。尚、7777の部分は適宜変更する。
日時設定
#日時設定 timedatectl set-timezone Asia/Tokyo #日時確認 date
apacheインストール
#yumのアップデート yum update #apacheのインストール yum -y install httpd #apacheの起動 systemctl start httpd #ステータス確認 systemctl status httpd #自動起動設定 systemctl enable httpd #自動起動確認 systemctl list-unit-files -t service | grep httpd
この時点でブラウザからIPアドレスを入力するとページが表示される。
PHPインストール
#Remiリポジトリのインストール yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm #PHPのインストール yum -y install --enablerepo=remi,remi-php74 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql #バージョンの確認 php -v
当方の環境ではバージョン7.4.19がインストールできた。
MySQLインストール
#MariaDB削除 yum -y remove mariadb-libs #リポジトリのインストール yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm #MySQLのインストール yum -y install --enablerepo=mysql80-community mysql-community-server mysql-community-devel #バージョン確認 mysqld --version #MySQLの起動 systemctl start mysqld #ステータス確認 systemctl status mysqld #自動起動設定 systemctl enable mysqld #自動起動確認 systemctl list-unit-files -t service | grep mysqld #初期パスワードを確認 cat /var/log/mysqld.log | grep 'temporary password' #以下のように表示される(xxxxxxxxxxx部分がパスワード) A temporary password is generated for root@localhost: xxxxxxxxxxx #MySQLにログイン mysql -u root -p #パスワードポリシーをLOWに変更する mysql> set global validate_password.policy=LOW; mysql> exit; #初期設定 mysql_secure_installation #MySQLユーザを追加 mysql -u root -p mysql> CREATE USER 'testuser' IDENTIFIED BY 'testpass'; #ユーザの確認 mysql> SELECT user, host FROM mysql.user; mysql> exit;
当方の環境ではバージョン8.0.26がインストールできた。
FTPサーバのインストール
#FTPサーバのインストール yum -y install vsftpd #設定ファイルを開く vi /etc/vsftpd/vsftpd.conf #FTPサーバの起動 systemctl start vsftpd #ステータス確認 systemctl status vsftpd #自動起動設定 systemctl enable vsftpd #自動起動確認 systemctl list-unit-files -t service | grep vsftpd #ユーザー作成 useradd test_user #パスワードをかける passwd test_user #ユーザーをapacheグループに入れる usermod -g apache test_user #パーミッション設定 chmod 775 /ver/www/html
ユーザ名は適宜変更する。
バーチャルホスト設定
#設定ファイルの作成 cd /etc/httpd/conf.d vi virtual.conf #以下を追記(xxxx.com部分は適宜変更する) <VirtualHost *:80> ServerAdmin xxxx.com DocumentRoot /var/www/html/xxxx.com ServerName xxxx.com ErrorLog logs/error_log CustomLog logs/access_log common </VirtualHost> #apacheの再起動 systemctl restart httpd
Let's Encryptインストール
#certbot-autoをインストール yum -y install epel-release yum -y install certbot python-certbot-apache #証明書を作成(xxxxx.comは適宜変更する。また、テストしたい場合は後ろに--dry-runをつける) certbot certonly --webroot -w /var/www/html/xxxxxxx -d xxxxx.com #その後メールアドレスを入力する #バーチャルホスト設定 cd /etc/httpd/conf.d vi virtual.conf #以下を追記(xxxx.com部分は適宜変更する) <VirtualHost *:443> ServerAdmin xxxx.com DocumentRoot /var/www/html/xxxx.com ServerName xxxx.com ErrorLog logs/error_log CustomLog logs/access_log common SSLEngine on SSLCertificateFile /etc/letsencrypt/live/xxxx.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/xxxx.com/privkey.pem NameVirtualhost *:443 </VirtualHost> #apacheの再起動 systemctl restart httpd
以上で一通り設定完了となる。
トラブル
MySQLでパスワードを変更できない
以下で初期設定をする際にパスワードが変更できなかった。
#初期設定 mysql_secure_installation
調べてみたところMySQL8系ではパスワードポリシーが厳格な為、簡単もしくは短いパスワードは受け付けないとのこと。その為、以下でパスワードポリシーを変更する必要がある。
mysql> set global validate_password.policy=LOW;
もちろん厳格なパスワードポリシーに従ってパスワードを設定するのが正攻法だとは思うが、移行前のパスワードを変更した場合、影響範囲が広く時間がかかりそうな為、今回は上記手段を取った。
MySQL設定ファイル編集時にエラー
過去記事を参考にMySQL設定をしたもののエラーが発生し、MySQLが起動しなくなった。調べてみたところMySQL8系ではクエリーキャッシュのサポートが終了している模様。その為、クエリーキャッシュ関連の設定を記述した場合にエラーとなる。
バーチャルホスト設定関連
CentOS6系の時はapache2.2だったが、今回のCentOS7系ではapache2.4にバージョンアップしていた。その影響か以前だとバーチャルホスト設定は以下で対応できたが、apache2.4ではエラーが発生した。
#↓↓コメントアウト付いている場合は外す NameVirtualHost *:80 #↓↓下記を追記 <VirtualHost *:80> ServerAdmin domain.com DocumentRoot /var/www/html/domain.com ServerName domain.com ErrorLog logs/error_log CustomLog logs/access_log common </VirtualHost>
「NameVirtualHost *:80」の記述は不要という点と、バーチャルホスト設定は「/etc/httpd/conf.d/xxxxxxx.conf」というファイルを作成し、そちらに記述していく必要があるとのこと。
Let's Encryptインストール時のエラー
エラーの原因はBasic認証がかかっているサイトに対してLet's Encryptを導入しようとした、というしょうもないことだけど短期間で何度も同様のエラーを発生させてしまい、Let's Encrypt側のレート制限にひっかかってしまった。作業内容部分にも書いたが以下の通りテストしてから、本番実装した方が安全。
certbot certonly --webroot -w /var/www/html/xxxxxxx -d xxxxx.com --dry-run
テストでOKが出れば基本的には本番でもOKが出る。
WordPressの「DB Cache Reloaded Fix」プラグインでエラー
WordPressのサイト側及びダッシュボード側どちらも真っ白なページが表示されるというエラーが発生し、エラーログを追うと「DB Cache Reloaded Fix」が怪しい。また、調べてみるとPHP7系は未対応とのこと。
まずMySQLにログインし、以下でプラグインを全て無効化した。
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
さらに「wp-content」ディレクトリ直下にあるdb.phpの「--- DB Cache Start ---」以下を全てコメントアウトすることで改善された。
WordPressの「Crayon Syntax Highlighter」プラグインでエラー
WordPressにて「サイトに重大なエラーがありました」とあまり見かけないエラーメッセージが表示されており、エラーログを追うと「Crayon Syntax Highlighter」プラグインが怪しい。また、調べてみるとPHP7系で発生するものらしい。
エラー対象ファイルを書き換えるのも良いが該当プラグインを削除後、以下を手動インストールする形で対応した。
https://github.com/Crunchify/crayon-syntax-highlighter/releases
所感
CentOS
こちらの記事を見たところCentOS7系は「2024/06/30」までサポート期間がある為、当面は移行作業等は無いようで一安心。
MySQL
クエリキャッシュが使えなくなった点が衝撃的だった。負荷対策や高速化の面で頼りにしていたので非常に困る。
Indigo
KAGOYAから移行する形となり、月額料金が約半額近くになった。以前書いたとおり障害やメンテナンスの頻度が気になるので、1ヶ月ほどは元に戻せるようKAGOYAのデータも置いておく。
関連記事
-
CentOS7系にLEMP環境(Linux + Nginx + MySQL + PHP)を構築
先日KAGOYAのVPSからIndigoに移行した際にCentOS6から7へバー ...
-
VPSに無料SSLのLet's Encryptを導入
SSLといえば有料という認識だったが、無料のものも出てきているという話を聞いた。 ...
-
AlmaLinux8.6にLAMP環境&WordPressを構築する方法
だいぶ前にCentOS6系から7系に移行したが、7系も2024/6/30にサポー ...