レンタルサーバー XREA/CORESERVER で FuelPHP を動かす
PHP のウェブアプリケーションフレームワーク FuelPHP を XREA (エクスリア)や CORESERVER (コアサーバー)で利用する手順をまとめます。
本稿ではユーザー名を hogefuga、サーバーは s1024.coreserver.jp と仮定して説明をしますので、ご自身のアカウント情報に適宜読み換えてください。読み換えるべき部分は赤字で書いてあります*1。
また、本稿の動作確認は FuelPHP 1.6.1 で作成したプロジェクトで行っています。
DocumentRoot の外にプロジェクトをインストールする場合
セキュリティの観点から、FuelPHP は DocumentRoot の外へインストールすることが推奨されています。ここでは ~/php/FuelProject/ 以下にプロジェクトをインストールするという仮定で話を進めます。
1. プロジェクトをサーバーにコピー
適当なクライアントを使って、ローカルの FuelProject ディレクトリをサーバーの ~/php/ 配下にアップロードします。
私の Windows 環境では、FFFTP でアップロードするとファイル数が多いせいか、何度試しても途中でアップロードに失敗してしまいました。WinSCP でアップロードしたところ、問題なくアップロードが完了しました。
2. .htaccess の書き換え
本稿執筆時点では、XREA、CORESERVER ともに、モジュール版の PHP のバージョンは 5.2.5 です(XREA のごく一部のサーバーを除く)。FuelPHP は PHP 5.3 以降が必要なので、CGI 版の PHP 5.4 系列を動かすようにします。
FuelProject/public/.htaccess の最初のほうに、以下の記述を追加してください*2。
AddHandler application/x-httpd-php54cgi .php
また、同じファイルの下のほうにある「<IfModule mod_php5.c>
」を探します。
# for normal Apache installations
<IfModule mod_php5.c>
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
この部分の RewriteRule を以下のように変更します。
RewriteRule ^(.*)$ index.php?/$1 [L]
3. シンボリックリンクの作成
public_html/ 配下からアクセスできるように、~/php/FuelProject/ にシンボリックリンクを張ります。
3.1 ホスト情報登録
SSH でサーバーにログインするためには、ホストの情報を登録しなければなりません。直近 30 日以内にこの作業をしていない場合は、以下の手順でホスト情報を登録します。
CORESERVER の管理画面 http://www.s1024.coreserver.jp/jp/admin.cgi にログインして、左の管理メニューにある「ホスト情報登録」をクリックします。「FTP/SSH 接続許可ホスト入力」画面になったら、「SSH 登録」ボタンをクリックすると、数分後には SSH でログインできるようになります。
ホスト情報は登録後 30 日間有効です。一ヶ月後にログインできなくなったら、またこの手順を踏んでホスト情報を登録し直しください。
3.2 サーバーにログインしてシンボリックリンク作成
では、サーバーにログインしましょう。適当な SSH クライアント(私は RLogin を使っています)でサーバーにログインします。ログイン先アドレスは s1024.coreserver.jp、ユーザー名とパスワードは CORESERVER の管理画面に入る時と同じものを使ってください。
先ほどアップロードしたプロジェクトを http://hogefuga.s1024.coreserver.jp/myfuel/ という URL で公開したい場合は、~/public_html/ の下に myfuel という名前でシンボリックリンクを張ります。太字の部分を入力してください。
hogefuga@s1024:~> cd public_html
hogefuga@s1024:~public_html> ln -s ~/php/FuelProject/public myfuel
これで作業は終了です。ブラウザーで http://hogefuga.s1024.coreserver.jp/myfuel/ に接続してページが表示されたら、成功です!
もちろん、独自ドメインを運用している場合も同様の手順でできます。foobar.example.com をこのアカウントで運用している場合、
hogefuga@s1024:~> cd public_html/foobar.example.com/
hogefuga@s1024:~public_html/foobar.example.com> ln -s ~/php/FuelProject/public myfuel
とすれば、http://foobar.example.com/myfuel/ でアクセスできます。
参考までに、シンボリックリンクの削除は rm コマンドで行います。
hogefuga@s1024:~public_html> rm myfuel
DocumentRoot の内側にプロジェクトをインストールする場合
諸般の事情で ~/public_html/ の下にインストールする場合でも、同様の手順で可能です。ただし、ドメインをまたがってシンボリックリンクを張らないようにしてください。
例えば、~/public_html/foobar.example.com/ 直下に FuelProject ディレクトリをアップロードした場合、シンボリックリンクは foobar.example.com/ ディレクトリの下に作ります。
hogefuga@s1024:~> cd public_html/foobar.example.com
hogefuga@s1024:~public_html/foobar.example.com> ln -s FuelProject/public myfuel
以下のように、ドメインをまたぐ形でシンボリックリンクを張ると、うまく機能しません。
hogefuga@s1024:~> cd public_html/
hogefuga@s1024:~public_html> ln -s foobar.example.com/FuelProject/public myfuel
*1:サービス名称の「CORESERVER」はいちいち赤字にはしていませんので、XREA をお使いの方は CORESERVER の部分を XREA と脳内置換してください。