今まで Fedora で問題なく動いていた Drupal を、Ubuntu に移し変えることになった。/var/www/html をコピー(tar.gz にまとめる)して同じように移行先の /var/www/html に展開、データベースも phpMyAdmin からエクスポート、移行先の MySQL にインポート、そして apache2.conf を私の環境に修正してトップページは表示できた。
ここまではよかった。しかし、
管理者でログインしようとすると
404 Page Not Found となってしまう。既存のコンテンツも同様に
Not Found のエラーとなる。
いろいろ調べた結果、Ubuntu では mod_rewrite モジュールがデフォルトで on になっていないことがわかった。よってこのモジュールがオンになっていないとクリーン URL が有効にならないからエラーとなるのだ。
ここで頼りになったのがやはり
drupal.org だった。
https://drupal.org/node/134439 にその設定方法が書いてあったのでここに紹介する。
その前に、Ubuntu で既存の Drupal サイトを移行して動かす場合のチェック項目をまとめておく。
- Apache は動いているか?https://localhost/ または https://yourdomain.com/ としてトップページは表示されるか?
- Apache で PHP は動いているか?
- MySQL は動いているか?
- settings.php は移行先の環境に合うように修正したか?($base_url など)
- /var/www/html などのディレクトリの関係、シンボリックリンクは合っているか?
- /etc/apache2/sites-available/default は修正したか?(このファイルが実質 httpd.conf となる)
- mod_rewrite モジュールは有効になっているか?
- 上の一連の設定ファイルを変更したら、Apache を再起動させたか?
設定手順は以下のとおり。
- ルートになる。
- a2enmod rewrite (こうするとモジュールが追加できるらしい。もしこのコマンドがない場合は、apt-get install apache2.2-common でインストール)
- vi /etc/apache2/sites-available/default として default ファイルを修正する。
先頭から13行目あたりにある、
AllowOverride None を、AllowOverride All に修正する。
- /etc/init.d/apache2 restart
ちなみに、最初に
apt-get install debian-helper-scripts としておくと、/etc/init.d/apache2 restart のところは
service apache2 restart とできるのでちょっと便利(Fedora ではデフォルトで使える技)。
トラックバック URL:
https://perltips.twinkle.cc/trackback/267