nginxでFuelPHPを使うためのrewrite設定方法

nginxよくわかんないよ(´;ω;`)

最近ちょこちょこいじっているのですが、設定周りでapacheと勝手が違う部分が多々あり苦労してます。

特にrewriteモジュールの記述の仕方があまりよく分かりません。FuelPHPを使いたいのでどうしても必要なのですが、肝心のところで結構ハマってました。

一度コツを掴むとapacheよりだいぶシンプルで書きやすいのですが、一応忘れてしまった時のためにメモメモ……

rewriteに至る基本的な流れは、

指定のURIに一致するファイルがあるか調べる → なかったらディレクトリがあるか調べる → それもなかったらrewriteする

と言った感じです。この部分はnginxのtry_files構文で簡単に書けます。

「location @rewrite…」から始まるlocationディレクティブは、「名前付きロケーション」と言うみたいです。内部リダイレクト処理を行う際に、アットマークから始まる名前を指定すると、その名前がついたブロック内の処理を行います。詳しくはnginxのドキュメントを参照してください。→http://wiki.nginx.org/HttpCoreModuleJa#location

ちなみに、try_filesを使わなくてもif文を利用すれば前述の流れは実現できますが、やたら長くなるし、nginx的には非推奨らしくいいとこなしなので、素直にtry_filesを利用するほうがいいと思います。
参考リンク: nginxのifに要注意 TECHSCORE BLOG

そして、ファイル・ディレクトリが存在しなかった場合のリライト処理ですが、俺は以下のように書きました。

このあたりの書き方は個人差・環境差があるので一概には言えませんが、自分の手元の環境ではこれで動作しました。

書き方はリファレンスを参照!!→http://wiki.nginx.org/HttpRewriteModuleJa#rewrite

ここに書いてあることを更に凝縮して、しかも分かりやすい記事があるので、そちらを読んだほうが幸せになれるかもしれません……
参考リンク: nginx連載5回目: nginxの設定、その3 – locationディレクティブ – インフラエンジニアway – Powered by HEARTBEATS 

 

Raspbian(RaspberryPi)でnginx+php-fpmを動かしてみる。

完全に自分用ですが。

nginxとphp-fpmを動かしてみたかったので、部屋に転がってたRaspberryPiにインストールしてみました。

とりあえず必要なパッケージをインストール。

依存パッケージはaptitudeの方で全部拾ってきてくれるはず。

ちなみにバージョンはnginxが1.2.1 php5-fpmは5.4.4です。

 

次にnginxの設定。デフォルトの設定ファイルの中から特に書き換えた部分だけ抜き出してます。

 

nginx, php-fpmの起動。

最後に起動設定の変更。

 

これでサイトルートの中にphpinfo();でも書いたphpファイルを投げ込んでアクセスできるかどうか試したらいいと思います。

 

一番ハマったポイントはfastcgi_passの値です。いろいろなブログの記事を読んでみても、設定値は「127.0.0.1:9000」にしろ~って書いてあるのですが、残念ながら俺のオツムではよく分からず……。でもnginxのデフォルト設定ファイルにはもう一つ、sockファイルを入力する方法も併記されておりまして、そちらのパスを通してみたらうまく動きました。とりあえず動いたのでこれでよしということで(´・ω・`)

RedmineをCentOS5にインストールする際にハマった。

Redmineを使ってみたくてインストールしたけれど、めちゃくちゃはまってしまったのが悲しいのでメモしておきます。

Redmineのインストールの流れは下記のサイトを参照。

 

Redmine 2.2をCentOS 6.3にインストールする手順
http://blog.redmine.jp/articles/2_2/installation_centos/

 

CentOS6が対象の記事ですが、5でもいけるだろ~と思って進めてみたのが泥沼の始まり・・・!
Gemパッケージのインストール時に、「ImageMagickのバージョンが古すぎんだよっ!!」と怒られ、RMagickがインストール出来ませんでした。

CentOS6だとバージョンが新しいものがインストールされるので、問題なく進むみたいです。
必要なバージョンは6.4.9以上、CentOS5で入るものは6.2.8。\(^o^)/オワタ

しかし諦める訳にはいかないので、先人の知恵を頂きにGoogleさんに聞いてみたら、ピッタリ差さる記事がありました。

 

CentOS に ImageMagick, RMagick のインストール
http://akkunchoi.github.io/imagemagick-rmagick-centos.html

 

上記の記事と同様に、rpmコマンドではうまくインストールできなかったので、ImageMagickの公式サイトからソースを持ってきて野良ビルドしました。

インストールする際に、「yum install ImageMagick」を叩いて、古いバージョンをインストールすと同時に依存パッケージを全部インストールし、その後「yum remove ImageMagick」でImageMagickだけ消しておくと楽かもしれません。
それについての参考はこちら↓

 

CentOS 5にImageMagickをインストールときのメモ – 4.5帖の生活
http://takuya1984.hatenablog.com/entry/20120508/1336488683

 

ちなみに、せっかくなので最新のImageMagick6.8.5-3を入れてみました。特に意味は無いですが(´・ω・`)

これで改めて「# bundle install –without development test postgresql sqlite」を叩いたら、今度は

Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc’
to the PKG_CONFIG_PATH environment variable
No package ‘MagickCore’ found

というエラーが(´;ω;`)

でもこれも1個目の記事に書いてあった「$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig」で対応できました。

もう一度「# bundle install –without development test postgresql sqlite」を叩くと、今度はしっかりうまくいったみたいです。

とりあえずよかったよかった。