程式開發伺服器環境搭建
- 目的:在Linux平台上搭建一個協同開發工作環境
- 軟體:Linux 2.6 + Apache2 + PHP4.x + Mysql5.x; subversion1.3.1 + mantis1.0.2
- 基本思路:
- 使用LAMP搭建一個Web介面,便於管理
- 使用subversion進資料列版本設定
- 使用trac進行bug(缺陷)跟蹤(也可選用mantis)。
一、安裝軟體
在linux下常用的安裝方式是使用rpm包,我們選用yum(或者apt-get)工具來解決包之間的依賴關係,具體如何用法,這裡不再贅述,不懂得問 一下Mr. Google吧。如果你覺得自己用tar包,編譯安裝的方式比較爽,你也可以試一下,不過不推薦喲,別人幫你做好了,幹嗎還要費那個勁。我這裡給出一個自 動化的指令碼,可能裡面某些軟體在你機器上的配置找不到,那牛需要你到網上查一下,把相應倉庫的地址加入到yum的設定檔當中。
#!/bin/bash # install python yum -y install python.i386 python-devel.i386 python-lxml.i386 python-sqlite.i386 python-clearsilver.i386 swig.i386 python-setuptools.noarch # install subversion yum -y install subversion.i386 subversion-devel.i386 # install clearsilver yum -y install clearsilver.i386 clearsilver-devel.i386 # install sqlite yum -y install clearsilver.i386 clearsilver-devel.i386
# install LAMP yum -y install httpd.i386 mod_auth_mysql.i386 mod_dav_svn.i386 mod_log_sql.i386 mod_authz_ldap.i386 mod_python.i386 mod_ssl.i386
yum -y install MySQL-python.i386 mysql.i386 mysql-devel.i386 mysql-server.i386 yum -y install php-xml.i386 php.i386 mod_suphp.i386 php-devel.i386 php-ldap.i386 p-readline.i386
# install optional yum -y install enscript.i386
# install trac yum -y install trac.noarch # install mantis yum -y install mantis.noarch |
上述軟體安裝完成之後,預設情況下trac被安裝在/usr/share/trac下,其他應該在/bin或者/usr/bin目錄下。
軟體安裝完成之後,下面就開始我們的平台搭建。我們要建立兩個工程projectA和projectB,使用WEB介面進行管理。
二、搭建平台
- 建立subversion倉庫並配置subversion
假定倉庫的地址為 /work/repos,我們進行如下的操作:
#svnadmin create --fs-type fsfs /work/repos/projectA #svnadmin create --fs-type fsfs /work/repos/projectB |
經過上面兩步,我們已經建立了兩個倉庫,下面是要對它進行一些設定了,主要就是存取權限之類的以及服務運行方式。關於subversion的用法,可以到其網站或者svn中國上找本文檔看看。
主要設定 /work/repos/ProjectA/conf/下面的passwd和authz檔案,具體如何設定請查看svn的協助。
subversion有三種運行方式,本地,svnsever,以及同apache整合,我們要使用的是最後一種方式,後面會具體介紹如何配置。
接下來我們要建立trac的環境,假定我們安裝到/work/trac-env/目錄下,使用如下命令:
#trac-admin /work/trac-env/projectA initenv #trac-admin /work/trac-env/projectB initenv |
在執行上述命令的時候會問你svn倉庫的地址,告訴它在/work/repos/projectA,/work/repos/ProjectB下面就是 了,如果你弄錯了也沒有關係,因為可以手動設定的,而且很簡單哪。設定檔放在了conf/trac.ini下,具體配置選項的意義和用法,這裡也不講, 參考其首頁上的說明。
我們的主要精力放在了如何把subversion以及trac和apache結合起來,提供一個web管理介面上,所以這部分是我們的重頭戲。
如果按照我們上面的指令碼的安裝方式,在安裝完成後,在/etc/httpd/conf.d/目錄下面應該有subversion.conf和trac.conf兩個檔案,我們分別配置他們就行了,二者沒有必然的聯絡。
主要是配置 /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so #上面兩行用於家在模組 <Location /repos> DAV svn # SVNPath /work/repos/projectA #如果只顯示一個工程,則用這個 SVNParentPath /work/repos #顯示所有工程 # 下面進行許可權配置 # # Limit write permission to list of valid users. <LimitExcept GET PROPFIND OPTIONS REPORT> # # Require SSL connection for password protection. # # SSLRequireSSL # AuthType Basic AuthName "subversion repository" AuthUserFile /work/repos/.htpasswd #密碼檔案必須用htpasswd產生 AuthzSVNAccessFile /work/repos/.authz #管理組的許可權 Require valid-user </LimitExcept> </Location> |
可以使用命令 #htpasswd -cm /work/repos/.htpasswd lirui來為使用者lirui添加密碼,建立檔案/work/repos/.authz,並按照svn的格式要求配置它。
在配置完成後,重新啟動http服務:#apachectl restart
這時候就可以通過命令:svn co http://your_site_ip/repos/projectA
把projectA的源碼check到本地了(前提是你有相應許可權),如果具有寫入權限,以後可以直接通過svn commit命令提交修改結果。
配置/etc/httpd/conf.d/trac.conf,下面是給出的一個藍本
#設定目錄許可權,如果不設定這個,你會得到沒有存取權限的錯誤,很煩人喲 <Directory "/usr/share/trac/htdocs"> Order allow,deny Allow from all </Directory> #以後你就可以輸入 http://your_site/trac來訪問,執行的就是這個trac.cgiScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi ### Trac need to know where the database is located <Location "/trac"> # SetEnv TRAC_ENV "/work/trac-env/projectA" #如果只顯示一個工程,用這個 SetEnv TRAC_ENV_PARENT_DIR "/work/trac-env" #顯示多個工程 </Location> ### You need this to allow users to authenticate <Location "/trac/login"> AuthType Basic AuthName "trac" AuthUserFile /work/trac-env/trac.htpasswd #使用htpasswd產生的密碼檔案 Require valid-user </location> ScriptAlias /trac/projectA /usr/share/trac/cgi-bin/trac.cgi ### Trac need to know where the database is located <Location "/trac/projectA"> SetEnv TRAC_ENV "/work/trac-env/projectA" #如果只顯示一個工程,用這個 # SetEnv TRAC_ENV_PARENT_DIR "/work/trac-env" #顯示多個工程 </Location> ### You need this to allow users to authenticate <Location "/trac/project/Alogin"> AuthType Basic AuthName "trac" AuthUserFile /work/trac-env/projectA/trac.htpasswd #使用htpasswd產生的密碼檔案 Require valid-user </location> ScriptAlias /trac/projectB /usr/share/trac/cgi-bin/trac.cgi ### Trac need to know where the database is located <Location "/trac/projectA"> SetEnv TRAC_ENV "/work/trac-env/projectB" #如果只顯示一個工程,用這個 # SetEnv TRAC_ENV_PARENT_DIR "/work/trac-env" #顯示多個工程 </Location> ### You need this to allow users to authenticate <Location "/trac/project/Alogin"> AuthType Basic AuthName "trac" AuthUserFile /work/trac-env/projectB/trac.htpasswd #使用htpasswd產生的密碼檔案 Require valid-user </location> |
至此,我們已經配置完了,現在在瀏覽器輸入 http://your_site_ip/trac/projectA 就能看到一個web介面的管理系統了,好好體驗一把嘍。
還有一點不是很爽,有時候我們需要只輸入IP就能找到我們需要的網頁,比如我們輸入http://your_site就得到一個頁面,而不要 http://your_site_ip/trac/projectA才得到。我的做法是建立檔案/var/www/html/index.html,並 設定其轉到對應頁。下面是我的一個設定:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Redirection</title> <meta http-equiv="refresh" content="0;URL=/trac/projectA"> </head> <body> <h1><center> edirecting to trac bug system ...<br> <a href="/trac/projectA">哈哈,到這來</a> </h1> </body> </html> |
三、使用簡介
這部分待寫了:)
看看時間,快淩晨1:00了,有點困了,回宿舍睡覺了^_^
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=715784