Exmentのサーバーを移行するメモ
ConoHa VPS 2GからConoHa VPS 2Gに移行した時のメモ
Ubuntu22からUbuntu24への移行をしました。
サーバーのアップグレードでも行けますが管理パネルを新しい奴に変えたかったのでVPSを立て直しました。
バックアップからリストアって方法もあるけどこの方法がエラーもなくたぶん確実?
リストアは格納データによっては失敗するので定期的にデータとDBのバックアップは取得してたほうがいいです。
SynologyでクラウドバックアップとってますがSynologyは神
新しいサーバーで環境を構築する
NginxやFPMは今回のメモから除外してます。
初期の移行で必要な物だけ
アップデートする(必要なら)
sudo apt -y update
sudo apt -y upgrade
MariaDBインストール
MySQLを使いたい方はそちらをインストール
sudo apt -y install mariadb-server
sudo mysql_secure_installation
PHP8.2をインストールする
最新版を取得します
sudo add-apt-repository ppa:ondrej/php
sudo apt -y install php8.2
Exmentで必要な拡張等のモジュールの追加
sudo apt install -y php8.2-fpm php8.2-gd php8.2-dom php8.2-bcmath php8.2-mbstring php8.2-xml php8.2-zip php8.2-curl php8.2-mysql unzip
php8.3をインストールする(対応していない為、今後用)
sudo add-apt-repository ppa:ondrej/php
sudo apt -y install php8.3
sudo apt install -y php8.3-fpm php8.3-gd php8.3-dom php8.3-bcmath php8.3-mbstring php8.3-xml php8.3-zip php8.3-curl php8.3-mysql unzip
Apache2を削除する
PHPについてきますがNginxを使うので削除
sudo apt remove apache2
空のデータベースを作成する
DBファイルをインポートするので空のDBを作成しておく必要あり
sudo mysql
パスワードを入力だけは必ず変更
db名等にこだわりがあるか移行前に合わせてください。
db名、ユーザー名、パスワードを移行前と同じにしとけばenvの編集もいらないです。
create database exment_database;
grant all privileges on exment_database.* to exment@'localhost' identified by 'パスワードを入力';
flush privileges;
exit
新サーバーにExmentようのフォルダを作成しておく
前のサーバーと合わせておくとわかりやすいので調整してください。
rsyncでエラーがでる可能性があるの旧サーバーから接続するユーザー名にフォルダ権限を変更
userは変更してください。
sudo mkdir -p /var/www/exment
sudo chown -R user:user /var/www/exment
旧サーバーにて
メンテナンスモードへ移行する(推奨)
データの整合性をとるために念のためメンテナンスモードに入れる
昔はメッセージ入れらたんだけどね
/adminにurlを強制的にとばしているせいでどちらにしろ見れなかった(たぶん503エラーが表示)
sudo php artisan down --retry=60
解除するときは
sudo php artisan up
バージョン指定がいる場合
phpが複数入っている場合は忘れずに
sudo php8.2 artisan down --retry=60
データを移行する
rsyncを使います。
今まで使用してたサーバーから新しいサーバーに向けて実行します
認証鍵の場合
コマンドは旧サーバーから実行する必要があります。
鍵ファイルは一時的に旧サーバーに転送してください。
ユーザー名@新サーバーIPは確実に変更してください。例(momijiina@192.168.1.150)
さっき作成したフォルダに転送するのでさっきの例ならuser@192.168.1.150を使います
exmentフォルダの中身を転送するのでexment/を指定しています。
sudo rsync -avz --delete -e "ssh -i /path/to/your/private_key -p 22" /var/www/exment/ ユーザー名@新サーバーIP:/var/www/exment/
Are you sure you want to continue connecting (yes/no/[fingerprint])? と聞かれますyesにすると次回から聞かれません パスフレーズを設定している場合はパスフレーズ入力を求められます。(パスワード認証の場合も)
パスワードの場合
コマンドは古いサーバーから実行する必要があります。 ユーザー名@新サーバーIPは確実に変更してください。例(momijiina@192.168.1.150)
sudo rsync -avz --delete -e "ssh -p 22" /var/www/exment/ ユーザー名@新サーバーIP:/var/www/exment/
Are you sure you want to continue connecting (yes/no/[fingerprint])? と聞かれますyesにすると次回から聞かれません
パスフレーズを設定している場合はパスフレーズ入力を求められます。(パスワード認証の場合も)
DBを移行する
旧サーバーでバックアップ
ここもユーザー名(exment),パスワード(password),データベース名(exment_database)とgzip保存先は調整、変更してください。
sudo mysqldump -u exment -p'password' exment_database \
--single-transaction \
--routines \
--events \
--hex-blob \
--default-character-set=utf8mb4 \
| gzip > /var/backups/exment/db/exment_db_$(date +\%F_\%H-\%M-\%S).sql.gz
gzipで新サーバーにて解凍してデータベースへ
手段(scp,ftp)は何でもいいのでバックアップDBを新サーバーへ
解凍する
sudo gzip -d exment_db_xxxx.sql.gz
DBを取り込む
データがたくさんあると5分くらいかかるかも。
sudo mysql -u exment -p exment_database < exment_db_xxxx.sql
取り込みでエラーが出る場合
エラーがでるならrootで取り込んだ方がいいです。
私はでましたね
エラー例(ERROR 1227 (42000) at line 5028: Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation)
もしrootでやっても駄目ならdb削る作業がいります。
sudo mysql -u root -p exment_database < exment_db_xxxx.sql
フォルダの権限を変更(転送完了後)
転送が完了したらWebサーバーと同じ権限ユーザーに
sudo chown -R www-data:www-data /var/www/exment
他に必要なこと(自分用)
通常インストールと同様にnginxの設定やcomoser,phpのインストール設定
Exmentを旧バージョンにする(ダウングレード)
composer require exceedone/exment=v6.2.0
php artisan exment:update
さらにphpのバージョンを指定するメモ
php8.2 $(which composer) require exceedone/exment=v6.2.0
php8.2 artisan exment:update
最新版に戻す
composer require exceedone/exment
php artisan exment:update
さらにphpのバージョンを指定するメモ
php8.2 $(which composer) require exceedone/exment
php8.2 artisan exment:update