目次

サーバの引越

Dokuwikiのサーバを、@pagesからGoogle Compute Engineに移したメモ。

全体の流れ

  1. 元サーバからDokuwikiのフォルダ毎ダウンロード
  2. 先サーバのApache, PHPなどの設定
  3. 先サーバにフォルダアップロード
  4. 権限・所有者変更
  5. 設定ファイル編集

@pagesでやること

Dokuwikiのディレクトリを丸ごとダウンロード。

Dokuwikiの手引きによると、「生ファイルのままダウンロード&アップロードすると最終更新日が変わるので、圧縮してからするといいよ」と言ってるが、@pagesはシェルログインとか出来ないので諦める。もし他のレンタルサーバなどで圧縮ができるようなら、するとよい。

キャッシュは不要

dokuwiki/cache/の中にあるキャッシュは、サーバ移行すると上手く動かなくなるらしいのでダウンロードの必要は無い。cacheフォルダそのものは存在しないとエラーになる。

小分けにしてダウンロード

ファイル数が多いため一気にやると制限がかかって途中で止まる。FTPセッションを繋ぎなおすと制限はリセットされる。

一般的なFTPソフトでのファイルダウンロードは「ダウンロード対象の全ファイルの目次を作る」→「実際にダウンロード」という順で処理されると思われる。目次の作成もファイル数が多いとそれなりに時間がかかる。とても一気にはダウンロードできないような大量のファイルをダウンロードしようとすると、目次の生成に時間がかかり、しかもそれが途中で止まるとそれ以降のファイル分の目次は無駄になる。

なので、これくらいなら制限かからずにいけるかな、という程度のフォルダまで手動で小分けにした方が手間はかかるが速く済む。(2000ファイルくらい?サイズにもよる?)

失敗したらセッション繋ぎなおすようなFTPソフトがあればもっといいのだが。

Google Compute Engineでやること

準備

登録して、プロダクトを作って、VMインスタンス起動

OSは(一番慣れてるので)Ubuntuを選択

ssh鍵の登録とか済ます

環境構築

ApacheとPHPのインストール

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install apache php libapache2-mod-php

Dokuwikiに必要なphp拡張のインストール(requirements [DokuWiki]

$ sudo apt-get install php-gd php-xml

rewriteモジュールを有効化

$ sudo a2enmod rewrite

.htaccessを有効化

$ sudo vim /etc/apache2/apache2.conf
<Directory /var/www/>
        Options Indexes FollowSymLinks
        #AllowOverride None
        AllowOverride All   ←ここを変更
        Require all granted
</Directory>

Apacheの起動

$ sudo service apache2 start

アップロード

Apacheのドキュメントルート(デフォルトのまま使うなら/var/www/html/)に@pagesからダウンロードしたDokuwikiのファイル群をアップロード

こちらは、時間はかかるが制限がかかって止まることは無い。待つべし

設定の変更

@pagesの設定のままになっている部分を編集

$ vim /var/www/html/dokuwiki/conf/local.php
// ファイルのURL
$conf['basedir'] = '/dokuwiki/'
$conf['baseurl'] = 'http://(GCEの外部IP)';
 
// セーフモード対策はしなくてよくなったので無効化
// 以下のあたりを削除
// $conf['safemodehack'] = 1;
// $conf['ftp']['host'] = 'localhost';
// $conf['ftp']['port'] = '21';
// $conf['ftp']['user'] = 'user';
// $conf['ftp']['pass'] = 'password';  // plain text (see below)
// $conf['ftp']['root'] = '/home/user';
 
// Rewriteモジュールが使えるようになったので、URLの書き換えを.htaccessに変更
$conf['userewrite'] = 1;

権限の変更

install:permissions [DokuWiki]

Dokuwikiファイルの所有者を一括でApacheにする。Ubuntuでは、Apacheプロセスのユーザ名は「www-data」

> cd /var/www/html/dokuwiki
> sudo chown -R www-data ./

Apacheがdataやpagesに対し書き込み権限を持たないと、「The datadir does not exist, isn't accessible or writable.」というエラーが出る。

.htaccessの編集

.htaccessから、RewriteEngineを有効化

rewrite [DokuWiki]

> vim /var/www/html/dokuwiki/.htaccess

以下のコメントアウトを外す

RewriteEngine on

# ドキュメントルートからのパス
RewriteBase /dokuwiki
 
RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
RewriteRule ^index.php$               doku.php

アクセス!

上手く表示されたらいいな

試行錯誤しながらやって、終わった後にまとめて書いてるので、必要な作業の書き忘れがあったらごめん。