CakePHPの触れ込みは「10分でブログが構築できます」というもので、実際そうです。ただし、Nginxで稼働させるには、rewriteの仕方に工夫?が要ります。
日本語マニュアルのサイト、「URLリライティング(http://book.cakephp.org/2.0/ja/installation/url-rewriting.html」に各種サーバーごとの設定が紹介されていますが、一知半解でやってみても「Internal Server Error」が出るだけで、どうしようもありません。それで、/etc/nginx/sites-available/defaultを最初の設定に戻してみたところ、うまく動作しました。以下、マニュアルに掲載されていた部分はコメントで囲ってあります。
# for CakePHP2 #server { # listen 80; # server_name www.cakephp2.biz; # rewrite ^(.*) http://cakephp2.biz$1 permanent; #} server { listen 80; # listen [::]:80 default_server ipv6only=on; # root /usr/share/nginx/html; root /var/www/cakephp/app/webroot; index index.php index.html index.htm; # Make site accessible from http://localhost/ # server_name www.cakephp2.biz; server_name www.cakephp.biz; access_log /var/log/nginx/cak_access.log; error_log /var/log/nginx/cake_error.log; location / { # try_files $uri $uri/ /index.php?$uri&$args; if (!-e $request_filename) { rewrite ^(.+)$ /index.php?url=$1 last; break; } } #error_page 404 /404.html; # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { # try_files $uri = 404; # include /etc/nginx/fastcgi_params; # fastcgi_pass 127.0.0.1:9000; # fastcgi_pass unix:/var/run/php5-fpm.sock; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include /etc/nginx/fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
と設定すると、http://www.cakephp.com/posts/indexで次のような画面になり、ブログ記事の追加、編集、削除が可能になります。