CakePHP本体のアップロード
「www.example.com」がで公開するとします。
さくらサーバーでは「home->アカウント名 -> www」に「example」ディレクトリを作成して、その下にhtmlファイルを置けば公開できますね。
基本的にCakeはそのままアップロードしても大丈夫な設計になっているようですが、もしものときを考えるとデータベースの設定ファイルを公開ディレクトリ入れておくのはセキュリティ上、よろしくありません。
そこでCake本体はアクセスできないディレクトリに置き、「webroot」内のファイルだけ公開ディレクトリに配置するようにします。
ここでは下図のようにアップロードしたことにします。
「webroot/index.php」の編集
アップロードしましたが、当然今のままでディレクトリを変えたので動きません。
「webroot/index.php」を編集しましょう。
40行目あたりの「ROOT」と「APP_DIR」の定数を以下のようにします。
webroot/index.php
if (!defined('ROOT')) { define('ROOT', DS.'home'.DS.'アカウント名'.DS.'cakemodule'); } if (!defined('APP_DIR')) { define ('APP_DIR', 'app'); }
これでトップページ(www.example.com)は表示されると思います。
.htaccessを作成
このままだと各アクション(下層)にアクセスしようとすると「Not Found」と表示されます。
これは公開ディレクトリ(example)に以下の「.htaccess」を設定する必要があるようです。
www/example/.htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !.(cgi|css|gif|jp?g|png)$ RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
データベース設定を自動で切り分ける
さくらサーバーではサーバーコントロールパネルから「アプリケーションの設定->データベースの設定」でデータベースの作成およびデータベースの情報を確認することができます。
この情報をもとに「config -> database.php」を修正します。
appディレクトリは更新頻度が高いと思いますので、本番サーバーとテストサーバーで設定ファイルを別けてしまうと、誤りがおこるかもしれません。
下記のように条件分岐すれば、同じファイルで運用することができます。
app/config/database.php
class DATABASE_CONFIG { var $development = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => '********', 'database' => 'database', 'prefix' => '', 'schema' => '', 'encoding' => 'utf8' ); var $production = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'host', 'login' => 'login', 'password' => '********', 'database' => 'database', 'prefix' => '', 'schema' => '', 'encoding' => 'utf8' ); function DATABASE_CONFIG() { $this->default = ($_SERVER['SERVER_ADDR'] == '127.0.0.1') ? $this->development : $this->production; } }
参考サイト
[cakePHP]さくらインターネットに導入する(cake本体とwebrootを分ける)[サブドメインで運用]
開発と運用の設定を自動で切り替える フォーラム – CakePHP Users in Japan