現在のVPS(Linode、Rackspace、AWS EC2)をDigitalOceanに移行します
序章
VPSプロバイダー間の移行は、困難な作業のように思えます。 DigitalOceanと同様に、LinodeやRackspaceなどの他のVPSプロバイダーがルートアクセスを提供します。 これにより、必要なすべてのファイルを新しいDigitalOceanVPSに転送できます。
このガイドでは、簡単なWordPressブログをLinodeからDigitalOceanクラウドサーバーに転送する方法を示します。
どちらのインスタンスもUbuntuを実行します。 これらの手順は、他のプロバイダーから他のサービスを移行するように適合させることができます。
両方のVPSインスタンスでrootとして機能します。
赤の意味
このチュートリアルでは、ユーザーが入力またはカスタマイズする必要のある行は赤になります。 残りはほとんどコピーアンドパスタブルである必要があります。
予備的なDigitalOceanクラウドサーバー構成
ランプの取り付け
まず、DigitalOceanクラウドサーバーにLAMP(Linux、Apache、MySQL、PHP)スタックをインストールする必要があります。 これは、いくつかの異なる方法で実行できます。
UbuntuでLAMPを起動して実行する最も簡単な方法は、最初にドロップレットを作成するときに、事前構成された「LAMPonUbuntu」イメージを選択することです。 ドロップレット作成ページの[画像の選択]部分で、[アプリケーション]タブを選択します。 「Ubuntu14.04のLAMP」を選択します。
使用したいドロップレットがすでにある場合は、このリンクをたどってLAMPスタックをUbuntuにインストールできます。
Rsyncのインストール
sshとrsyncを使用してファイル転送を行います。 次のコマンドを使用して、rsyncがDigitalOceanVPSにインストールされていることを確認します。
rsync --version
このコマンドが「コマンドが見つかりません」というメッセージを返す場合は、apt-getを使用してrsyncをインストールする必要があります。
apt-get install rsync
VPSサーバー間の通信
次の手順は、古いVPSで実行されます。 まだの場合は、rootとしてログインします。
古いVPSにもrsyncをインストールする必要があります。 このシステムでrsyncのチェックを再実行します。
rsync --version
必要に応じて、rsyncをインストールします。
apt-get install rsync
以前のVPSからDigitalOceanクラウドサーバーに関連情報を転送するには、rsyncが古いサーバーから新しいサーバーにログインできる必要があります。 これを行うためにSSHを使用します。
古いVPSでSSHキーを生成していない場合は、次のコマンドを使用してSSHキーを作成します。
ssh-keygen -t rsa -b 4096 -v
必要に応じてプロンプトに答えます。 すべてのプロンプトで「Enter」を押して、デフォルト値を受け入れてください。
次に、次のコマンドを使用してSSHキーを新しいVPSに転送します。 DigitalOcean VPS IPアドレスを反映するように、redの部分を変更します。
ssh-copy-id 111.222.333.444
サイトファイルの転送
まず、古いサーバーのWebルートにあるファイルを新しいクラウドサーバーに転送します。 構成ファイルを調べることで、WordPressWebルートがどこにあるかを見つけることができます。 サイトが有効なディレクトリを調べて、正しいVirtualHostファイルを見つけます。
cd /etc/apache2/sites-enabled ls
li606-185.members.linode.com
ここでは、私たちのファイルは「li606-185.members.linode.com」と呼ばれていますが、あなたのファイルは何か違うかもしれません。 nanoでファイルを開きます。
nano li606-185.members.linode.com
Webコンテンツが提供されているディレクトリを示す「DocumentRoot」行を探しています。 この例では、次の行があります。
DocumentRoot /srv/www/li606-185.members.linode.com/public_html/
ファイルを閉じて、そのディレクトリにcdします。
cd /srv/www/li606-185.members.linode.com/public_html/
ls -F
latest.tar.gz wordpress/
ご覧のとおり、WordPressサイトのディレクトリがあります。 これには、当サイトのすべてのWebコンテンツが含まれています。
このディレクトリ全体を、そのアクセス許可とサブディレクトリとともに、この場所からDigitalOceanクラウドサーバーのWebルートに転送します。 デフォルトでは、Ubuntu 14.04のapache2は、「/ var / www / html」からコンテンツを提供するため、このコンテンツを配置します。
正しく転送するために、rsyncにいくつかのオプションを追加します。 「-a」オプションはアーカイブを表します。これにより、権限や所有権などの基盤となるファイルプロパティの多くを保持しながら、再帰的に転送できます。
また、詳細出力には「-v」フラグを使用し、転送の進行状況を示し、転送の問題が発生した場合にrsyncを再開できるようにする「-P」フラグを使用します。
rsync -avP wordpress 111.222.333.444:/var/www/html/
「wordpress」の後にnoの末尾のスラッシュがありますが、「/ var / www /html/」には
これで、WordPressディレクトリ構造全体が新しいクラウドサーバーのWebルートに転送されました。
この時点で、Webブラウザを新しいクラウドサーバーのIPアドレスに誘導し、WordPressサイトにアクセスしようとすると、MySQLエラーが発生します。
111.222.333.444/wordpress
Error establishing a database connection
これは、WordPressがまだ転送されていないMySQLデータベースにデータを保存しているためです。 次にMySQL転送を処理します。
MySQLデータベース転送
MySQLデータベースを転送する最良の方法は、MySQLの内部データベースダンプユーティリティを使用することです。 まず、ダンプする必要のあるデータベースを確認します。 MySQLにログインします:
cd mysql -u root -p
続行するには、データベース管理者のパスワードを入力してください。 次のコマンドを使用してMySQLデータベースを一覧表示します。
show databases;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | wordpress | +--------------------+ 3 rows in set (0.00 sec)
サイト情報を含む「wordpress」データベースと、すべてのユーザー情報などを転送する「mysql」データベースを転送したいと思います。 「information_schema」は単なるデータ構造情報であり、それを保持する必要はありません。
次のステップで転送するデータベースを把握します。 MySqlを終了します。
exit
「mysqldump」を使用してデータベース情報をダンプしてから、「bzip2」を使用して圧縮します。 データベースをクリーンにインポートするために、いくつかのパラメーターを使用します。 redをデータベース名に置き換えます。
mysqldump -u root -p -QqeR --add-drop-table --databases mysql wordpress | bzip2 -v9 - > siteData.sql.bz2
繰り返しますが、続行するにはデータベース管理者のパスワードを入力してください。
これで、新しいクラウドサーバーに転送できるzip形式のデータベースファイルができました。 再びrsyncを使用します。 DigitalOceanサーバーのIPアドレスを反映するようにIPアドレスを変更します。
rsync -avP siteData.sql.bz2 111.222.333.444:/root
データベースのインポート
データベースファイルは圧縮され、新しいDigitalOceanクラウドサーバーに転送されます。 WordPressが利用できるように、新しいサーバーのMySQLにインポートする必要があります。
次の手順では、rootとしてDigitalOceanクラウドサーバーにログインします。
データベースファイルがrootユーザーのホームディレクトリに転送されたので、今すぐそのディレクトリに移動します。 「bunzip2」を使用してファイルを解凍します。
cd /root bunzip2 siteData.sql.bz2
これで、ファイルを新しいMySQLデータベースにインポートできます。
mysql -u root -p < siteData.sql
MySQLが正しくインポートされたことを確認しましょう。
mysql -u root -p show databases;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | wordpress | +--------------------+ 5 rows in set (0.00 sec)
ご覧のとおり、「wordpress」データベースが存在します。 以前の「mysql」データベースは、古いVPSのものに置き換えられました。
MySQLを終了します。
exit
次に、データベースとサーバーを再起動します。
service mysql restart service apache2 restart
ここで、DigitalOcean VPSIPアドレスに続いて「/wordpress」に移動すると、以前は古いVPSでホストされていたWordPressサイトが表示されます。
111.222.333.444/wordpress
最終的な考慮事項
ドメイン名を変更して新しいサイトの場所を指すようにする前に、セットアップを広範囲にテストすることが重要です。
古いVPSで実行されていたサービスを参照してから、それらの構成ファイルを確認することをお勧めします。 ログインして次のように入力すると、古いVPSで実行されていたサービスを確認できます。
netstat -plunt
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 13791/mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 10538/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 13963/master tcp6 0 0 :::80 :::* LISTEN 13771/apache2 tcp6 0 0 :::22 :::* LISTEN 10538/sshd udp 0 0 0.0.0.0:68 0.0.0.0:* 2287/dhclient3
ここでは、新しいサーバーで構成するサービスを最後の列に表示できます。 あなたのリストはおそらく異なるでしょう。
各サービスには独自の構成構文と構成場所があるため、ケースバイケースでドキュメントを確認する必要があります。
例として、SSHデーモンの構成を新しいVPSに複製する場合は、rsyncを使用して構成ファイルを新しいVPSのホームディレクトリに転送できます。
rsync -avP /etc/ssh/sshd_config 111.222.333.444:/root
ファイルを転送した後、デフォルトのファイルを古いVPSのファイルに単純に置き換える必要はありません。
プログラムのバージョンが異なると、構文が変更される可能性があります。 古いVPSに固有の設定オプションからも問題が発生する可能性があります。 ホスト名、IPアドレス、またはファイルパスを参照するオプションは、新しい設定を反映するように変更する必要があります。
必要に応じて新しいクラウドサーバー’のネイティブ構成ファイルを調整できるように、ファイルのdiffを作成する方が安全です。
2つのファイルの違いを示すことができるさまざまなプログラムがいくつかあります。 1つは単純にdiffです。
diff /root/sshd_conf /etc/ssh/sshd_config
これにより、2つのファイル間のすべての違いのリストが作成されます。 違いを調べて、それらを考慮に入れることができます。 古い設定から組み込みたい構成オプションもあれば、変更または破棄したい構成オプションもあります。