勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

CentOS6系から7系に(KAGOYAからIndigoに)移行した際のメモ

   2024/02/22  VPS サーバー

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のデータも置いておく。

 - VPS サーバー

  関連記事

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にサポー ...