symfony2をローカルで動作させる環境をサクッと作る

この記事は、Symfony アドベントカレンダー 2010 に参加しています。


開発環境が不手際によって消えてしまったため用意してきた記事がパーになってしまいブルーです。
そこで開発環境の再構築をまとめた結果を記事にすることにしました。
アドベントに参加されている他のみなさんの記事を読んで、自分もsymfony2を試してみたい!
そう思った方の参考になれば幸いです。
なおUbuntu大好きな僕なので今回の構築作業はUbuntu10.10にて行っています。

必要なソフトウェアのインストール

apache,php,mysql,mongoDB,gitをインストールします。

sudo apt-get install -y apache2
sudo apt-get install -y mysql
sudo apt-get install -y mysql-server
sudo apt-get install -y mongodb
sudo apt-get install -y mongodb-server
sudo apt-get install -y git
sudo apt-get install -y php5
sudo apt-get install -y php5-mysql
sudo apt-get install -y php5-dev
sudo apt-get install -y php-pear
sudo apt-get install -y php-apc
sudo pecl install pdo

必要なものはインストールできました。

symfony2のダウンロードと設置

次にsymfony2の最新ソースをgithubからチェックアウトします。
今回は/home/jiska/Public以下にソースを設置することにします。

cd /home/jiska/Public
git clone https://github.com/symfony/symfony-sandbox.git

最後にapp/cache,app/logsディレクトリを全ユーザーで書き込める権限をつけます。
本番運用時ではphp実行ユーザーに適切な権限を与えましょう。

chmod 777 app/cache
chmod 777 app/logs

これでsymfony2の設置は完了です。

php.iniの設定確認

symfony2は設置しましたがすぐに使うことはできません。
php.iniの設定を変更する必要があります。

php /home/jiska/Public/symfony-sandbox/web/check.php

以下のエラーと警告が表示されました。

[[ ERROR ]] Checking that the "date.timezone" setting is set: FAILED
            *** Set the "date.timezone" setting in php.ini (like Europe/Paris) ***
You must fix this problem before resuming the check.

[[WARNING]] Checking that php.ini has short_open_tag set to off: FAILED
            *** Set short_open_tag to off in php.ini ***

/etc/php5/cli/php.ini, /etc/php5/apache2/php.ini それぞれに以下の値を設定します。

date.timezone = Asia/Tokyo
short_open_tag = Off

最後にapacheのドキュメントルートを設定してブラウザからアクセスしましょう。
/etc/apache2/sites-available/defaultを編集します。
オリジナルのdefaultは消してしまうともったいないので/etc/apache2/sites-available/default.distとリネームして保存しておきます。

cd /etc/apache2/sites-available
sudo cp default default.dist
sudo vi default
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/jiska/Public/symfony-sandbox/web
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/jiska/Public/symfony-sandbox/web>
        Options Indexes FollowSymLinkS
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>

編集がおわったらapacheのconfファイル文法チェックを行ないましょう。

apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server localhost.localdomain (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost localhost.localdomain (/etc/apache2/sites-enabled/000-default:1)
Syntax OK

Syntax OKと表示されているので大丈夫ですね。たぶん。
apacheを再起動して、ブラウザからアクセスしてみます。

http://localhost/check.php

すべてグリーンで表示されていますか?もし表示されていなければphp.iniを確認してください。

これでsymfony2の環境作成は終わりです!

symfony2の使い方

symfony2の使い方ですが、いきなりソースを読み始めてもなにがなんだかわからない状態になってしまうかもしれません。
僕はなりました。symfony2はsymfony1.4から大きく構造が変わっているのも戸惑う原因の一つでした…。

公式サイトのドキュメントを見るのがいちばん手っ取り早いです。
Symfony2 Documentation

それでは良きsymfony2 lifeを。

Symfony Advent 2010

Symfony Advent 2010では12月1日から12月24日までを使って日替わりでsymfonyでイイなと思った小さなtipsから内部構造まで迫った解説などをブログ記事にして公開していくイベントです。

日本Symfonyユーザー会
Symfony アドベントカレンダー2010

※Syfony Advent 2010はsymfony好きな有志で集まったチームです。

windowsでwebサービスの開発をしているひとにUbuntuをオススメしたい3つの理由

windowsphpを使ってwebサービスの開発してるのをみていろいろ思うことがあったので書いてみた。
windowsは使ってるけどLinuxとかよくわからないって人向け。

なぜUbuntuをオススメしたいのか

windowswebサービスの開発を行うにはphpならばXAMPPなどを、Ruby on RailsならばInstantRailsなどを使うと思いますが、サービスの公開に利用しているサーバはCent OSやRedHatなどのLinux OSが大半だと思います。そんなLinuxサーバを操作するためにはどうしてもLinuxの知識は必要になってきます。それだったらはじめからLinuxを使って開発して、体を慣らしてしまえばいいのです。
そして数あるLinuxデストリビューションの中でもUbuntuは簡単に使うことができます。そして環境を整えることがとても簡単です。
この点からUbuntuはオススメです。

Ubuntuってなに?

日本公式サイトである http://www.ubuntulinux.jp/ より引用すると

Ubuntuは、コミュニティによって開発されている、Linuxベースのオペレーティングシステムです。ラップトップ、デスクトップ、そしてサーバに利用することができます。このOSには、Webブラウザ、プレゼンテーション作成、文書作成、表計算インスタントメッセンジャー、その他多くのあらゆるアプリケーションが含まれています。

現在の最新バージョンはUbuntu10.10で、来年4月に次期バージョンのUbuntu11.04がリリースされる予定です。

理由その1 windowsとほとんど変わらない操作環境だからなじみやすい

百聞は一軒に如かずということで僕のデスクトップマシンで動作しているUbuntu10.10のスクリーンショットを張り付けます。


ゆうかりんかわいいよゆうかりん
見た目はあまりwindowsと変わらないと思います。もちろん細かいところは違いますが、大きく戸惑うこともないはずです。

理由その2 windows PCにUbuntuデュアルブート環境を作れる

とは言うものの、windowsのPCしか持ってないし…そんな場合でもwubiというインストーラを使えば

  • 既存のwindows環境を残したまま
  • 簡単に

Ubuntuデュアルブート環境を作ることができます。
HDDの空き容量は10GBくらい割り当てておけば十分です。
本当に簡単にUbuntuを試せます。

詳しくは日本語wikiを。
https://wiki.ubuntulinux.jp/UbuntuTips/Install/WubiGuide

もちろんVMwareVirtualBoxなどの仮想環境構築ツールを使うという手もありです。

理由その3 webサービスに必要なツールがGUIで簡単に用意できる

Linuxというとソフトウェアの管理にターミナルを開いてコマンドを延々入力するというイメージがあるかもしれませんが、実際はそんなことはなくGUIで管理ができます。
Ubuntuではfirefox,Chromiumなどブラウザ、Eclipse,NetBeansなどのIDE、画像編集ツールのGIMP,SkypeなどがUbuntuソフトウェアセンターというツールで管理されています。

これを使えばソフトウェアのインストールやアンインストール、さらにアップデートもできます。
Ubuntuソフトウェアセンターに登録されていないソフトウェアも手動でファイルをダウンロードしてインストール、アンインストールができます。僕が使っているブラウザのOperaとかaction script作成用のFlex 3 SDKとか。

webサービスに使うphp,apache,mysql...の管理はSynaptic パッケージ・マネージャーで行ないます。

Ubuntuソフトウェアセンターと同じように、インストールしたいパッケージやモジュールを選択してインストールボタンを押すだけです。
自動で依存関係にあるパッケージもインストール、アップデートをしてくれます。
ちょっとしたテスト環境の構築には充分です。

まとめ

とにかく簡単に環境を用意することができます。Linuxを覚えたいけど難しそうで気が進まない、そんな人にこそまずはUbuntuをつかって欲しいなあと思います。

VMware vSphere Hypervisor(ESXi)を使って自分のPCに仮想環境を構築する インストール編

複数サーバがからんでくるシステム構築を楽にするためESXiを使って簡単に仮想サーバを増やすよ。
ESXiについての説明は http://thinkit.co.jp/article/127/ が参考になります。

インストールする環境

OS:windows XP Professional
CPU:pen4 2.4GHz
メモリ:2GB
HDD空き容量: C:10GB, D:50GB

メモリが多少不安…

インストールするもの

VMware vSphere Hypervisor (ESXi)

複数の仮想環境を統合管理できるスグレモノ。
http://www.vmware.com/jp/products/vsphere-hypervisor/

VMware Player

仮想環境構築のお供。
http://www.vmware.com/jp/products/player/

vSphere Client

ESXiの操作がGUIで簡単にできるので1台くらいは入れといたほうがいい。
すごい楽。だがしかしwindows専用なのが泣ける。

VMware Playerのダウンロードとインストール

VMware Playerのインストール用ファイルをここからダウンロードする。
http://www.vmware.com/go/get-player-jp
各製品のダウンロードにはアカウント登録が必須なので登録しておく。

ダウンロードが終わったら普通のソフトウェアと同じように画面に従ってインストールすればOK。

これがメイン画面。

ESXiをダウンロード

まずESXiのインストールに使うisoイメージをダウンロードする。
http://www.vmware.com/go/get-free-esxi

ダウンロードするisoイメージはVMware-VMvisor-Installer-4.1.0-260247.x86_64.isoを選択する。

ESXiをVMware Playerにインストール

新しい仮想マシン ウィザードにしたがって数ステップの作業をするだけなので簡単。

新しい仮想マシン ウィザードの起動

VMware Playerのメイン画面から仮想マシンの新規作成(N)を選択する。

ゲストOSの選択

先程ダウンロードしたESXiのisoイメージを選択する。

仮想マシンの名前

仮想マシンの名前と物理ファイルの保存場所を設定する。
名前はともかく保存場所は各自の環境に合わせて好きに決めてよし。
自分の設定は以下の通り。
仮想マシン名:ESXi
格納場所:D:\jiska\VM\ESXi

ディスク容量の設定

推奨サイズの40GBをそのまま設定する。

準備完了

設定した内容をよく確認して完了。

仮想マシンのコンソールが起動してインストールが開始される。

コンソールの作業

途中で何度かキー操作が求められるのでそれぞれ画面の説明をよく読んで操作する。

Enter

F11

Enter

F11

あとはインストールが終わるまで待つ。

これにてESXiインストール完了。Enterキーを押すとESXiが再起動される。

再起動が完了。次回以降の起動時にはこの画面が表示されるようになる。
ユーザーやパスワードなどなどの設定を変更したい場合はF2キーを押す。詳細は割愛。

これ以上このコンソールは操作しないので、間違って操作してイライラしないようにこのコンソールをバックグラウンドに待機させておくといいかも。

vSphere Clientのダウンロードとインストール

ESXiメイン画面に表示されているURL(DHCP)にブラウザでアクセスする。

Download vSphere Client というリンクがあるのでそちらからcSphere Clientのインストール用ファイルをダウンロード。

ダウンロードが終わったら普通のソフトウェアと同じように画面に従ってインストールすればOK。

vSphere Client 初めての起動

vSphere Clientを起動すると接続先の確認が表示されるので、先程インストールしたESXiのアドレスとユーザーとパスワードを入力する。

セキリュティ警告が表示されるが、特に問題ない。

ライセンスの期限についての説明が表示される。あとでライセンス登録を行いましょう。

vSphere Clientのメイン画面が表示される。

ESXiに仮想マシンのインストール

vSphere Clientのメイン画面に表示されているサーバを右クリックして新しい仮想マシンの追加を選択する。
追加ウィザードが表示されるので画面の指示に従うだけ。
サンプル画面ではubuntuをインストールしている。

構成

標準を選ぶ。

名前と場所

好きな名前を設定する。

データストア

そのまま次へ。

ゲストOS

あらかじめ用意しておいたisoイメージまたはCDを選択する。

ディスクの作成

そのまま次へ。

終了準備の完了

これで準備完了。仮想マシンのインストールが始まるので画面の指示に従いながらインストールをすすめる。

以降は同じ要領でサーバを追加していけばOKです。

ESXiのシャットダウン

ESXiをシャットダウンするためにはF12キーを押す。
ユーザーとパスワードの認証が求められるので正しく入力してEnterキーを押す。
インストール時の初期値は以下の通り。
ユーザー:root
パスワード:なし

お疲れ様でした。

php arrayのkeyについてのメモ

arrayのkeyにはintval的なものがかかってるらしい。
確認したphpのバージョンは5.2.9。

>php -r "$a=array('1'=>'a');var_dump($a);"
array(1) {
[1]=>
string(1) "a"
}

うんうん。

>php -r "$a=array('1'=>'a',1=>'b');var_dump($a);"
array(1) {
[1]=>
string(1) "b"
}

あ、key"1"が上書きされた。

>php -r "$a=array('1'=>'a',1=>'b','0.1'=>'c');var_dump($a);"
array(2) {
[1]=>
string(1) "b"
["0.1"]=>
string(1) "c"
}

文字列として定義すればkeyに小数設定しても大丈夫。

>php -r "$a=array('1'=>'a',1=>'b','0.1'=>'c',0.1=>'d');var_dump($a);"
array(3) {
[1]=>
string(1) "b"
["0.1"]=>
string(1) "c"
[0]=>
string(1) "d"
}

げーkey"0.1"が上書きされると思ったのに。

>php -r "$a=array('1'=>'a',1=>'b','0.1'=>'c',0.1=>'d',1.5=>'e');var_dump($a);"
array(3) {
[1]=>
string(1) "e"
["0.1"]=>
string(1) "c"
[0]=>
string(1) "d"
}
>php -r "$a=array('1'=>'a',1=>'b','0.1'=>'c',0.1=>'d',1.2=>'e');var_dump($a);"
array(3) {
[1]=>
string(1) "e"
["0.1"]=>
string(1) "c"
[0]=>
string(1) "d"
}

あとは想像通り。

ie6 no moreキャンペーン Operaをお勧めブラウザに追加してやる

「IE6はもういらない」――Web企業が撲滅キャンペーン
http://www.itmedia.co.jp/news/articles/0908/06/news031.html

ie6 no more
http://www.ie6nomore.com/

このキャンペーンには大賛成だ。でもOperaがお勧めブラウザ候補に乗ってないなんて絶対に許さないよ。ということで修正。

イメージ

実際の表示

Close this notice
Warning!
You are using an outdated browser
For a better experience using this site, please upgrade to a modern web browser.
Get Opera 9.6
Get Firefox 3.5
Get Internet Explorer 8
Get Safari 4
Get Google Chrome

インデント済みソース

<div style='border: 1px solid #F7941D; background: #FEEFDA; text-align: center; clear: both; height: 75px; position: relative;'>
<div style='position: absolute; right: 3px; top: 3px; font-family: courier new; font-weight: bold;'>
<a href='#' onclick='javascript:this.parentNode.parentNode.style.display="none"; return false;'>
<img src='http://www.ie6nomore.com/files/theme/ie6nomore-cornerx.jpg' style='border: none;' alt='Close this notice'/>
</a>
</div>

<div style='width: 800px; margin: 0 auto; text-align: left; padding: 0; overflow: hidden; color: black;'>
<div style='width: 75px; float: left;'>
<img src='http://www.ie6nomore.com/files/theme/ie6nomore-warning.jpg' alt='Warning!'/>
</div>
<div style='width: 275px; float: left; font-family: Arial, sans-serif;'>
<div style='font-size: 14px; font-weight: bold; margin-top: 12px;'>You are using an outdated browser</div>
<div style='font-size: 12px; margin-top: 6px; line-height: 12px;'>For a better experience using this site, please upgrade to a modern web browser.</div>
</div>
<div style='width: 160px; float: left;padding: 8px 1px;'>
<a href='http://www.opera.com' target='_blank'>
<img src='http://www.opera.com/media/images/logo/ologo_wback.gif' style='border: none;' alt='Get Opera 9.6'/>
</a>
</div>
<div style='width: 75px; float: left;'>
<a href='http://www.firefox.com' target='_blank'>
<img src='http://www.ie6nomore.com/files/theme/ie6nomore-firefox.jpg' style='border: none;' alt='Get Firefox 3.5'/>
</a>
</div>
<div style='width: 75px; float: left;'>
<a href='http://www.browserforthebetter.com/download.html' target='_blank'>
<img src='http://www.ie6nomore.com/files/theme/ie6nomore-ie8.jpg' style='border: none;' alt='Get Internet Explorer 8'/>
</a>
</div>
<div style='width: 73px; float: left;'>
<a href='http://www.apple.com/safari/download/' target='_blank'>
<img src='http://www.ie6nomore.com/files/theme/ie6nomore-safari.jpg' style='border: none;' alt='Get Safari 4'/>
</a>
</div>
<div style='float: left;'>
<a href='http://www.google.com/chrome' target='_blank'>
<img src='http://www.ie6nomore.com/files/theme/ie6nomore-chrome.jpg' style='border: none;' alt='Get Google Chrome'/>
</a>
</div>
</div>
</div>

Operaだけでけー!仕様です。
Operaだけブラウザのアイコンじゃねえ!もっといい画像見つけたら差し替えよう。

Windows VistaにVirtualBoxを使用して仮想Linux環境を作る

ホストOS:Windows Vista Home Premium
ゲストOS:Ubuntu9.04 desktop
VirtualBoxのバージョン:3.02

Ubuntuのダウンロード

http://www.ubuntulinux.jp/products/JA-Localized/download
Ubuntuのisoイメージをダウンロードしておく。700MB近いのでダウンロードしてる間にVirtualBoxの設定を行う。

VirtualBoxのインストール

インストールはホストOSのネットワーク設定がちょこちょこ変わるくらいで他に特に説明書くこともないので省略。
インストールが終わるとユーザー登録画面がでるので登録してあげてもいい。後からでもできるのかな?

ゲストOSのセットアップ

メイン画面

VirtualBoxを起動して仮想OSの設定を新規作成する。

インストールするOSの設定名と種類を設定


名前:Ubuntu
オペレーティングシステム:Linux
Version:Ubuntu
と設定。

使用するメモリのサイズを設定


必要に応じて調整する。ひとまず推奨値をそのまま。

仮想ハードディスクの設定


新規ハードディスクの作成を選択。すでに作成ずみのHDDを選ぶこともできる。
作成手順は後述。

確認

設定した値を確認して作成完了。

仮想ハードディスクの作成


ハードディスク ストレージタイプ


可変サイズでも固定サイズでもどちらでも。とりあえず初期サイズが小さい可変サイズを選択。

仮想ディスクの場所とサイズ


場所と最大サイズを設定。ファイルの場所は任意の場所、使用目的上おおきなサイズは必要ないので16GBにする。
場所:D:/Users/jiska/VirtualBox/Ubuntu.vdi
最大サイズ:16GB

確認

設定した値を確認して作成完了。

ゲストOSの起動

先ほどの手順で作成したゲストOSを選択して起動する。

初回起動ウィザード

初めての起動では初回起動ウィザードが起動する。

インストールするメディアの選択

インストールに使用するメディアを選択する。先ほどダウンロードしたUbuntuのisoイメージをVirtualBoxにマウントする。

メニューバー→ファイル→仮想メディアマネージャを起動→CD/DVDイメージタブ→追加→isoイメージを追加する。


確認

設定した内容を確認して起動。

Ubuntuインストーラが起動するのであとは自分の好みの設定でインストールする。

メモ

ゲストOSの起動時にいくつかポップアップ説明が表示されるのでよく読んでOKを押す。

おわり。