ロリポップからエックスサーバーへ移行

これまで、数年間ロリポップにお世話になってきたが、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プラグインをインストールして有効化
  • このプラグインのインポートを選択する。
  • image
  • 残念ながら、ディフォルトのままでは、アップロード出来るファイルのサイズ制限に引っかかって、160MBのファイルはインポート出来ない。
  • 最大サイズを変更するために、エックスサーバーのサーバーパネルから、php.iniの設定を変更する。
  • image
  • ドメインを選択して、「php.ini設定変更」タブを選び、下の方にあるいくつかのパラメーターを大きく変更する。
  • image
  • これらを、160MByteを超える大きさに設定する(今回は、post_max_sizeを200M, upload_max_filesizeを200M, 念のために、Memory_limitや execution_time, input_timeも10倍程度拡大した)
  • image
  • 設定を確定してから、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接続を有効にする。有効にすると、接続のためのサーバー情報が得られる。

image

この情報を使い、TeratermのSSHを使ってロリポップにログインする。ロリポップは、SSHのパスワード認証が認められているので、ログインは単純。

image

正常にログイン出来たら、ルート直下にある、wikiのフォルダを丸ごと、tar圧縮する。

これで、wiki.tarというファイルが出来る。今回はファイルが少ないため、これで問題ないが、ファイルが多い場合は、tar –cvzf として、圧縮率を上げたほうが良いかもしれない。

次に、ロリポップサーバーの FTPツールを開いて、先程圧縮したtarファイルを、ローカルPCにダウンロードする。

image

エックスサーバーへのインポート

次は、エックスサーバのファイルマネジャーを開き、先程PCに落とした wiki.tarファイルを、エックスサーバーの public_html直下にコピーする。

次に、TeratermのSSHで公開鍵認証方式を使って、エックスサーバーへログインする。

エックスサーバーに公開鍵認証方式でSSH接続するためには、SSH設定をして秘密鍵をPCに保存し、Teratermで接続する前に、その秘密鍵をSSHに設定する必要がある。その設定に関しては、他を参照(こことか・・・。Teratermへの設定はここ。)

image

その後、サーバー名とポート番号を指定し、SSHでサーバーに接続を試みると、

image

次の画面で設定したパスフレーズを入力して、ログインが出来る。

xxx.xsrv.jp/public_html に移動し、そこに wiki.tarが有るのを確認した後、tar –xvf wiki.tarを実行すると、public_htmlの直下に wikiディレクトリが生成され、その中に全てのファイルが解凍される。

この状態で、wikiに必要なファイルは、全部あるはずだから、ブラウザからWikiが表示できるか試してみる。

すると、エラーが出た・・・(涙)

image

どうも、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 とする。

これで、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でファイルをローカルにダウンロードする。

次に、エックスサーバーに、FTPでこのファイルをアップロードした後、SSHでエックスサーバーにログインして、public_htmlの直下で、web.tarを解凍することにより、webフォルダが中身ごとコピーされる。

これで、ロリポップ側のホームページ上のHTMLファイルは全て、エックスサーバーのwebディレクトリにコピーが完了したことになる。

htmlファイルの編集について

ローカルのPCにファイルをコピーしない状態で、エックスサーバー上のファイルをVS Codeで直接編集して、保存(Control-S)するだけでサーバーのファイルが更新される仕組みが、VS codeの拡張で実現出来る。

SSH FSという拡張プラグインを使う方法だが、公開鍵方式の設定が必要なため、最初だけ、少し面倒くさい。ただ、一度設定してしまえば、あとは本当に便利なので、是非活用したい。

設定の方法は、こちら。

VS Codeの SSH FSを使って、公開鍵認証方式のサーバー上のファイルを編集、更新する