Home > fedora
fedora 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 の項目が表示されること
ここまでで本家のチュートリアルに出ているところまでできました。
- Comments: 0
- Trackbacks: 0
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 にアクセス。
追加、更新、削除でエラーとならないこと。
今回はここまで、次回は続きをやります。
- Comments: 0
- Trackbacks: 1
その rpm いつインストールしたんだっけ?
rpm をいつ入れたかを見たいときは、以下のコマンドで表示できます。
$
rpm -qa --last
このコマンド は、rpm をインストールした日付、時刻を新しいものの順番で表示してくれます。
もう一歩踏み込んで整形して表示したい場合、
$
rpm -qa --queryformat '%{INSTALLTIME} %{NAME}\n' | awk '{printf("%-12s: %-60s\n", strftime("%F %T", $1), $2);}' | sort
このように --queryformat オプションで表示したい項目を指定して整形してやります。--queryformat で指定できるオプションは、rpm --querytagsで表示することもできます。
インストール日時といっても rpm -U~などで更新した場合は、更新日時になってしまうので注意です。
- Comments: 0
- Trackbacks: 0
fetchmail + procmail でメール転送
どこかのメールサーバに届いたメールをなにも考えず全部別のメールサーバに転送したい場合の設定をgoogle、Technoratiで検索したらなかなかみつからなかったのでまとめてみました。
.forward とか /etc/aliases とかで転送してもよいのですが、この方法だと転送先に届かないとメールを送ったところに転送先の携帯メールアドレスとかが漏れてしまうので、今回は fetchmail + procmail でpopで取ってきて転送する方法です。
確認した環境/条件は、以下のようになってます。
Fedora 7
procmail-3.22-19.fc7
fetchmail-6.3.7-2.fc7
転送元メール(POP3)サーバ : xxx.example.com
転送元POPユーザ : foo
転送元POPパスワード: bar
転送先メールアドレス: xxxxx@donomo.ne.jp
転送に使うメールサーバ(MTA) : localhost
10分間隔で転送元に届いたメールをチェック
転送したメールも転送元のメールサーバに残す
【.fetchmailrc の記述】
set postmaster root
set nobouncemail
set logfile fetchmail.log
defaults
protocol pop3
no rewrite
no mimedecodepoll xxx.example.com
uidl
username “foo”
password “bar”
mda “/usr/bin/procmail”
keep
【.procmailrc の記述】
:0 c
! xxxxx@donomo.ne.jp
【注意事項】
.fetchmailrc と .procmailrc のアクセス権限は、600 (group と otherのread/write/execute権限なし) とする。
$ chmod 600 .fetchmailrc
$ chmod 600 .procmailrc
fetchmail.log を事前に作成しておく
$ touch fetchmail.log
【crontab の設定】
*/10 * * * * /usr/bin/fetchmail > /dev/null 2>&1
fetchmailは、daemon化して一定時間間隔でメールチェックすることもできるのですが、daemon化した fetchmailがもしも何かの理由で異常終了したりするとメールをある日突然取ってこなくなることを想定して、crontab 設定で 10分間隔で fetchmailを起動しています。
この設定で転送できるようになりました。それと、転送先をありえないメールアドレスに設定して確認したところ、メールの発信元にはエラーが返らずfetchmailを起動したユーザにエラーメールが届きます。
- Comments: 0
- Trackbacks: 0
ホーム > fedora
- Search
- Feeds
- Meta