初心者がCentOSでFuelPHPのstationwagonを動かしてみた
Webアプリケーションを作ろうと、さくらのVPS (CentOS 6.3) で Ruby on Rails を弄ったりしていたのですが、Railsはどうも記述されていないルールが掴めないので、もう一度FuelPHPをはじめなおしてみました。
今回も意外と詰んだりしたので手順を残しておきます。
初心者なので間違っている設定などあるかもしれません。ご注意ください。
偉大なる先人様の参照記事
FuelPHP のサンプルアプリ「Stationwagon」をみてみる - A Day in Serenity @ kenjis
1.nginx と apache の連携
今回は既に複数のunicorn_railsと連携中のnginxさんにapacheの設定を追加しました。
apacheさんも既にhogeに割り当てられていたためバーチャルホストで対応します。
/etc/nginx/nginx.conf
upstream fuelhoge { server 127.0.0.1:8000; } upstream hoge { server 127.0.0.1:8001; } server { listen 80; server_name fuelhoge.jp.; access_log /var/log/nginx_fuelhoge_access.log; error_log /var/log/nginx_fuelhoge_error.log; proxy_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 60; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://fuelhoge; proxy_redirect off; } } server { listen 80; server_name hoge.jp; proxy_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 60; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://hoge; proxy_redirect off; } }
/etc/httpd/conf/httpd.conf
Listen 8000
Listen 8001
<VirtualHost *:8000>
ServerName fuelhoge.jp
DocumentRoot /var/www/fuelhoge
</VirtualHost>
<VirtualHost *:8001>
ServerName hoge.jp
DocumentRoot /var/www/hoge
</VirtualHost>
<Directory "/var/www/fuelhoge/stationwagon/public">
AllowOverride All
</Directory>
NameVirtualHost *:8001
(前回のmacでの設定時同様、AllowOverride All の設定を忘れていて少し詰みました。)
2.stationwagonのインストールとパーミッション設定
$ git clone git://github.com/abdelm/stationwagon.git $ cd stationwagon $ oil r install
ここでは操作ユーザーの書き込み権限が無くてgit cloneで詰みました。
作業ユーザーは既にapacheグループに追加済みでしたので、/var/www/fuelhoge/ のapacheグループの書き込み権限を有効にしました。
$ chmod 775 /var/www/fuelhoge
3.stationwagonのconfig.phpを設定
設定は参照元の記事の通りです。
--- a/fuel/app/config/config.php +++ b/fuel/app/config/config.php @@ -41,7 +41,7 @@ return array( * * Set this to false or remove if you using mod_rewrite. */ - 'index_file' => 'index.php', + 'index_file' => '', 'profiling' => false, @@ -71,7 +71,7 @@ return array( */ 'language' => 'en', // Default language 'language_fallback' => 'en', // Fallback language when file isn't available for default language - 'locale' => 'en_US', // PHP set_locale() setting, null to not set + 'locale' => 'ja_JP.utf8', // PHP set_locale() setting, null to not set 'encoding' => 'UTF-8', @@ -81,8 +81,8 @@ return array( * server_gmt_offset in seconds the server offset from gmt timestamp when time() is used * default_timezone optional, if you want to change the server's default timezone */ - 'server_gmt_offset' => 0, - 'default_timezone' => 'UTC', + 'server_gmt_offset' => 3600 * 9, + 'default_timezone' => 'Asia/Tokyo', /** * Logging Threshold. Can be set to any of the following: @@ -94,7 +94,7 @@ return array( * Fuel::L_INFO * Fuel::L_ALL */ - 'log_threshold' => Fuel::L_WARNING, + 'log_threshold' => Fuel::L_ALL, 'log_path' => APPPATH.'logs/', 'log_date_format' => 'Y-m-d H:i:s',
【注意】上記では server_gmt_offset を 3600*9 秒 = 9時間 に変更していますが、サーバ側でロケール設定を日本時間に合わせてある場合、変更せずに 0 のままで問題ないようです!
4.データベースの作成
データベースの作成も参照元記事と同じです。
MySQLにログインして下記コマンドを打ち込みます。
> CREATE USER 'stationwagon'@'localhost' IDENTIFIED BY '***'; > GRANT USAGE ON * . * TO 'stationwagon'@'localhost' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; > CREATE DATABASE IF NOT EXISTS `stationwagon` ; > GRANT ALL PRIVILEGES ON `stationwagon` . * TO 'stationwagon'@'localhost';
テーブルの作成は面倒なので stationwagon/database.sql を流し込んだのですが、実際に動かして Sign Up を実行したときにusers テーブルに crated_at が無いというエラーが出たため、下記のように変更しました。
diff --git a/database.sql b/database.sql index a87b3aa..88da9b8 100644 --- a/database.sql +++ b/database.sql @@ -11,7 +11,8 @@ CREATE TABLE `users` ( `login_hash` tinytext COLLATE utf8_unicode_ci, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), - UNIQUE KEY `email` (`email`) + UNIQUE KEY `email` (`email`), + `created_at` bigint(20) unsigned DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
database.sqlをデータベース stationwagon へ流し込みます。
mysql -u stationwagon -p -h localhost stationwagon < database.sql
5.データベース接続設定
これも参照先の記事とまったく同じで大丈夫でした。
--- a/fuel/app/config/development/db.php +++ b/fuel/app/config/development/db.php @@ -7,8 +7,9 @@ return array( 'default' => array( 'connection' => array( 'dsn' => 'mysql:host=localhost;dbname=stationwagon', - 'username' => 'root', - 'password' => '', + 'username' => 'stationwagon', + 'password' => '***', ), + 'table_prefix' => 'sw_', ), );
6.mod_rewriteの設定
1に書いた通りAllowOverride Allが問題なければ大丈夫でした。
以上です。
想像以上に詰まりましたが、参照元の記事に加えて、まさかの自分の前回の記事がとても頼りになりました。
もし間違いなどがありましたらご指摘いただけると嬉しいです!