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

ハイパフォーマンス・サーバーNginxを使おう(その10)ー「FuelPHP入門」での検証

ソーテック社から2012年6月に出た早川聖司さんの「FuelPHP入門」は日本で初めて出版されたFuelPHPの解説書です。労作であり、優れた書籍だと感心しています。Apacheで勉強してみましたが、Nginxのこのシリーズでは、今回はNginxに変えて試してみましたが、ひとつのことを除いて、題材のブログアプリケーションの動作は全く問題ありませんでした。

※追記 検証環境はUbuntu14.04LTS、Nginx1.6、FuelPHP1.2です。FuelPHP1.7ではレイアウトがおかしくなり、途中で断念しました(2014年9月3日午後13時)。

ひとつのこととは、FuelPHPのHtmlクラスのanchor()メソッドを使った際、NginxでURLの書き換え対策を行っているにも関わらず、リンクにindex.phpが含まれてしまうことでした。この点について、グーグル先生に聞いてみましたら、まささんのブログhttp://letsspeak.hatenablog.com/entry/2012/03/12/082458に解決法が紹介されていました。

具体的には、/fuel/app/config/config.phpの中の、

/**
* index_file - The name of the main bootstrap file.
*
* Set this to false or remove if you using mod_rewrite.
*/
'index_file'  => 'index.php',

の’index.php’をfalseか行そのものを削除すれば良いらしいです。サイト管理者の場合は、行を削除しましたら、Html::anchor()にindex.phpが出なくなりました。Apacheのmod_rewrite対策に代わるものとしては、Nginxにはifディレクティブが用意されていますので、このところを引用しますと、

# for FuelPHP
server {
	listen 80;
	# listen [::]:80 default_server ipv6only=on;

	# root /usr/share/nginx/html;
	root /var/www/fuelsites/blog/public;
	# root /var/www/fuelsites/blog;
	index index.php index.html index.htm;

	# Make site accessible from http://localhost/
	server_name www.fuelphp.jp;
	access_log	/var/log/nginx/fuel_access.log;
	error_log	/var/log/nginx/fuel_error.log;

	location / {
              # try_files $uri $uri/ /index.php?$uri&$args;
              # try_files $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$ {
		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;
	}
}

上図で、if()ディレクティブのところが、Apacheのrewriteルールに相当するもので、ドキュメントルート以下を、その前にindex.phpを付けて書き直しなさい、という意味です。Wordpressは全く同じ設定で、permalinkの設定ができるのですが、こちらではうまくいきませんでした。そこで、Google先生にいろいろ聞いた結果、上記のまささんのサイトを見つけたというところでした。

こうしておいて、サイト管理者の入力とダウンロードファイルを併用した結果、次の画面のようになりました。まず、最初のログイン画面は、

blog01

 

ログインすると、投稿記事一覧画面が出て、ページネーションが下部に表示されます。

blog02

 

上部の新規投稿ボタンをクリックすると、下図のような新規投稿画面になります。

blog03

 

コメントを残す

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

CAPTCHA