環境
- Arch: amd64
- OS(userland): NetBSD 6.1
- kernel: NetBSD 6.1
- nginx: 1.6.2
- PHP: 5.5.21
- MariaDB: 5.5.41
- drupal: 7.34
http://drupal.orgから drupal-7.34.tar.gz をダウンロードします。
バックアップ
インストール
- 新しいソースを展開します。
% tar zxvf drupal-6.25.tar.gz
% cp -r drupal-6.25 /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
% cp -pr backup/sites/all/modules/* .
DBのアップデート
webブラウザからAdminユーザでloginして
http://example.com/update.php をアクセスし指示に従います。
このとき以下のエラーがでました。
Failed: PDOException: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes: ALTER \
TABLE {locales_source} ADD INDEX `textgroup_context` (`textgroup`, `context`); Array ( ) in db_add_index() (line 2944 of /home/httpd/mysite/includes/database/database.inc).
以下の方法で対処します。
% mysql -u user -p dbname
MariaDB [dbname]> ALTER TABLE locales_source ENGINE=InnoDB;
Query OK, 7384 rows affected (0.14 sec)
Records: 7384 Duplicates: 0 Warnings: 0
MariaDB [dbname]> quit
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 [2001:0db8::2]:80;
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;
}