• Ubuntuに関連したハード、ソフトの備忘録サイトです

ハイパフォーマンス・サーバーNginxを使おう(その08)ーCakePHPのブログチュートリアルの設定


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で次のような画面になり、ブログ記事の追加、編集、削除が可能になります。

nginx30

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA