nginx+fastcgi+pukiwiki

nginx で pukiwiki を起動する時、web 上のレシピによっては fastcgi_param の設定が適切にできず、アンカーの張るパスがファイルシステム上のフルパスになってしまう場合がある。
正:

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

誤:

fastcgi_param  SCRIPT_NAME        $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

要は、phpinfo() の環境変数などが正しくセットされればいいわけで、正常な例とにらめっこしながら設定してみると良いのでは。

設定は、fastcgi_param で正しくやっておけば、nginx.conf だったり各サイトの server ディレクティブ内でだったりで設定しなくていいはず。

Nginx + Unicorn + Redmine

環境移設中にうまく動かなくなったので,追記.
ユーザの環境変数を引き継いでbundle exec ... は動くのに,crontab で @reboot から起こそうとすると,unicorn が上がらない場合,私の環境では次の2つが原因であった.

  • bundleコマンドを––user–localオプションつけてインストールしたから,rootからは見えなかった.
    ⇒フルパスで対応
  • bundlerを––user–localオプションつけてインストールしたから,bundle exec unicorn_railsの中でエラー吐いて動かなかった.
    sudo su - で完全にrootとしてログインして,gem install bundlerする.

これで解決したので,これ以上は調べてないよん.

途中.nginx から unicorn の呼び出しは設定完了済,設定ファイルは現行環境を見て,適宜,パースする(予定).

$cd tmp
$ wget http://www.redmine.org/releases/redmine-2.6.0.tar.gz
$ tar xzf redmine-2.6.0.tar.gz
$ mv redmine-2.6.0 ..
$ cd ~/redmine-2.6.0
$ sudo gem install bundler
$ vi database.yml
$ vi Gemfile.local
+ gem "unicorn"
$ bundle install --without development test rmagick postgresql sqlite
$ cp /oldfile/databasefile.sqlite3 ./db/
$ cp /oldfile/unicorn.rb ./config/
$ sudo bundle exec unicorn_rails -D -E production -c config/unicorn.rb # テスト
$ sudo kill (pid) # 停止

追記 2015/4/6
unicornまわりのコマンド系

起動
# bundle exec unicorn_rails -D -E production -c config/unicorn.rb

–D でデーモン化
–E hogehoge で hogehoge 環境を起動
–c hogehoge で hogehoge というファイルをコンフィグファイルに指定

停止
# kill -QUIT PID

unicorn.rb とかで pid ファイルを指定していると思うので,そいつを cat するか,ps aux | grep unicorn とかで探す.

再起動
# kill -HUP PID

完全にコンフィグとか読み直して欲しいんだけど,なんか反映されないことがあるので,その場合はQUIT→bundle execとする

新規に起動
# kill -USR2 PID

前のプロセスを残して起動.この後,QUIT すれば,サービスを止めずにプロセスを再起動できるという理屈だが,QUIT するのをよく忘れるので,あんま使ってない.

サブディレクトリで運用

アプリに依るんだろうけど,けっこう手間がかかるから,VirtualHost で運用できるなら,そっちのが楽.
redmineについては,そのうちまとめる.