PHP のフレームワークをFedora 8で試してみました。試行錯誤しながら動かしたメモです。OS設定の変更ができる権限(いわゆる root)を持っていることを中心に書いていますが、レンタルサーバ等でOS設定変更不可な環境でも参考になるように追記しています。
主な環境:
OS: Fedora release 8 (Werewolf)
php: 5.2.4
mysql: 5.0.45
apache: 2.2.8
subversion: 1.4.4
上記全て yum よりrpmパッケージで導入し独自コンパイルはなし。
http://xxxxx/book
http://xxxxx/author
でアクセスすることを前提。
akelos自身の導入とアプリケーション作成は、一般ユーザで行うことを前提。
【PHPの設定変更】
# vi /etc/php.ini
allow_call_time_pass_reference = On
↑デフォルトのOffからOnに変更。
akelosは、Onが前提のようです。Offのままだと色々なところでWarnningが出ます。
レンタルサーバ等で/etc/php.iniが変更不可の場合、.htaccess にこの設定をいれることで対応可能です。
また、コマンドラインで setup/migrate/generate 等のコマンドを実行するとき、
$ php --define allow_call_time_pass_reference=on ./script/setup -d ~/booklink
のようにコマンドラインオプションを付ける必要もあります。
【akelos、アプリケーション用のユーザ作成】
# groupadd -g 20000 webgroup
# useradd -u 20001 -g webgroup -G webgroup webuser
【akelos インストール】
# su - webuser
# svn co http://svn.akelos.org/trunk/ akelos
【booklinkアプリケーションのsetup】
$ cd ~/akelos/
$ ./script/setup -d ~/booklink
レンタルサーバ等の場合、ここで以下の設定追加。
$ vi ~/booklink/public/.htaccess
php_flag allow_call_time_pass_reference on
【apacheのVirtualHost追加】
# vi /etc/httpd/conf/httpd.conf
以下、追記する。
<virtualhost >
ServerAdmin webmaster@XXXXXXXX.jp
DocumentRoot /home/webuser/booklink/public
ServerName XXXXXXXX
ErrorLog logs/XXXXXXXX-error_log
CustomLog logs/XXXXXXXX-access_log combined
</virtualhost >
<directory >
Options Indexes FollowSymLinks
AllowOverride All
</directory>
# service httpd configtest < ---- apache設定ファイル文法確認
# service httpd start <---- apacheの起動
【booklink用 mysql データベース作成】
$ mysql -u root -p
CREATE DATABASE booklink;
CREATE DATABASE booklink_dev;
CREATE DATABASE booklink_tests;
GRANT ALL ON booklink.* TO bermi@localhost IDENTIFIED BY "pass";
GRANT ALL ON booklink_dev.* TO bermi@localhost IDENTIFIED BY "pass";
GRANT ALL ON booklink_tests.* TO bermi@localhost IDENTIFIED BY "pass";
flush privileges;
quit;
$ mysqlshow -u root -p
ここで作成したデータベースが表示されることを確認する。
【booklink用 configディレクトリの権限設定】
↑誰でも読み書き実行できる設定
$ chmod a+rwx ~/booklink/config
【ウェブインストーラでbooklink設定】
Webブラウザで、http://XXXXXXXX/ にアクセスし、データベースのユーザ/パスワードを入れる。その他の項目は、デフォルトから変更なし。
【booklink データベース構造定義】
$ cd ~/booklink/
$ vi app/installers/booklink_installer.php
以下、記述
< ?php
class BooklinkInstaller extends AkInstaller
{
function up_1(){
$this->createTable(‘books’,
‘id,’. // the key
‘title,’. // the title of the book
‘description,’. // a description of the book
‘author_id,’. // the author id. This is how Akelos will know how to link
‘published_on’ // the publication date
);
$this->createTable(‘authors’,
‘id,’. // the key
‘name’ // the name of the author
);
}
function down_1(){
$this->dropTables(‘books’,’authors’);
}
}
?>
【booklink データベースインストーラ実行】
$ cd ~/booklink
$ ./script/migrate Booklink install
【booklink(book/author) スキャフォールド】
$ cd ~/booklink
$ ./script/generate scaffold Book
$ ./script/generate scaffold Author
【実行時アクセスディレクトリ権限設定】
$ cd ~/booklink/app/views/
$ find . -type d -exec chmod a+rwx {} \;
$ cd ~/booklink/app/locales/
$ find . -type d -exec chmod a+rwx {} \;
※ここでは取り急ぎざっくり権限設定しています。本番環境ではもうちょっと考慮する必要ありかも。
【booklink実行確認】
Webブラウザから http://XXXXXXXX/book にアクセス。
追加、更新、削除でエラーとならないこと。
Webブラウザから http://XXXXXXXX/author にアクセス。
追加、更新、削除でエラーとならないこと。
今回はここまで、次回は続きをやります。
[…] 前回は、akelos導入、チュートリアル用のbooklinkをセットアップをしてbook/authorの追加、更新、削除までやりましたが、今回は、book/authorの関連付けです。 […]