Dokuwikiのサーバを、@pagesからGoogle Compute Engineに移したメモ。
Dokuwikiのディレクトリを丸ごとダウンロード。
Dokuwikiの手引きによると、「生ファイルのままダウンロード&アップロードすると最終更新日が変わるので、圧縮してからするといいよ」と言ってるが、@pagesはシェルログインとか出来ないので諦める。もし他のレンタルサーバなどで圧縮ができるようなら、するとよい。
dokuwiki/cache/の中にあるキャッシュは、サーバ移行すると上手く動かなくなるらしいのでダウンロードの必要は無い。cacheフォルダそのものは存在しないとエラーになる。
ファイル数が多いため一気にやると制限がかかって途中で止まる。FTPセッションを繋ぎなおすと制限はリセットされる。
一般的なFTPソフトでのファイルダウンロードは「ダウンロード対象の全ファイルの目次を作る」→「実際にダウンロード」という順で処理されると思われる。目次の作成もファイル数が多いとそれなりに時間がかかる。とても一気にはダウンロードできないような大量のファイルをダウンロードしようとすると、目次の生成に時間がかかり、しかもそれが途中で止まるとそれ以降のファイル分の目次は無駄になる。
なので、これくらいなら制限かからずにいけるかな、という程度のフォルダまで手動で小分けにした方が手間はかかるが速く済む。(2000ファイルくらい?サイズにもよる?)
失敗したらセッション繋ぎなおすようなFTPソフトがあればもっといいのだが。
登録して、プロダクトを作って、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から、RewriteEngineを有効化
> 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
上手く表示されたらいいな
試行錯誤しながらやって、終わった後にまとめて書いてるので、必要な作業の書き忘れがあったらごめん。