drupal 6.20から7.8にアップデートしようとしたのですが、i18n, translation tableまわりで問題が起こりました。
というわけで、6.22へアップデートすることにしました。
ちなみに、7系ではpdoを有効にしたphpをbuildしなおす必要があります(--enable-pdo --with-pdo-mysql)。
環境
- Arch: amd64
- OS(userland): NetBSD 5.1
- kernel: NetBSD 5.99.47
- nginx: 1.0.5
- PHP: 5.3.8
- MySQL: 5.5.15
- drupal: 6.22
http://drupal.orgから drupal-6.22.tar.gz をダウンロードします。
バックアップ
インストール
- 新しいソースを展開します。
% tar zxvf drupal-6.22.tar.gz
% cp -r drupal-6.22 /home/htdocs/foobar
% cd /home/htdocs/foobar
- mysqlのアクセス設定をします。
% cp sites/default/default.settings.php sites/default/settings.php
[code]% vi sites/default/settings.php
(少なくとも以下の1行はサイトにあわせて変更します)
$db_url = 'mysql://drupaluser:password@localhost/drupal';
- 自作themeなど、標準以外のthemeを使用している場合はsites/all/themes/ 以下に展開しておきます。
% cp -pr somewhere/foobar/themes/mysite sites/all/themes/
- faviconやlogoなどを使用している場合はバックアップからコピーします。
% cp -pr somewhere/foobar/files .
- 標準以外のモジュールを使っている場合はそれを展開します。モジュールを新たに置いた後はDBのアップデートなどが必要なのでこのページの最後のほうにあるupdate.phpへのアクセスが必要となります。
% cd sites/all/modules
% tar zxvf xmlsitemap-6.x-0.x-dev.tar.gz
robots.txtの設定
5.X系ではデフォルトでrobots.txtが付属してきますが、xmlsitemapが使えるように以下のように書き換えます。
User-Agent: *
Sitemap: http://example.com/sitemap.xml
Crawl-Delay: 10
DBのアップデート
updateを行えるようにsites/default/settings.phpを変更します。
すでにAdminユーザでloginできる場合はAdminでlogin後にupdateを実行できるので、settings.phpの変更を行う必要はありません。
# vi sites/default/settings.php
$upate_free_access = TRUE;
として、webブラウザから http://example.com/update.php をアクセスし指示に従います。その後、settings.phpは元に戻します。
# vi sites/default/settings.php
$upate_free_access = FALSE;
http://example.com/ をアクセスして確認します。
adminでloginして、
Administer>Reports>Available Updates で確認し必要があればモジュールを手動で更新します。
Administer>Reports>Status Reportsで問題がないか確認します。
以上でdrupal側設定は終了です。
nginxの設定
/usr/local/nginx/conf/drupal.example.net.conf
server {
listen 80;
server_name drupal.example.net;
access_log logs/drupal.example.net/access.log;
error_log logs/drupal.example.net/error.log notice;
root /home/somewhere/htdocs;
location / {
index index.php;
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
location ~* ((cron\.php|settings\.php)|\.(htaccess|engine|inc|info|install|module|profile|pl|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(Entries.*|Repository|Root|Tag|Template))$ {
deny all;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_page 404 /index.php;
}
/usr/local/nginx/conf/nginx.conf
.
.
http {
.
.
include drupal.example.net.conf;
}