自分が運営しているウェブサーバーを「さくらVPS」から「Xserver」へ移転しました。
サーバー移転の理由
移転の主な理由をピックアップします。
- 「さくらVPS」の年間契約の期間終了が間近であったため
- VPSでの構築ウェブサーバーが不安定化してきたため
- VPSにこだわる理由がないため
- 「Xserver」でWordpressはもちろん、Laravelも動作可能なため
- 「Xserver」でコストカットできる上、オトクなキャンペーンも実施していたため
「さくらVPS」の年間契約の期間終了が間近であったため
私は「さくらVPS」を2012年から使ってきました。
当時は「さくらのVPS(v3) 2G」を契約していて、その後、ウェブとデータベースを分けるため「さくらのVPS(v3) 1G」の追加契約をしました。
そのサービスを解約した後も、「さくらのVPS(v4) SSD 4G TK02」「さくらのVPS(v4) HDD 2G TK02」を契約して継続して「さくらVPS」を使い続けてきました。
その年間契約も7月末で期限を迎えるため、今回別のサーバーを探す事を考えてました。
VPSでの構築ウェブサーバーが不安定化してきたため
ここ最近、ウェブサーバーがダウンする事がしばしばありました。
さくらのサービス「ダウン検知」を見れば、1週間に1回あるかないかで、スワップを使い尽くしてウェブサーバーにアクセスできない状況が発生しています。
私自身のapacheの設定方法にも問題があるかもしれませんが、色々試行錯誤しましたが、最終的な改善ができませんでした。
SSDが主流な時代、HDDでスワップを取っている事や、その上でウェブサーバーとデータベースサーバーを2台契約している事が、リソースの配分として間違っている事もあるかもしれません。
現に、SSDで運用されているデータベースサーバーは、ほとんどリソースを使っていませんでした。
設定だけでは解決できない事態かもしれないので、契約終了を契機に変えようと考えてました。
VPSにこだわる理由がないため
「さくらVPS」を使う前は、DTIの低価格で使える「ServersMan@VPS」を使ってました。
ところが、現在では知りませんが、2011年に契約した当時、かなりリソース不足などもあって、ウェブの運用に向きませんでした。
「さくらVPS」に変えてからは安定しましたが、別にVPSでなければいけない理由は特にありませんでした。
root権限で操作し、自由なパッケージを組みたいという思いは、元々サーバー管理者をしていたのでありましたが、一方で現在では、ウェブサイトを運用できればそれでいいので、VPSのメリットよりも、デメリットであるソフトウェアの管理、チューニングが自分にとって負担になっていました。
そこで、今回はレンタルサーバーを選ぶ事にしました。
「Xserver」でWordpressはもちろん、Laravelも動作可能なため
私が目をつけたレンタルサーバーは「Xserver」です。
評判が上々だった所と、安定性や運用実績を重視しました。
また、人気の「WordPress」はもちろんの事、PHPフレームワークの「Laravel」も動作するとの事だったので、移転に支障が無い事が分かりました。
「Xserver」でコストカットできる上、オトクなキャンペーンも実施していたため
「Xserver」のデメリットに、他のレンタルサーバーと比べて料金が割高という記事がありました。
確かにそうかもしれませんが、私が元々、「さくらVPS」を運用していた時は、2台で年間4万円近く掛かってました。
流石に私の規模のサイトではお金掛けすぎです😅
しかし安定性が見込める「Xserver」では、一番安いスタンダードプランを36ヶ月契約で月額990円になる上、6月16日までに申し込めが、半額キャッシュバックキャンペーンもやっていました。
3年契約で38,940 円の上、半額が戻ってきます。
しかもリソース保証は、私の契約していた「さくらVPS」のプランのリソースよりも多いです。
こうした点も決め手になりました。
移転をする上でやった実施した事
★「Xserver」のスタンダードプラン契約
当たり前ですが、まずは「Xserver」で契約します。
お試し期間が10日間あり、少し短く感じる人もいるかもしれませんが、その前に全ての移行をして、本当に運用に問題ないかチェックから始めました。
支払情報を登録すれば本契約になります。
★SSH公開鍵認証を設定
ブラウザから、「Xserver」のコントロールパネルのメニューより、公開鍵を生成しました。
メニューにある「アカウント」>「SSH設定」>「公開鍵認証用鍵ペアの生成」より作成できます。
余談ですが、レンタルサーバーと言えば、私のイメージは20年近く前の、FTPでアップするイメージが強い分、コントロールパネルでSSHキーを生成してコンソール操作できるようになっているとは、知ってはいたけど、改めて使ってみるとスゴイという印象です😊
★データベースの設定
こちらもコントロールパネルから設定しました。
「データベース」>「MySQL設定」より、データベースの作成と、データベースユーザーを作成し、データベースへのアクセス権を設定します。
メニューでは「MySQL」となってますが、データベースは「MariaDB」です。
元々、MariaDBを使っているで全く問題ありません。
データベースのインポート
データベースを設定すれば、コントロールパネルの「phpmyadmin(MariaDB10.5)」からインポートできます。
もちろんコマンドからインポートも可能です。
私はSSHでサーバーに接続して、コマンドでインポートしました。
移転元(さくらVPS)からエクスポート
mysqldump --single-transaction -u <DBユーザー名> -p <データベース名> > <エクスポートファイル名>.sql
エクスポートSQLの編集
そのまま移転先にインポートすると問題がある箇所がありました。
ユーザー名や、データベースの接続先が異なる箇所などです。
viエディタで置換しました。
:%s/CREATE ALGORITHM=UNDEFINED/ALTER ALGORITHM=UNDEFINED/g
:%s/DEFINER=`<移転元ユーザー名>`@`<移転元のDB接続先アドレス>`/DEFINER=`<移転先ユーザー名>`@`<移転先のDB接続先アドレス>`/g
移転先(Xserver)へのインポート
mysql -u <DBユーザー名> -p -h localhost <データベース名> < <インポートしたいエクスポートファイル名>.sql
インポートエラーについて
インポートしたら、一部でエラーが発生しました。
ERROR 1146 (42S02) at line 60105: Table 'xserverDB.da_table' doesn't exist
これはviewの箇所でした。
この部分のSQLを削除し、インポート後にviewを発行するSQLを実行しました。
プロシージャを設定
プロシージャまで復元できませんでしたので、こちらも再発行しました。
ただ、なぜかSQLでの発行が上手くできなかったので、「phpmyadmin」から入力して再発行しました。
★vimのインストール
絶対必要というわけではないですが、使いやすいのでvimをインストールしました。
mkdir ~/opt && cd $_
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.3.tar.gz
tar zxfv ncurses-6.3.tar.gz
cd ncurses-6.3
./configure --prefix=$HOME/local
make
make install
cd ~/opt
git clone https://github.com/vim/vim.git
cd vim
./configure --with-features=huge --enable-fail-if-missing --prefix=$HOME/local --with-local-dir=$HOME/local
make
make install
vi ~/.bashrc
viコマンドでvimを実行するため、以下の「.bashrc」に追記します。
# .bashrc に下記行を追加
export PATH=$PATH:$HOME/local/bin
alias vi='vim'
コマンドの設定を反映させます。
source ~/.bashrc
<参考>
★Laravelを動作させる準備
PHPのバージョン変更
PHPのバージョンを確認すると、古いバージョンになっていると思います。
php -v
2022年5月現在で、「Xserver」でPHPは5系列、7系列、8.0系列が使えます。
PHP8を使おうかと考えましたが、ただでさえ移転におけるトラブルが発生する可能性があるため、その際に問題の切り分けがややこしくなるため、移転前と同じバージョンにする事にしました。
ln -s /usr/bin/php7.4 $HOME/bin/php
ls -la $HOME/bin/
vi .bash_profile
source .bash_profile
php -v
これで「PHP 7.4.28 (cli) (built: Mar 11 2022 17:05:41) ( NTS )」となっていれば切り替えOKです。
Composerのバージョンアップ
「Laravel」を使うには「composer」が必要です。
ただこちらのバージョンを確認すると古いです。
composer -V
Composer version 1.10.22 2021-04-27 13:10:45
よってアップデートします。
「Composer」の公式サイトより、以下のインストールコマンドが確認できますので、最新のコマンドを使います。
php -r ""copy('https://getcomposer.org/installer', 'composer-setup.php');""
php -r ""if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;""
php composer-setup.php
以下が表示されればOKです。
All settings correct for using Composer
Downloading...
Composer (version 2.3.5) successfully installed to: /home/*****/composer.phar
Use it: php composer.phar
後はセットアップ用のファイルをunlinkします。
php -r ""unlink('composer-setup.php');"""
続いてダウンロードしたComposerリネームして移動します。
mkdir -p $HOME/bin
mv composer.phar $HOME/bin/composer"
今度はpathを追加します。
vi ~/.bashrc
# 「.bashrc」に以下を追記する
export PATH=$HOME/bin:$PATH"
source ~/.bashrc
設定を反映させ、再びバージョン確認をしてアップデートされていればOKです。
source ~/.bashrc
composer -V
Composer version 2.3.5 2022-04-13 16:43:00"
<参考>
★DNS変更:お名前.com
ドメインのDNSを変更します。
私は「お名前.com」よりドメイン取得してますので、お名前.comのDNS設定を変更します。
本当は「Xserver」で完全にウェブの設定をした後の方が良かったのですが、「Xserver」にてSSL設定をする際に、DNSレコードが「Xserver」に向いてないと設定できないので、とりあえず複数ある移転サイトの内、1つを変更しました。
サイト移転が完了したら、残りサイトは順次切り替えていきました。
DNSレコードは、基本的にはAレコードを契約した「Xserver」のグローバルIPアドレスに変更すればOKです。
ちなみ、移転が分かっている場合は、事前にTTL(そのレコード設定が有効な時間)を短くしてあげる事で、多少変更の反映がスムーズに理論上はいくはずです。
★ドメイン設定:Xserver
コントロールパネルより、「ドメイン」>「ドメイン設定」からドメインを追加します。
続いて、そのドメインのサブドメインも「ドメイン」>「サブドメイン設定」から追加します。
更にSSLの自動証明書を取得するため「ドメイン」>「SSL設定」から設定します。
ドメイン設定トラブル
ドメイン設定でいくつかのトラブルがありました。
①サイト設定の反映に時間がかかる
サブドメインを設定するれば、サーバー上で公開ファイルの設置が可能です。
しかし設置しても、直ぐには反映されず、エラーが表示されました。
恐らくですが、レンタルサーバーなので、ウェブサーバーのサービスを定期的に反映させているのでは?と思いますので、多少待つ必要があります。
②「このウェブスペースへは、まだホームページがアップロードされていません。」
これは先程と同じエラーメッセージですが、実はこれに結構ハマりました。
これは時間が経っても同じままでした。
しかも原因はとても単純でした。
何と「Xserver」で初期に生成されるファイル「index.html」であり、移転前のウェブファイルをごっそりその場所にコピーした際、それが「index.php」だったため、ファイルが上書きされず、表示の優先が「index.html」だったため、ずっと表示されてました。
これは盲点でした😅
③DNSレコードが「Xserver」に設定されていない
1つは、前述の通り、DNSレコードが「Xserver」に設定されていない場合はエラーになります。
またDNSレコードが反映されたとしても、DNSレコードが全世界で書き換わるのに理論的には最大で3日ほどかかるので、しばらくは待つ必要もでてきます。
④サイト転送設定がエラーになる
エラー画面の注意書きにもありますが、対象ドメインが転送設定されている場合、エラーになります。
私は「Xserver」にて転送設定してませんでしたが、.htaccessにてSSLの転送設定している事を思い出しました。
こちらを一旦無効にしたら成功しました。
★WordPressとLaravelを移転する
後は移転元のファイルを移動する、もしくはGitHub上からgit cloneすれば完了です。
これについての詳細は、後日の記事にまとめます。
コメント