FreeBSDでRedmineを動かす(FreeBSD+nginx+thin+Redmine+SQLite3)
前回nginxとRedmineのインストールが終わったので、引き続き、設定に移る。
Redmineをredmineアカウントで動かすので*1、まず、redmineユーザーとredmineグループを作成しておく。
thin
Redmine用の設定ファイル/usr/local/etc/thin/redmine.ymlを作成する。
--- group: redmine pid: tmp/pids/thin.pid wait: 30 timeout: 30 log: log/thin.log max_conns: 1024 require: [] environment: production max_persistent_conns: 512 servers: 4 user: redmine daemonize: true socket: /tmp/thin/redmine.sock chdir: /usr/local/www/redmine
thinコマンドにファイルを作成させることもできる。
# thin -C /usr/local/etc/thin/redmine.yml -u redmine -g redmine -e production -s 4 --socket /tmp/thin/redmine.sock -c /usr/local/www/redmine -d
ソケットのためのテンポラリディレクトリを作成する。
# mkdir /tmp/thin # chmod a+rwx /tmp/thin
試しに動かしてみる。
# thin -C /usr/local/etc/thin/redmine.yml start
しばらくしてから、redmineユーザーのソケットが4つあることをsockstatで確認する。
# sockstat USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS redmine ruby18 1685 7 stream /tmp/thin/redmine.3.sock redmine ruby18 1681 7 stream /tmp/thin/redmine.2.sock redmine ruby18 1677 7 stream /tmp/thin/redmine.1.sock redmine ruby18 1673 7 stream /tmp/thin/redmine.0.sock # thin -C /usr/local/etc/thin/redmine.yml stop
OSのブート時にthinが自動的に起動するように、/usr/local/etc/rc.d/thinを作成する。いろいろなサイトに
# thin install
で/etc/init.d/thinが作成できると書いてあるが、筆者の環境ではinstallコマンドを認識しなかった。そのため、何かのスクリプトを元にして自分で書いてみた。
#!/bin/sh PROVIDES=thin THIN=/usr/local/bin/thin cmd=$1 thin_start() { echo "Starting $PROVIDES..." $THIN -C /usr/local/etc/thin/redmine.yml start } thin_stop() { echo "Killing $PROVIDES..." $THIN -C /usr/local/etc/thin/redmine.yml stop } thin_restart() { echo "Restarting $PROVIDES..." $THIN -C /usr/local/etc/thin/redmine.yml restart } thin_help() { echo "Usage: $0 {start|stop|restart}" } case ${cmd} in [Ss][Tt][Aa][Rr][Tt]) thin_start;; [Ss][Tt][Oo][Pp]) thin_stop;; [Rr][Ee][Ss][Tt][Aa][Rr][Tt]) thin_restart;; *) thin_help;; esac
nginx
nginxからthin経由でRedmineに接続するようにnginxを設定する。/usr/local/etc/nginx/nginx.confファイルのhttpセクションの最後の部分に、以下のように追記する。
server { listen 8080; server_name redmine.example.com; root /usr/local/www/nginx; proxy_redirect off; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_read_timeout 300; proxy_pass http://redmine; } } upstream redmine { server unix:/tmp/thin/redmine.0.sock; server unix:/tmp/thin/redmine.1.sock; server unix:/tmp/thin/redmine.2.sock; server unix:/tmp/thin/redmine.3.sock; }
冒頭で書いたようにRedmineをredmineアカウントで動かすので、/usr/local/www/redmineディレクトリとファイルのオーナーを変更する。
# chown -R redmine:redmine /usr/local/www/redmine
設定ファイルが文法的に正しいことを確認し、nginxを起動する。
# nginx -t the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok configuration file /usr/local/etc/nginx/nginx.conf test is successful # nginx
ブラウザーでRedmineのログイン画面を表示できれば成功である。
# links http://redmine.example.com:8080/