環境
- Arch: amd64
- OS(userland): NetBSD 6.1
- kernel: NetBSD 6.1
- nginx: 1.10.3
- PHP: 5.6.30
- MariaDB: 5.5.54
- drupal: 7.54
http://drupal.orgから drupal-7.54.tar.gz をダウンロードします。
バックアップ
インストール
- 新しいソースを展開します。
% tar zxvf drupal-7.54.tar.gz
% cp -r drupal-7.54 /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 をアクセスし指示に従います。
今回は、ここで問題が発生しました。以下のようなメッセージが大量に表示されました。
User warning: The following module is missing from the file system: MODULE NAME. In order to fix this, put the module back in its original location. For more information, see the the documentation page. in _drupal_trigger_error_with_delayed_logging()
warningなのでまずはupdate処理を完了させました。
その後、この対策をします。検索した結果、drupal 7.50以降でこの現象が起こるようです。対策としては
https://www.drupal.org/project/module_missing_message_fixer
このモジュールをインストールします。
モジュールインストール後、モジュールを有効にして、
以下のURLにアクセスします。
http://example.com/admin/config/system/module-missing-message-fixer
指示に従い対処します。
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;
}