Webアプリケーションの開発といえば、
- ローカルでPHP、Pythonなどのスクリプトをシコシコ書く
- FTPや何かでモリモリファイルをアップロード
- ブラウザで動作確認
開発環境って
まず開発環境は、ほぼ皆さんWindowsなのでWindows主体の構成- Windows上でコーディング、開発
- 動作環境はVMware Playerで対象サーバーを作成して実施
- VMware Playerで作成したLinux環境の特定のディレクトリをsambaを利用してWindowsへエクスポート
- Windowsで仮想環境のLinuxからエクスポートされたディレクトリをマウント
- Windowsへマウントしたフォルダへスクリプト展開
- Eclipseなどのエディタでコーディング、デバック
- Windows内のブラウザで仮想環境のWebサーバーへアクセスして動作検証
という感じ、で環境を構築してみる
環境構築
こんな感じの構成で作成
VMWare Player上のLinuxにWebサーバーを作成
仮想環境のOSはGentoo Linuxを利用しました、その他のOSの場合はそれなりに設定すればいくと思いますVMware Playerのインストールと設定は、はしょります。
Webサーバーインストール
supernova ~ # emerge www-servers/apache
PHPのインストール
supernova ~ # emerge dev-lang/php
ZendFrameworkのインストール
supernova ~ # emerge dev-php/ZendFramework
xdebugのインストール
supernova ~ # emerge dev-php/xdebug-client supernova ~ # emerge dev-php/xdebug
ネットワークの設定
vhostでサーバーを設定するためIPアドレスをエイリアスで追加しておくsupernova ~ # cat /etc/conf.d/net
config_eth0=(
"192.168.89.10/24"
"192.168.89.11/24"
)
routes_eth0=("default via 192.168.89.1")
supernova ~ # /etc/init.d/net.eth0 restart
supernova ~ # ifconfig -a
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.89.10 Bcast:192.168.89.255 Mask:255.255.255.0
...
eth0:1 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.89.11 Bcast:192.168.89.255
apacheの設定
vhostを設定する、00_default_vhost.confは修正、website_vhost.confは新規に追加しサーバーを起動する。サーバーを起動したら、Windows上のブラウザからhttp://192.168.89.10/へアクセスしサーバーが動いていることを確認する。
さらに、website_vhost.confのディレクトリを作成しておく。
supernova vhosts.d # cat /etc/apache2/vhosts.d/00_default_vhost.conf <IfDefine DEFAULT_VHOST> <VirtualHost 192.168.89.10:80> ServerName localhost Include /etc/apache2/vhosts.d/default_vhost.include <IfModule mpm_peruser_module> ServerEnvironment apache apache </IfModule> </VirtualHost> </IfDefine>
新規に追加
supernova vhosts.d # cat /etc/apache2/vhosts.d/website_vhost.conf <IfDefine DEFAULT_VHOST> <VirtualHost 192.168.89.11:80> ServerName website ServerAdmin webmaster@gmail.com ErrorLog /var/log/apache2/website_error_log CustomLog /var/log/apache2/website_access_log common DocumentRoot "/home/apache/website" <Directory "/home/apache/website"> Options All AllowOverride All Order allow,deny Allow from all </Directory> <IfModule mpm_peruser_module> ServerEnvironment apache apache </IfModule> </VirtualHost> </IfDefine> supernova home # mkdir -p /home/apache/website supernova home # chown -R apache:apache /home/apache/website supernova home # ls -l drwxr-xr-x 3 apache apache 4096 May 2 04:43 apache supernova vhosts.d # /etc/init.d/apache2 start
sambaのインストール、設定
Windowsとディレクトリを共有するためにsambaをインストールし設定する。とりあえずWindowsと共有できればいいので、セキュリティーとか無視(ローカル環境だし...)
supernova home # emerge net-fs/samba
sambaサーバーの設定
/etc/samba.smb.conを修正 workgroup = [Windowsへ設定したワークグループ] コメントをはずす passdb backend = tdbsam エクスポートするディレクトリを追加する [apache] comment = Web Directories browseable = yes writable = yes path = /home/apache
<span class="deco" style="font-weight:bold;">サーバーの起動</span>
supernova conf.d # /etc/init.d/samba start
samba用ユーザーとパスワードの設定
ユーザーの設定、共有フォルダにアクセスするときに必要なパスワードを設定しておく。パスワードなしでアクセスできるような設定がわからないので....
supernova conf.d # smbpasswd -U apache New SMB password: Retype new SMB password:
Windows上へネットワークドライブを作成
sambaでエクスポートしたディレクトリにアクセスできるようにする、ネットワークからフォルダにアクセスするとユーザーとパスワードを入力しろといわれるので、とりあえずしておく。sambaのユーザー設定で作成したユーザーとパスワードで入力
アクセスできたらネットワークドライブを作成する

「コンピュータ」-> 「ネットワークドライブの割り当て」で新規にドライブを作成
Z:ドライブとしてアクセスできるようになりましたのでここへWebスクリプトを展開しますよぉ。
スクリプトの展開
適当にZendFrameworkをセットアップしWebからアクセスできるか確認します。作成したZ:ドライブにかんな感じでファイルをマップします
-- Z:\website |-- application | |-- controllers | | |-- ErrorController.php | | |-- IndexController.php | | `-- SampleController.php | `-- views | |-- sample | | `-- sample.phtml | `-- index | `-- index.phtml `-- www |-- .htaccess `-- index.php
.htaccess
RewriteEngine on RewriteBase / RewriteRule !\.(js|ico|gif|jpg|png|css|html|xml)$ index.php
index.php
<?php
require_once('Zend/Controller/Front.php');
$front = $front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory('../application/controllers');
$front->setParam('noViewRenderer', true);
$front->dispatch();
IndexController.php
<?php
require_once('Zend/Controller/Action.php');
require_once('Zend/View.php');
class IndexController extends Zend_Controller_Action {
public $view;
public $res;
public function init(){
$this->view = new Zend_View();
$this->view->setScriptPath('../application/views');
$this->res = $this->getResponse();
}
public function indexAction() {
$this->res->insert('default', $this->view->render('index/index.phtml'));
}
}
SampleController.php
<?php
require_once('Zend/Controller/Action.php');
require_once('Zend/View.php');
class SampleController extends Zend_Controller_Action {
public $view;
public $res;
public function init(){
$this->view = new Zend_View();
$this->view->setScriptPath('../application/views');
$this->res = $this->getResponse();
}
public function sampleAction() {
$this->view->boo = 'よくわからない';
$this->res->insert('default', $this->view->render('sample/sample.phtml'));
}
public function infoAction() {
echo phpinfo();
}
public function indexAction() {
echo "Sample index!!!";
}
}
ErrorController.php
<?php
require_once('Zend/Controller/Action.php');
require_once('Zend/View.php');
class ErrorController extends Zend_Controller_Action {
public function errorAction() {
$errors = $this->_getParam('error_handler');
echo "Error!!";
}
}
index.phtml
<html> <head> <title>サンプルページ</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body bgcolor="#FFFFFF"> <p>OK index page!</p> </body> </html>
sample.phtml
<html> <head> <title>Hogeページ</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body bgcolor="#FFFFFF"> <p><?php print($this->boo) ?></p> </body> </html>で、http://192.168.89.11/sample/info/ にアクセスするとphpinfoが見れるはずです。
コーディングは、Windowsから好みのエディタで行えますし、変更したファイルをFTPしなくてもそのままローカルで実行することが可能です。
仮想環境のVMを持ち歩けるってとこが良さげなのですが、デメリットとといえば、VMware Playerで仮想環境を動かせるぐらいのスペックがPCに必要ぐらいですか?
VMware Playerの共有フォルダの機能を利用しても同様のことができるのですが、今回はsambaを利用してみました。
Web開発の先生方から、「こんな環境があるぜっ!」っていうのがあれば教えてください。
「何のためにxdebug入れたんだ」って思ってる人がいると思いますが、ちょっとまってて...つかれた



0 件のコメント:
コメントを投稿