Home > akelos

akelos Archive

Fedora 8 で akelos のチュートリアル (その2)

前回は、akelos導入、チュートリアル用のbooklinkをセットアップをしてbook/authorの追加、更新、削除までやりましたが、今回は、book/authorの関連付けです。

【book/authorモデル追記】

$ cd ~/booklink/
$ vi app/models/book.php
以下のようになるように追記
<?php

class Book extends ActiveRecord
{
var $belongs_to = ‘author’; // <- declaring the association
}

?>

$ vi app/models/author.php
以下のようになるように追記
< ?php

class Author extends ActiveRecord
{
var $has_many = ‘books’; // <- declaring the association
}

?>

【bookコントローラー追記】

$ vi app/controllers/book_controller.php
以下のようになるように追記
class BookController extends ApplicationController
{
var $models = 'book, author'; // < - make these models available

// … more BookController code

function show()
{
// Replace “$this->book = $this->Book->find(@$this->params[‘id’]);”
// with this in order to find related authors.
$this->book = $this->Book->find(@$this->params[‘id’], array(‘include’ => ‘author’));
}

// … more BookController code
}

【book form用テンプレート追記】

$ vi app/views/book/_form.tpl
以下のようになるように追記
< ?php echo $active_record_helper->error_messages_for('book');?>

< label for=”author”>_{Author}
< ?=$form_options_helper->select(‘book’, ‘author_id’, $Author->collect($Author->find(), ‘name’, ‘id’));?>

< label for=”book_title”>_{Title}
< ?php echo $active_record_helper->input(‘book’, ‘title’)?>

【book/author関連付け確認】
Webブラウザから http://XXXXXXXX/book にアクセス。
bookのeditを行ったとき、Author がプルダウンで選択できること。
bookのshowを行ったとき、Author の項目が表示されること

ここまでで本家のチュートリアルに出ているところまでできました。

Fedora 8 で akelos のチュートリアル (その1)

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

Search
Feeds
Meta

Return to page top