DEVM (Developer & Engineers' Virtual Machine) 是專門為網站開發維護人員準備的虛擬伺服器鏡像,使用者可以非常簡單的使用vmplayer運行這一鏡像來類比網站伺服器環境,便於開發自己的應用。
本文詳細介紹了如何使用DEVM作為PHP開發環境。考慮到大多數使用者的情況,本文採用 Windows7 作為開發用作業系統。
關於DEVM最新版本的資訊可以看這裡:http://www.1308362.com/devm/12.11/release-info
1,前言
很多做PHP開發的程式員一定對LAMP不陌生,但是受到一些客觀因素的影響,多數人開發 PHP 程式都會先在 Windows 下開發,然後再部署到 Linux 伺服器。
在 Windows 下開發 PHP 程式的人肯定很熟悉類似 Wamp / Xampp 這些運行在 Windows 下的AMPApache + Mysql + PHP)的軟體包。這些軟體包簡單易用,但是,這些軟體包並非是真實的 LAMP 環境,使用這些軟體包並不利於開發人員全面深入的掌握程式部署和啟動並執行技術環境,所以把Windows下開發的PHP系統部署到Linux下時經常會遇到一些問題,例如典型的路徑的問題、分行符號問題等。
DEVM是一個高度整合的Linux虛擬機器鏡像,可以提供非常貼近真正生產環境的的 LAMP 系統。DEVM 的 LAMP 由最新的 gentoo linux、apache、mysql、php(fpm+apc) 組成。由於 DEVM 下所有的軟體是完全定製編譯,效能十分強大。經過測試,DEVM效能遠超在物理機啟動並執行Wamp/Xampp某些系統可達到30倍以上的效能差距)。而僅僅分配128MB記憶體,DEVM 就可以很好的提供一個完整的 LAMP 環境了。
2,準備
如果想體驗DEVM,我們需要做一些準備工作。
首先,DEVM是基於vmware構建的虛擬機器鏡像有kvm版本,但不單獨提供),所以我們需要先下載一個vmplayer來運行這個鏡像,:http://www.vmware.com/go/get-player-cn
然後我們下載DEVM,鏡像壓縮後大小約270MB,:http://pan.baidu.com/share/link?shareid=111849&uk=3472985267
解壓DEVM需要2G左右的硬碟空間,由於DEVM預設設定虛擬硬碟的尺寸為8GB,所以建議使用者準備9~10G的硬碟空間來存放DEVM。
開發PHP程式,我們經常會使用一些常用的工具,大家可以根據個人的習慣選擇,也可以根據我的建議來安裝下面的軟體:
- Secure Shell Client,可以方便和虛擬機器分頁檔的ssh用戶端
- Putty,非常好用的ssh用戶端
- FileZilla,推薦使用的ftp用戶端
- notepad++,簡單易用的文本開發工具,編輯php檔案很不錯
- dreamweaver,大名鼎鼎的DW不用介紹了
- eclipse + aptana,aptana對PHP和網站開發非常友好,而且提供ftp用戶端
如果大家怕麻煩,安裝notepad++、filezilla就可以開始利用DEVM開發php程式了。
而dreamweaver和eclipse/aptana選一組即可,dreamweaver一向對基於ftp的遠程伺服器管理很友好,而aptana也提供了類似的功能。
準備好了這些軟體,我們可以開始動手了。
3,我們的目標
作為大家熟悉PHP應用的第一步,很多使用者都會選擇安裝一些現成的開源PHP系統,例如CMS系統,所以在接下來的例子裡面,我們會把應用DEVM環境的目標設定為2個:
- 安裝一個drupal cms系統,並且使用site01.lo作為這個系統的測試用網域名稱
- 編寫一個基於thinkphp的網站,並且使用site02.lo作為這個系統的測試網域名稱
4,環境設定
我們首先啟動DEVM鏡像。通過vmplayer設定好DEVM參數之後就可以直接運行了。
DEVM只需要1CPU、64MB記憶體即可啟動,不過推薦分配256MB或更多的記憶體預設256MB)。一般LAMP運行之後記憶體佔用大概在120MB左右。
啟動DEVM之後需要記住虛擬機器的IP地址。登入方式可以直接在虛擬機器控制視窗或者用ssh登入。登入DEVM虛擬機器的帳號是root,密碼1308362。登入之後ifconfig eth0 就可以看到IP地址。我的是:192.168.58.129。
要在Windows下設定好測試用的網域名稱。編輯 C:\Windows\System32\drivers\etc 下的 hosts 檔案,增加兩行:
- 192.168.58.129 site01 site01.lo
- 192.168.58.129 site02 site02.lo
在DEVM虛擬機器裡面要編輯/etc/hosts,加入同上的兩行。
DEVM的FTP使用者佈建是支援本機使用者登入,所以我們只需要添加虛擬機器的本機使用者就可以通過FTP來使用這些使用者登入。
添加使用者的命令:
- devm ~# useradd site01 -m -G ftp,apache -s /bin/nologin
- devm ~# passwd site01
- devm ~# chmod a-w /home/site01
- devm ~# mkdir -p /home/site01/wwwroot/{htdocs,cgi-bin}
- devm ~# chmod -R 777 /home/site01/wwwroot
- devm ~# chown -R site01:site01 /home/site01
chmod a-w 的原因是vsftp不允許使用者根目錄可寫,而我們需要上傳的網站檔案都在 /home/site01/wwwroot 下。
如果上傳有問題,通常是可寫入權限的問題,在/home/site01下執行 chmod -R 777 wwwroot 即可。當然,至於讀寫執行許可權的管理可以更加嚴格,本文不贅述。
-G 參數後面沒有users組,-s後面也是/bin/nologin,就是說這個使用者並非用於系統操作,無法通過ssh登入的。如果希望這個使用者可以登入虛擬機器,-G ftp,apache,users -s /bin/bash 即可。
至於使用者site02,重複以上操作即可。如果大家覺得麻煩,可以寫個指令碼假設叫add_ftp_user.sh),內容類別似:
- #!/bin/bash
-
- if [ -z $1 ]; then
- echo "Warn: must specific a user name!"
- else
- useradd $1 -m -G ftp,apache -s /bin/nologin
- passwd $1
- chmod a-w /home/$1
- mkdir -p /home/$1/wwwroot/{htdocs,cgi-bin}
- chmod -R 777 /home/$1/wwwroot
- chown -R /home/$1
- fi
然後 運行 ./add_ftp_user.sh site01; ./add_ftp_user.sh site02 即可。
然後我們在用戶端上做設定。
在FileZilla上開啟網站管理器,建立一個叫做site01的網站。
通用設定
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131228/12225a144-0.jpg" />
這個時候我們也可以設定同步機制,就是當ftp串連之後,點擊本地目錄,遠程目錄會同步切換,這樣省得上傳檔案的時候要本地遠程不斷的手動保持目錄一致。
假設我們第一個網站的Windows本地目錄是 d:\devm\site01,那麼我們可以在FileZilla網站的進階設定中如此設定要選中“使用同步瀏覽”):
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131228/12225921T-1.jpg" />
點擊串連之後應該
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131228/1222591063-2.jpg" />
由於我們在本地沒有建立htdocs目錄,所以點擊右邊伺服器上的htdocs目錄會有報錯。只要我們在本地site01目錄下建立htdocs目錄,則可看到同步瀏覽的作用了。
接下來我們來設定apache vhost,讓我們可以通過 http://www.site01.lo 訪問這個網址。
由於devm 2012.11發布之後,我對重新做了一些apache的設定,所以大家需要先到 https://github.com/goldeagle/devm/tree/master/share/profile/etc/apache2 擷取最新的設定檔,覆蓋到 /etc/apache2 即可。
其中在/etc/apache2/vhost.d/目錄下已經提供了site01的預設設定。如果新增一個vhost的話,只需要:
- <VirtualHost site01.lo:80>
- ServerName site01.lo
- ServerAlias www.site01.lo site01.lo site01
- ServerAdmin 1308362@gmail.com
- DocumentRoot "/home/site01/wwwroot/htdocs"
- <Directory "/home/site01/wwwroot/htdocs">
- Options All
- AllowOverride None
- DirectoryIndex index.php index.html
- </Directory>
- ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/site01/wwwroot/htdocs/$1
-
- <IfModule alias_module>
- ScriptAlias /cgi-bin/ "/home/site01/wwwroot/cgi-bin/"
- </IfModule>
-
- <Directory "/home/site01/wwwroot/cgi-bin">
- AllowOverride None
- Options None
- Require all granted
- </Directory>
-
- <IfModule mpm_peruser_module>
- ServerEnvironment apache apache
- </IfModule>
- </VirtualHost>
重啟一下apache的服務/etc/init.d/apache2 restart,就可以生效。
我們在windows下的d:\devm\site01\htdocs下面新增一個檔案:index.php。編輯這個檔案,加入:
- <?php
- phpinfo();
- ?>
然後通過FileZilla串連site01,切換到本地網站的htdocs目錄下,上傳建立的index.php檔案,再通過瀏覽器開啟:http://www.site01.lo
大家應該可以看到如下的結果:
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131228/1222592200-3.jpg" />
至此,環境配置搞定!
敬請期待本文第二部分。
本文出自 “東莞金雕” 部落格,請務必保留此出處http://dgoldeagle.blog.51cto.com/6255429/1076231