これまで、数年間ロリポップにお世話になってきたが、WordPressがとても遅くてイライラしてきたので、思い切ってエックスサーバーへ引っ越すことにした。ロリポップでは、ライトコースだったので、確かにPHPが遅く、スタンダードへ変更すれば、PHPのモジュール化の対応で若干高速になるかも、、とは思ったが、評判を見て、多少金額が高いが、エックスサーバーへの移行を決めた。
契約は3年、月900円のX10プランで契約した。
目次
ブログの引っ越し
ロリポップからのエクスポート
エックスサーバーに用意されているwordpress引っ越しツールを使おうとしたが、この時点では、5以降のwordpressからの引っ越しは対応していないらしく、諦めた。
他のツールとして、全部まるごとコピーする方法で、とても便利なプラグインが在ることがわかった。All-in-One WP Migrationというプラグインで、手順としては、以下を行った。
- ロリポップ側のWordPressにAll-in-One WP Migrationプラグインをインストールし有効化
- このプラグインを使って、ロリポップ側の全投稿、テーマ、ユーザー情報等を全てファイルに保存する。(barcelona.lomo.jp-wp-20190108-004932-656.wpressというファイルが出来た) このファイルの大きさは160Mbyte程度。
エックスサーバーへのインポート
- エックスサーバー側のWordPressにも、同じくAll-in-One WP Migrationプラグインをインストールして有効化
- このプラグインのインポートを選択する。
- 残念ながら、ディフォルトのままでは、アップロード出来るファイルのサイズ制限に引っかかって、160MBのファイルはインポート出来ない。
- 最大サイズを変更するために、エックスサーバーのサーバーパネルから、php.iniの設定を変更する。
- ドメインを選択して、「php.ini設定変更」タブを選び、下の方にあるいくつかのパラメーターを大きく変更する。
- これらを、160MByteを超える大きさに設定する(今回は、post_max_sizeを200M, upload_max_filesizeを200M, 念のために、Memory_limitや execution_time, input_timeも10倍程度拡大した)
- 設定を確定してから、WordPressのダッシュボードに戻り、再度、プラグインからインポートを起動すると、設定した通り、uploadの最大値が 200MBに変更されている。
- ロリポップからエクスポートしたファイルを、設定して、インポートを実行する
- インポートが終わったら、先程設定したファイルサイズの上限等のphp.iniの設定を、もとに戻しておく。
これで、基本的にはロリポップの全ての情報が、インポートされた事になるので、サイトを表示して確認する。
とりあえず、これで、WordPressのブログだけは、ロリポップから引っ越し出来た。
Wikiの引っ越し
次はWikiの引っ越し。
PukiWikiには、データベースは使われておらず、全てファイルのコピーで引っ越しできると記載があったので、ロリポップ側のWikiディレクトリの内容を全て、エックスサーバー側のWikiディレクトリへコピーする事とする。
ロリポップからのエキスポート
WordPressのような気の利いたツールは無いようなので、FTPでコピーする事にする。試しに、そのままFTPソフトでローカルのPCにフォルダまるごとコピーしてみようとトライしてみたが、あまりにも遅くて最後まではいきつきそうに無い。また、ファイルの生成日付等もおかしくなってしまうので、別の方法を取る(tarでフォルダを圧縮してからコピーする方法
SSHでログインできない・・
現在加入しているロリポップは、ライトプランなので、なんと、SSHでのログインが許されていない。ということは、tarで圧縮することもできなさそう。一応、FTPのツール(ffftpとか)で、圧縮してコピーするようなメニューが用意されていないか、見てみたがなさそう。
仕方が無いので、スタンダードの契約に変更する
離脱しようとしているロリポップの契約を、アップグレードするのは、とても口惜しいが、仕方がない。2700円払って、残りの10ヶ月をスタンダードプランで契約することにする。ロリポップのページでプラン変更を選び、銀行振込を選択する。 あとは、振込が確認された後に、スタンダードになると思うので、そのあと、SSH接続を試みる。
tarで、wikiディレクトリ以下を圧縮
振込が確認され、スタンダードプランに切り替わったのを確認してから、まず、ロリポップのユーザーページへ入り、SSH接続を有効にする。有効にすると、接続のためのサーバー情報が得られる。
この情報を使い、TeratermのSSHを使ってロリポップにログインする。ロリポップは、SSHのパスワード認証が認められているので、ログインは単純。
正常にログイン出来たら、ルート直下にある、wikiのフォルダを丸ごと、tar圧縮する。
1 2 3 |
$ cd $ tar -cvf wiki.tar wiki $ |
これで、wiki.tarというファイルが出来る。今回はファイルが少ないため、これで問題ないが、ファイルが多い場合は、tar –cvzf として、圧縮率を上げたほうが良いかもしれない。
次に、ロリポップサーバーの FTPツールを開いて、先程圧縮したtarファイルを、ローカルPCにダウンロードする。
エックスサーバーへのインポート
次は、エックスサーバのファイルマネジャーを開き、先程PCに落とした wiki.tarファイルを、エックスサーバーの public_html直下にコピーする。
次に、TeratermのSSHで公開鍵認証方式を使って、エックスサーバーへログインする。
エックスサーバーに公開鍵認証方式でSSH接続するためには、SSH設定をして秘密鍵をPCに保存し、Teratermで接続する前に、その秘密鍵をSSHに設定する必要がある。その設定に関しては、他を参照(こことか・・・。Teratermへの設定はここ。)
その後、サーバー名とポート番号を指定し、SSHでサーバーに接続を試みると、
次の画面で設定したパスフレーズを入力して、ログインが出来る。
xxx.xsrv.jp/public_html に移動し、そこに wiki.tarが有るのを確認した後、tar –xvf wiki.tarを実行すると、public_htmlの直下に wikiディレクトリが生成され、その中に全てのファイルが解凍される。
この状態で、wikiに必要なファイルは、全部あるはずだから、ブラウザからWikiが表示できるか試してみる。
すると、エラーが出た・・・(涙)
どうも、func.phpの記述に問題があるらしい。このファイルは自分の作ったファイルでは無いが、ネットで調べてみると、どうも原因は、phpのバージョンの違いによるものらしい。(最初は、pukiwikiのバージョンの違いが原因かとも考えたが、php起因らしい。ちなみに、ロリポップの phpは、5.3 (CGI版)で、エックスサーバー側は、7.0.30(執筆時点) 。
func.phpのエラー発生行にある、&new の記述が怪しいと思い、&を取ってみた(意味もわからないまま・・・)ところ、このエラーは出なくなったが、wikiのトップページが、真っ白画面のまま、何も表示されなかった。 やはり、安易な修正では駄目(あたりまえ)
PukiWikiを PukiWikiとして、エックスサーバーへ引っ越すのは諦めた
その後、色々試してみたが(エックスサーバーでWikiを簡単インストールしてからコピーとか・・)、うまくいく感じが全然しなかったので、Wikiとして引っ越すことは諦め、ページ数も少ないことから、HTMLファイルへ変換して、アクセスするように方針変更した(自分のWikiは単純なリンクのみだったので・・・)
代わりの方法は、このページを参照させて頂いて、
- PukiWikiの各ページを、編集モードで開いて、クリップボードへコピー
- このサイトの左側に貼り付け。https://pukiwiki2markdown.saino.me/
- 右側にMarkdownフォーマットへ変換されるので、クリップボードへコピー
- このサイトの左側に貼り付け。https://yosiakatsuki.github.io/markdown-blog-editor/
- 右側にHTMLフォーマットへ変換されるので、クリップボードへコピー
- テキストエディターを開いて、クリップボードの内容をペースト
- 先頭に、htmlとしてのおまじないを追加
- 末尾に、</body>を追加
- UTF-8モードで、ファイルを保存。拡張子は .html とする。
1 2 3 4 5 6 7 8 9 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> |
これで、wikiで表示されていたひとつのページの内容が、「一応」HTMLファイルになる。レイアウトが崩れるのは、ここでは無視。
この方法で、PuKiWiki上の全てのページ(自分の作ったページ)を、ひとつずつ、HTMLファイルにして、ローカルPCに保存した。(あとで、VS Codeで開いて、色々体裁を修正した)
HTMLファイルをローカルPCからエックスサーバーへアップロード
エックスサーバーのファイルマネジャーを使い、全部のHTMLファイルを、public_htmlの下の、適当なフォルダ(私の場合は、public_html/hp/wiki/)にコピーしてから、ブラウザで確認してみたところ、一応、全部のリンクは(体裁はおかしいものの)表示された。一旦ここでOKとする。
各種Webページの引っ越し
これも、SSHでログインしてから、tarで圧縮し、ダウンロードしたファイルを、エックスサーバーへアップし、SSHでログインしてtarで解凍することにより引っ越す。
Wikiの時と同様、ロリポップにSSHでログインして、webのフォルダーを tarで圧縮するのだが、既に移管済みの wordpressのフォルダや、wikiのフォルダ、よくわからない mtフォルダはコピーする必要が無いので、それらを除いてtar圧縮する。今度はファイル数が多いので、cvzfで圧縮する。
これで、必要なファイルを圧縮した web.tarファイルが出来る。
Wikiの時と同様にこのファイルをローカルにダウンロードするのだが、圧縮した場所は、ロリポップFTPのルートの上位に当たるため、このままでは、FTP出来ない。そのため、web.tarをwebフォルダの中に移動してから、FTPでファイルをローカルにダウンロードする。
1 2 3 |
$ cd $ tar --exclude web/wiki --exclude web/wp --exclude web/mt -cvzf web.tar web $ mv web.tar web |
次に、エックスサーバーに、FTPでこのファイルをアップロードした後、SSHでエックスサーバーにログインして、public_htmlの直下で、web.tarを解凍することにより、webフォルダが中身ごとコピーされる。
1 2 3 4 |
$ cd user_id.xsrv.jp/ $ cd public_html/ $ tar -xvzf web.tar $ |
これで、ロリポップ側のホームページ上のHTMLファイルは全て、エックスサーバーのwebディレクトリにコピーが完了したことになる。
htmlファイルの編集について
ローカルのPCにファイルをコピーしない状態で、エックスサーバー上のファイルをVS Codeで直接編集して、保存(Control-S)するだけでサーバーのファイルが更新される仕組みが、VS codeの拡張で実現出来る。
SSH FSという拡張プラグインを使う方法だが、公開鍵方式の設定が必要なため、最初だけ、少し面倒くさい。ただ、一度設定してしまえば、あとは本当に便利なので、是非活用したい。
設定の方法は、こちら。