Hatena::ブログ(Diary)

モバイル系ニートエンジニア`chobi_e`の日記 Twitter

2010-11-03 Ubuntu10.10でSymfony2の開発環境をローカルに作る

Ubuntu10.10でSymfony2の開発環境をローカルに作る


メインマシンがMacbookAir11inchになり、開発環境も心機一転してウキウキな毎日ですがみなさんどうお過ごしでしょうか?


今日はUbuntu10.10が動いているローカルにSymfony2の開発環境構築をしてみたいと思います。


※開発環境とはいえ外部からアクセスされる可能性が少なからずともある場合は必ずファイアーウォールないしiptablesでの適切な権限設定を行ってくださいネ。


必要なパッケージをインストールしよう

そいでは必要なパッケージをインストールしていきましょう。今回はローカルの開発環境でセキュアであると仮定して特にmysqlのrootユーザーのパスワードは設定しません。

sudo aptitude install php5
sudo aptitude install php-pear
sudo aptitude install php-apc
sudo aptitude install php5-dev
sudo aptitude install php5-xdebug
sudo aptitude install php5-mysql
sudo aptitude install mysql-server
sudo vi /etc/mysql/my.cnf
#[mysqld]と[mysql]ディレクティブにdefault-character-setの設定を追記します
	[mysqld]
	default-character-set = utf8

	[mysql]
	default-character-set = utf8
sudo serivce mysql restart

とりあえずこれで一通り必要なものが揃いましたね。Web公開ディレクトリはUbunutuデフォルトで使われている/var/wwwを使うことにしましょう


ここでファイルの所有権の問題がちらっと出てくるのですが、今までの私の開発方法だとWindows上からSFTPを使ってweb公開用ユーザーとしてファイルをアップしていました。


しかし、今回はローカルの開発環境ということもありそのまま/var/wwwにあるファイルを編集してしまうとファイルの所有権がchobie.chobieとなってしまいます。いちいちユーザーを変更したり、所有権を変更するのは面倒くさいので公開ディレクトリへの読み書きはnfs経由にしてしまいましょう。


ちょっとアホくっさいですが、下記のような設定を行い公開ディレクトリへの読み書きはnfs経由にする事でファイルの読み書きがwww-dataユーザーで行われるようになります。(不要であれば次のステップは飛ばしてもらってかまいません)


NFSをインストールしてみよう

sudo aptitude install nfs-kernel-server
sudo vi /etc/exports
#ファイル末尾に追記します(anonuid/anongidはwww-dataのuid,gidを指定してください)
/var/www localhost(rw,fsid=0,no_subtree_check,root_squash,all_squash,anonuid=33,anongid=33)

sudo exportfs -ra

これで/var/wwwをnfsで共有できるようになり、さらにnfsのオプションでall_squashとanonuid/anongidを33に設定しているのでnfs経由の書き込みは全てwww-data.www-dataで行われることになりました(プログラムを実行したら当然今のユーザー権限で行われるので注意してくださいね!)


そいでは早速自分のホームディレクトリに開発用ディレクトリ(developmentとします)を掘って/var/wwwをnfsでマウントしてしまいましょう。


cd ~/
mkdir development
sudo mount -t nfs localhost:/var/www develoment

これでマウントが完了しました。試しになにかファイルを作ってきちんと動作しているかを確認しましょう。


cd development/
touch hello && ls -la hello
#-rw-r--r-- 1 www-data www-data 0 2010-11-03 21:38 hello
ls -la /var/www/hello
#-rw-r--r-- 1 www-data www-data 0 2010-11-03 21:38 hello

nfs経由できちんとwww-dataで書き込みができましたね。私はゴリゴリファイルつくって書くスタイルが好きなのでこれで開発も気分よく進められそうです。


設定も済んだしSymfony2のサンドボックスを動かそう


そいではsymfony2.chobie.airというホスト名でSymfony2のサンドボックスを動かすまでをやってみましょうか。


まずはhostsへのエントリの追加と、apache2のVirtualHostの設定を行ないます。


sudo vi /etc/hosts
#hostsにsymfony2.chobie.airのエントリを追加する
	127.0.0.1	symfony2.chobie.air

#symfony2のサンドボックスをダウンロード
cd ~/development/
git clone http://github.com/symfony/symfony-sandbox.git symfony2.chobie.air
mkdir symfony2.chobie.air/logs

#symfony2.chobie.airというVirtualHostを設定する
sudo vi /etc/apache2.sites-available/symfony2.chobie.air
<VirtualHost *:80>
        DocumentRoot /var/www/symfony2.chobie.air/web
        ServerName symfony2.chobie.air

        ErrorLog /var/www/symfony2.chobie.air/logs/errors
        CustomLog /var/www/symfony2.chobie.air/logs/access combined

        <Directory /var/www/symfony2.chobie.air>
                Options -Indexes
                AllowOverride All
        </Directory>

        <IfModule mod_php5.c>
                php_value date.timezone Asia/Tokyo
                php_flag short_open_tag off
        </IfModule>
</VirtualHost>

sudo a2enmod rewrite
sudo a2ensite symfony2.chobie.air
sudo service apache2 restart

今回は諸々をインスコしたあとなので間違いがないようにrestartさせときます。そいでは準備も整ったことですしhttp://symfony2.chobie.air/を叩いてみましょう。(symfony2.chobie.airなんてドメインは存在しませんが、/etc/hostsに追記したので名前解決をしてアクセスすることができます。)


f:id:chobi_e:20101103225042p:image

上記のように表示されていればOKですね。興味のある方は/check.phpもたたいてall greanになっているのをみてニンマリするのもいいかと思います


あとがき


ちょっと特殊な環境になりましたが、Symfony2の開発環境をローカルに作るということでどうだったでしょうか?nfsで無理やり権限を変更させてたりする部分はかなり個人的な趣向が強くでてしまっていますが、いちWeb開発者の環境づくりということで参考になるもしれません。


初めての方もサーバーの設定なんぞコピペで済むのでローカルなら億劫がらずトライしてみましょう。もちろん、実案件では専門の人に任せましょうね。


次回は未定ですがSymfony2を使ったシンプルなアプリケーションでも書いてみましょうか。