忍者ブログ

uthorofotus iruc

プログラムを組むために考えたり憶えたりした、いろいろなことを記録していきます。タイトルの読みは「ウソロフォトス イルーク」

[14]  [13]  [12]  [11]  [10]  [9]  [8]  [7]  [6]  [5]  [4

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

askeet day one:starting up a project の解説

symfonyのaskeetチュートリアル1日目です。symfonyについては過去の記事をみてください。

さて、前回の記事から時間が空いてしまいました。その間にsymfonyは1.0が公開され、symfonyの解説本Webにも同じ内容が掲載されています)も英語ながら出版されました。紙媒体の方が読みやすいので、本をAmazonで購入して1章~14章まで読みました。誰かが日本語完全訳を出す前に内容についての記事を書きたいと思っています。ただ、本の内容はある程度symfonyの挙動を知っている人が読んだ方が理解しやすい気がしますので、askeetを先にやってしまいます。

チュートリアル文章に書いていないこと、自分が躓いたポイント、補足した方が良いと思ったことなどを中心に書いていくつもりです。チュートリアル文章をメインに、この記事を補足情報として読んで欲しいです。だから記事のタイトルは"解説"としました。


askeetを始める前に関連サイトをあげておきます。まず、askeetチュートリアルは日本語化できていないページが多くありますが、有志が未訳のページを日本語化されています。この他には、using APIの船木信宏さんがaskeetを24日分すべて終え、その感想をブログに書かれていますのでこちらも見ておくと良いかもしれません。

1日目のチュートリアルの日本語版はこちら本家英語版)です。日本語版のチュートリアルについては、もしかしたら古いバージョン対応のままかもしれません。上手く動くかないことがあったら、本家英語版と見比べてみるとトラブルの原因が分かるかもしれません。本家英語版は、各記事の下に、さまざまな人がコメントをしています。もちろん英語で書かれていますが、似たようなトラブルにあっている人のコメント内容は参考になります。
ではaskeetを始めましょう。

■挑戦(The challenge)
askeetチュートリアルは2005年の12月1日から始まった、1日に1チュートリアル記事を掲載するというものでした。1日1時間とチュートリアル中で言っていますが、実際はトラブルにあったりしますので2~3時間は見ておいた方がいいかもしれません。

■プロジェクト(The project)
まずはプロジェクトの名前を決めます。とりあえずaskeetという名前にしているようです。(この名前を付けた理由は後日分かります)

■本日の目的(What for today)
1日目はsymfonyのインストールとその動作確認、symfonyを動かすためのWebサーバの設定をしています。2日以降より本格的にsymfonyで開発をしていきますので、今日はその前準備と言ったところです。

■Symfonyインストール(Symfony installation)
チュートリアルではあえて書かれていませんが、symfonyを動かすためにApache/PHP/MySQL(PostgreSQLでも多分ok)を入れておきましょう。本家wikiなどが参考になります。ubuntu(多分debianも)は設定を一部直しておく必要があるみたいです。
PEARを使ってインストールしています。チュートリアル中ではβ版(symfony/symfony-beta)を入れていますが、これはsymfony1.0が公開される前に書かれた古い指示です。stable版(symfony/symfony)の1.0を入れましょう。

pear install symfony/symfony

もしかして、インストール中に以下のようなエラーが出るかもしれません。

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 8192 bytes) in /usr/share/php/PEAR/Installer.php on line 514

本家からダウンロードしてきたtar.gzファイルをPHPで展開する際に、PHPで扱えるメモリ制限をオーバーしてしまったみたいです。これはインストールするsymfonyのデータが大きい(16M近い)せいかと思います。PHPの初期設定では8Mになっていることがありますので、ここで引っかかる人は結構いそうな気がします。インストールのために、php.iniのmemory_limitを16M以上にしておきましょう。ubuntuでは、コマンドライン(CUI)用は"/etc/php5/cli/php.ini"、Webサーバ(apache)用は"/etc/php5/apache2/php.ini"と分かれています。PEARはCUIですので、間違えないようにしましょう。私は、cliとapacheの両方ともmemory_limitを増やしておきました。
あと、phingのインストールをするように指示していますが、1.0ではsymfonyパッケージに含まれるようになりましたのでその必要はなくなりました。

■プロジェクトのセットアップ(Project Setup)
プロジェクトのデータを格納しておくディレクトリを作り、そこにsymfonyデータを入れます。symfonyコマンドを使えば、ディレクトリ作成以外はsymfonyが全部やってくれますのでとても楽です。

※symfonyコマンドについて
ここでは"init-project"と"init-app"という2つのコマンドを実行していますが、これ以外にもコマンドはいっぱいあります。"symfony -T"とコマンドを打ち込むと、symfonyコマンドの一覧を見ることが出来ます。このコマンドは2日以降どんどん使っていきます。なお、symfonyコマンドはプロジェクトのルートディレクトリ(チュートリアル例だと"/home/sfprojects/askeet")でしか実行出来ませんので注意してください。これを楽にする方法としては、プロジェクトディレクトリ下層でも実行出来るように、自前でスクリプトを書く方法があります。シェル版Ruby版Python版とありますので、好きなのを使えばよいでしょう。サーバにRubyやPythonが入っていない場合も考えられますので、unix環境の場合はシェル版が無難かもしれません。
シェルにbashを使っている場合は、bash_completionを設定しておくとタブキーでのコマンド補完が出来ますので是非やっておきましょう。本家のwikiにやり方が書いてあります。

■ウェブサービスのセットアップ(Web service setup)
▽WEBサーバ構成(Web server configuration)
askeetにアクセスできるようにWebサーバの設定をします。このチュートリアルではApacheと仮定して書かれています。本家wikiのubuntu用設定ではapache2.confに直接設定を書いているようですが、せっかくsites-availableディレクトリがありますのでそれを使いましょう。/etc/apache2/sites-available/askeet に設定ファイルを作って、a2ensiteコマンドにてaskeet設定ファイルを有効にします。askeetという設定ファイルを有効にするのであれば"sudo a2ensite askeet"です。

▽ドメイン名を宣言(Declare the domain name)
このチュートリアルでは、プロジェクトにアクセスするためのドメインをaskeet(http://askeet/)としています。hostsを修正するのはサーバだけでも良いですが、テストするのに他の端末からアクセスする場合もありますので、その端末のhostsも設定しておいた方がいいでしょう。
私は、開発サーバ(Ubuntu)とテスト/閲覧用端末(Windows)の構成ですので、どちらのhostsにもaskeetの設定をしてあります。

▽新しい構成をテストする(Web server configuration)
php設定が magic_quotes_gpc = Onだと上手く動かないかもしれません。その場合はsymfonyがエラーメッセージを出してくれるはずですので、指示に従ってOffにしましょう。.htaccessではなく、大元(php.ini)からOffにしてしまっていいでしょう。
アクセスに成功したならば、以下のようなページが表示されるはずです。チュートリアルに載っている画像は0.6系の古いものですので、ちょっと殺風景ですね。
symfonyインストール完了

開発環境にアクセスした際にデバッグ用ツールバーが表示されますが、これも今のバージョンではきれいになっています。
symfonyのデバッグ用ツールバー
[Sf]ボタンでバーの最小化、[×]ボタンでバーを消すことができます。バーを消したら、ページをリロードしないと出てきませんので注意してください。使い方は後日説明があるでしょう(多分)。

なお、このバーが上手く表示されない場合は、Webサーバ設定のsfディレクトリの設定が上手くいっていない可能性があります。sfディレクトリには、symfonyが提供している機能(デフォルトページで使う画像やAjax用のJavaScriptソース)で使用するファイルがありますので、パスは必ず通しておくべきです。後日のチュートリアルで上手く動かなくなりますので、もういちどサーバ設定を見直しましょう。もし上手く行かないのであれば、シンボリックリンクを使ってもよいでしょう。sfディレクトリはhttp://askeet/sf/ に対応しますので、"ln -s /usr/share/php/data/symfony/web/sf web/sf"になるでしょうか。

■Subversion
この部分は特にsymfonyの動作とは関係ありません。ただ、本家ではSubversionを使ってソースコードのバージョン管理をしていますので、最新のソースコードを見たりするためにSubversionをある程度使いこなして欲しいという意図でしょうか?なお、この後のでチュートリアルではSubversionについては何も言及されていません。
symfony開発者の間では、ソースコード管理にSubversion、バグトラックにはtracというのがデフォルト環境でしょうか、憶えておいて損はないようです。

■ではまた、明日(See you Tomorrow)
2日目ではいよいよデータベースと接続します。前半最大の山場(多分)です。

以上、1日目でした。思ったより記事が長くなってしました。次はページを分割した方がいいかもしれません、どうしようかな。ちなみに、私はaskeet自体を9日目までしかやっていません。嘘言ってたらごめんなさい。

PR

この記事にコメントする

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字

この記事へのトラックバック

この記事にトラックバックする:

askeet day two:setting up a data model の解説 HOME WindowsUpdateが失敗する

プロフィール

HN:
flyfront
性別:
非公開
自己紹介:
PHPプログラマ。東京でsymfonyな仕事してます。

Wassr

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

最新コメント

[01/02 通りすがり]
[10/18 flyfront]

バーコード

アクセス解析

忍者ブログ [PR]
Template by repe