2008年09月23日
Bug Tracker 安裝紀錄
我之前介紹過 Trac 這個軟體的安裝及簡略的使用方式,但是 Trac 是一套基於 Python 開發的軟體缺陷追蹤系統,在安裝上有一定的複雜度。
這次,我推薦大家一套國人自行開發的 Bug Tracker ,它是一套以 PHP 所開發的軟體缺陷追蹤系統,相當適合不想安裝複雜開發環境的 PHP 開發者使用。
這裡有 Neo 寫的簡介:國人自製 Bug Tracker 。
下載
網址: http://www.twbsd.org/cht/bug_tracker/index.php?page=download.htm
在「按此下載」的連結上點一下,把 BugTracker-2.x.x.tar.gz 存放到網站根目錄就可以了。
安裝
Bug Tracker 號稱安裝非常容易,但其實在 PHP5 的環境上,還是有一些要特別注意的地方。
解開剛剛的 BugTracker-2.x.x.tar.gz ,然後我們會得到一個 bug 目錄;所以到時候我們可以用 http://localhost/bug 的網址來使用這套系統。
假設你的開發環境是 PHP5 ,那麼 short_open_tag 這個選項預設應該是 Off 。而 Bug Tracker 的程式碼大部份都是以 <? 開頭,因此我們需要把 short_open_tag 設為 On 。
不過因為我個人不喜歡去更動系統預設值,所以我改用 .htaccess 來改變 short_open_tag 的設定。請將以下內容存為 .htaccess 後,存在 bug 資料夾下。
php_flag short_open_tag on
接著我們要修改應用程式的設定,請用文字編輯器開始 bug/include/config.php ,找到:
$GLOBALS['BR_dbtype'] = "postgres";
將它註解掉 (前面加上 //) 。
然後取消以下程式碼開頭的註解:
$GLOBALS['BR_dbtype'] = "mysqlt";
然後往下看到:
$GLOBALS['BR_dbpwd'] = "";
在設定值上寫上 MySQL 的 root 密碼,讓程式可以自動建立資料庫。
最後修改應用程式的路徑:
$GLOBALS["SYS_PROJECT_PATH"] = '/home/synosrc/bug';
將 /home/synosrc/bug 改為你安裝程式的路徑。
現在開啟以下連結,進行安裝動作:
http://localhost/bug/setup/
基本上就是一直按 Next Step 而已,安裝程式會告訴你一切需要的資訊,並自動執行相關的動作。
安裝完後,請記得移除 bug/setup 這個資料夾。
這樣就完成安裝 Bug Tracker 囉~
設定語系
一開始 Bug Tracker 的登入畫面是正體中文:
![]()
但用 admin 登入後,我們會發現預設的語系還是英文的:
![]()
這時我們可以點選上面的 System (系統設定) 功能,然後選擇 Preference (偏好設定) 項目,將 System Language (系統語言) 改為 Chinese Traditional 即可。
搭配 Subversion 使用
Bug Tracker 目前還沒辦法像 Trac 一樣直接支援 Subversion ,也就是說它目前無法直接讓專案回報與源碼相結合。
這裡我找到一篇反過來讓 TortoiseSVN 配合 Bug Tracker 使用的文章:如何設定 TortoiseSVN 整合 Bug Tracker 系統。
依照文章上的解說,我們可以在 Subversion 的 log 上直接連結到 Bug Tracker 回報的畫面。
其實 PHP 是可以支援 Subversion 的,但必須配合 php_svn 這個外掛模組。不過 php_svn 還不支援新版的 Subversion ,這是比較可惜的地方。請參考:安裝php_svn.dll 。
結論
其實不論是團隊合作還是個人開發,一套好的追蹤系統都可以協助我們管理好專案的進度;而 Bug Tracker 可以說是慣用中文的 PHP 開發者一個不錯的選擇。
大家有任何使用上的經驗嗎?也歡迎分享喔~
2007年10月2日
[Server] 在 Windows 上安裝 PHP5 開發環境
本文主要介紹如何在 Windows XP 上建置 Apache 2 + PHP5 + MySQL 5 的開發環境,以供有興趣的朋友參考。
雖然坊間已經有一些不錯用的整合套件 (像 XAMPP ) ,不過我個人偏好掌握住開發環境的底層設定。當然如果不想花太多時間在開發環境上的朋友,我建議直接使用整合套件即可。
下載
Apache 2.0
現在已經沒辦法直接在 http://httpd.apache.org/download.cgi 找到 Windows 的 binary 安裝檔了,改從這裡抓:
http://archive.apache.org/dist/httpd/binaries/win32/
我們要的是 apache_2.0.xx-win32-x86-no_ssl.msi (抓最新的就對了) 。
PHP 5.2
我們需要的是沒有安裝檔的 PHP 5.2.x zip package ,可以從以下的網址下載:
http://www.php.net/downloads.php
請下載 php-5.2.x-Win32.zip 。
MySQL 5.0
同樣這裡也是用沒有安裝檔的 zip package ,可以從以下的網址下載:
http://dev.mysql.com/downloads/mysql/5.0.html#win32
http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-noinstall-5.0.45-win32.zip/from/pick#mirrors (以 5.0.45 為例)
Xdebug
這是開發 PHP 時很好用的除錯工具,可以從以下的網址下載:
http://pecl4win.php.net/ext.php/php_xdebug.dll (別在意 PHP 實際的版本,只要抓對應 5_2 版的即可)
安排目錄結構
和之前一樣,我打算把相關的程式放在 D:\Appserv 底下,而檔案庫則放在 D:\Repository 底下。以下是我所規劃的目錄結構:
D:
|
|- Appserv (伺服器相關程式)
| |
| |- Apache2 ( Apache 的主要程式檔)
| |
| |- php ( PHP 的主要程式檔)
| |
| |- mysql ( MySQL 的主要程式檔及資料檔)
|
|- WEB
| |
| |- wwwroot (預設網站的主要根目錄)
|
|- Temp
|
|- php (讓 PHP 存放暫存檔案的地方)
|
|- upload (上傳檔案的暫存位置)
|
|- session ( Session 檔的暫存位置)
|
|- xdebug ( Xdebug 分析檔的存放位置)
這裡我會把預設網站的根目錄放在 D:\WEB\wwwroot ,各位可以依自己的喜好決定它的位置。
註:放在 D: (或其他非 C: 分割區) 的好處是不用擔心重灌後,資料及相關設定會消失。
安裝 Apache 2.0
這邊基本上可以參考我的「在 Windows 上使用 Trac on Apache - 安裝與設定篇」裡的安裝方式,節錄如下:
第一次安裝
首先執行 apache_2.0.61-win32-x86-no_ssl.msi ,大部份的都是直接選「 Next 」。不過特別注意安裝位置,這裡我會把它安裝在 D:\Appserv\Apache2 下,方法如下:
-
安裝到 Setup Type 時選 Custom ,並按 Next 。
-
把 Apache HTTP Server 2.0.xx 的 Install to 改到 D:\Appserv ,這樣下方 Apache Runtime 的 Install to 會自動變成 D:\Appserv\Apache2 。
至於其他選項就按照當時情況自行決定囉。
這裡我假設各位已經不使用 IIS 了,所以後面的說明將會以 Port 80 為主。
接著把 D:\Appserv\Apache2\bin 加入系統變數 PATH 裡,這樣方便到時候直接使用指令來控制 Apache 。
至於 Apache 的設定部份,我們在完成安裝 PHP 後再一起修改。
重灌系統後的安裝
假設我們的 D:\Appserv\Apache2 底下已經 Apache 的程式檔,只是重灌後使得系統設定消失。這樣的話,我們要先把D:\Appserv\Apache2\bin 加入系統變數 PATH 裡,接著再用以下方式重新建立服務 (粗體字部份) :
C:\>apache -k install -D Apache2
最後用:
C:\>apache -k start
來啟動服務。
安裝 MySQL 5.0
這裡是參考我的「在 Windows 上安裝測試用的 MySQL 伺服器」裡的安裝方式,節錄如下:
-
將下載回來的 mysql-noinstall-5.0.xx-win32.zip 解壓縮到 D:\Appserv 下,然後把 mysql-5.0.xx-win32 這個資料夾名稱改為 mysql 。
-
複製 D:\Appserv\mysql\my-medium.ini (或其他) 為 my.ini ,並放到 D:\Appserv 底下。
然後找到 my.ini 裡的:
/tmp/mysql.sock改為:
D:/Temp/mysql.sock註:在 [client] 和 [mysqld] 區段裡各有一個,都要改。
Temp 路徑請自行決定。
然後在 [mysqld] 下一行加入:
basedir = D:\Appserv\mysql以設定 MySQL 的執行路徑。
把 D:\Appserv\mysql\bin 加到 PATH 系統變數裡。
接著在 DOS 命令列下執行:
C:\>mysqld-nt --install MySQL --defaults-file=D:\Appserv\my.ini--defaults-file 的用意是強制指定 my.ini 的位置,否則就需要把 my.ini 放到 C:\Windows 底下 (個人不建議) 。
然後再執行:
C:\>NET START MYSQL或用服務管理員來啟動 MySQL
-
如果要移除服務,就用:
C:\>mysqld-nt --remove
這樣就能完成 MySQL 的安裝了。
註:這裡不再採用預設字集為 big5 的安裝方式。
安裝 PHP 5.2
安裝程式部份
-
將下載回來的 php-5.2.x-Win32.zip 解壓縮到 D:\Appserv\php 底下。
-
將下載回來的 php_xdebug.dll 複製到 D:\Appserv\php\ext 底下。
-
把 D:\Appserv\php 和 D:\Appserv\php\ext 加在系統變數 PATH 的最前面,如下:
D:\Appserv\php;D:\Appserv\php\ext;%SystemRoot%....這是為了讓我們能在 DOS 模式下直接執行 php.exe ,而且也不用把 libmysql.dll 這些 DLL 檔放到 C:\Windows\system32 底下。
-
把 D:\Appserv\php\php.ini-recommended 複製成 php.ini ,然後將它放到 D:\Appserv 底下。
-
將以下內容存成 IniFilePath.reg ,然後執行:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\PHP] "IniFilePath"="D:\\Appserv\\"這會讓 PHP.exe 在執行時,知道要到哪裡去找 php.ini 。請參考:變更 Windows 平台上的 PHP.INI 位置。
修改 php.ini
因為我們要建立開發環境,所以像錯誤訊息、 Xdebug 等相關偵錯用的機制都要打開,請修改以下的設定 (粗體字即修改後的值) :
display_errors = On
display_startup_errors = On
track_errors = On
error_log = "D:/Temp/php/error.log" (要記得拿掉前面的分號註解)
另外一些上傳的設定也要一起修改:
post_max_size = 100M (這裡請自行決定大小)
upload_max_filesize = 50M (通常會比 post_max_size 小)
接下來是相關的路徑:
upload_tmp_dir = "D:\Temp\php\upload" (上傳暫存路徑)
include_path=".;d:\Appserv\php\pear" (加入 PEAR 的引用路徑)
session.save_path = "D:\Temp\php\session" ( Session 暫存路徑)
註:也許有人會問為什麼不改 extension_dir ,這是因為前面我們有把 D:\Appserv\php\ext 加入系統變數 PATH 裡,所以 php 會自動去找。
然後是常會用到的延伸套件的部份 (把前面的分號註解去掉即可) :
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo.dll ( Zend Framework 建議使用 PDO)
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
其他套件則視狀況加入。
最後我們要把 Xdebug 加入,也就是在 php.ini 的最後加入以下設定:
[Xdebug]
zend_extension_ts=php_xdebug.dll
xdebug.profiler_enable=on
;xdebug.show_exception_trace=on
xdebug.show_local_vars=on
xdebug.trace_output_dir="D:/TEMP/php/xdebug"
xdebug.profiler_output_dir="D:/TEMP/php/xdebug"
修改 httpd.conf
讓 Apache 認識 PHP
上面雖然安裝好了 PHP ,但是 Apache 還不認得 PHP 長什麼樣子,以下我們要修改 D:\Appserv\Apache2\conf\httpd.conf 來讓 PHP 變成 Apache 的模組。
把以下設定加到 httpd.conf 的最後面:
LoadModule php5_module D:/Appserv/php/php5apache2.dll
AddType application/x-httpd-php .php
或是分別放在 LoadModule 及 AddType 區段 (用搜尋即可找到) 。
然後修改 DirectoryIndex ,加入粗體字部份:
DirectoryIndex index.html index.html.var index.htm index.php
這樣 Apache 2 就會以 Module 模式來執行 PHP 了。
其他設定
接著有些設定要修改,首先是加入 mod_rewrite 模組 (去掉井字號註解即可) :
LoadModule rewrite_module modules/mod_rewrite.so
然後修改預設網站的根目錄,也就是把:
D:/Appserv/Apache2/htdocs
全部改成:
D:/WEB/wwwroot
最後要啟用 .htaccess ,找到:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
把 None 改成 All 。
而 <Directory "D:/WEB/wwwroot"> 區段裡的 AllowOverride None 的 None 也改成 All 。
測試
測試前請先重新開機,讓所有的設定能生效。
測試有沒有安裝成功的方式很簡單,只要在 D:\WEB\wwwroot 下建立一個 index.php 檔,然後寫入以下內容:
<?php
phpinfo();
然後用瀏覽器查看 http://localhost/ ,如果有顯示 PHP 的相關設定資訊就算成功了。
當然我們也能透過 phpinfo() 查看相關 PHP 套件是不是有安裝成功,如果沒有的話,請看下面的常見問題。
常見問題
-
問:為什麼改了 php.ini 或 httpd.conf 後,畫面重整後還是沒有任何改變?
答:因為要重新啟動 Apache 服務。
-
問:為什麼重新啟動了 Apache 服務,有些 PHP 的套件還是沒有載入?
答:Apache 似乎會快取系統變數 PATH (猜想),所以要重新開機才能讓 Apache 知道 PATH 路徑,並正確載入這些套件。
-
問:為什麼 PHP 的路徑要加在 PATH 的最前面?
答:Apache/PHP 會以 PATH 的先後順序來尋找相關檔案,所以這樣會避免掉一些檔案版本衝突的問題。
-
問:為什麼不在 httpd.conf 裡加入「PHPIniDir "D:/Appserv/"」來指定 php.ini 的位置?
答:當然也可以採用這樣的方式來指定 php.ini 的位置,只是這裡我為了在 DOS 模式下也可以使用 D:\Appserv\php.ini ,所以才會利用 Registry 的方式。不然我們也可以在每次執行 DOS 底下的 PHP 時,使用以下指令:
C:\> php -c d:\Appserv\ test.php -
問:我用的是 Apache 2.2 ,照你的方法卻沒辦法安裝 PHP5 ?
答: PHP 5.2 版以後有另外提供一個 php5apache2_2.dll 給 Apache 2.2 用,所以請將 LoadModule 部份改成:
LoadModule php5_module D:/Appserv/php/php5apache2_2.dll如果是 PHP 5.1 以前的版本,請 Google 一下,有很多文件提到怎麼把 PHP 5.1 裝到 Apache 2.2 上。
2007年09月13日
[Linux] Port Foward 的問題
問題
Mark 和我兩個人在研究怎麼把對外的 Port 9000 轉移到內部的 Port 80 ,結果我這個 Linux 新手搞了半天還是搞不出來。
環境
我的環境是這樣的:
|-- (DMZ) --> Linux Server 1(192.168.1.1)
IP 分享器 -|
|-----------> Linux Server 2(192.168.1.2)
註:之前示意圖畫錯了,更正一下。
然後從外面來的 Port 9000 要 Forward 到 Linux Server 2 的 Port 80 。
嘗試
我們用的 IP 分享器僅支援單一 Port 對應的功能 (就是 Port 80 就只能對到 Port 80) ,所以只好把腦筋動到 Linux Server 1 上。
本來以為用 iptables 的 NAT 功能可以用,看了一下鳥哥的 iptables 教學,得到以下的方式:
# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 9000 -j DNAT --to 192.168.1.2:80
不過加入去以後還是不行...後來 Mark 又找到一篇 iptables 入門,裡面寫了:
# iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.1.1 --dport 9000 -j DNAT --to-destination 192.168.1.2:80
也是沒用...真是令人洩氣...
解決方案
後來我問我的同學 (他是個 FreeBSD 強者) ,他給我一個連結: [Linux] 簡單的 port forward 工具,裡面介紹了 redir 這個小程式,似乎符合我的要求。
然而我用的 OS 是 CentOS ,要自己編譯 redir ;把 redir 的 source 抓下來後,按照以下方式編譯:
# cd /usr/local/src
# wget http://sammy.net/~sammy/hacks/redir-2.2.1.tar.gz
# tar xvzf redir-2.2.1.tar.gz
# cd redir-2.2.1
# make (沒有 install)
# mv redir /usr/local/bin/
接下來我下的指令是這樣子的:
# redir --lport 9000 --caddr=192.168.1.2 --cport=80
不過還是沒用,而且就 redir 就沒有回應了,因為 redir 主要是跑 Daemon 模式。我想如果加上 Listen 的 Address 應該就可以,所以我把指令改成:
# redir --laddr 192.168.1.1 --lport 9000 --caddr=192.168.1.2 --cport=80 &
沒想到就成功了!讓 Mark 和我著實感動了一陣子。
最後把它加到 /etc/rc.d/rc.local 裡,讓它能在開機時自動執行就完成了。
後記
雖然我有在玩 Linux ,不過很多技術還是不熟,這次 Mark 出的問題真的讓我學到了不少東西。也感謝我的強者同學,他在 Unix like 方面的知識真的幫了我不少忙。
另外, redir 真的是不錯的小工具,如果要完全靠 iptables 來處理這個問題的話,我這個新手大概弄個三天三夜也搞不定...Orz
當然,如果大家有更好的方法的話,也歡迎分享喔。
2007年04月19日
在 Linux 上建構 PHP5 開發與測試環境
終於正式進入 PHP5 的領域了,而公司的正式環境是使用 Linux ,所以我也必須準備一個在 Linux 平台上的測試環境。 Neo 老大給了我一台還不錯的雙 PIII 工作站,稍作清理後我就準備用它來當做測試機了。
不過為了在這台機器建構這樣的測試平台卻花了我不少時間,看來三年多前使用 Linux 的經驗已經完全消失了 (囧rz) 。還好網路上資源非常豐富,雖然在安裝的過程中遇到不少挫折,但是總算是一一克服。接下來,我就把自己安裝的方式記錄下來,免得以後忘記。當然如果內容有錯誤的話,也請各位先進不吝指導。
註:這裡還要感謝 Neo 老大和丫凱,他們不厭其煩地教導我很多有關 Linux 的知識,減少了我許多摸索的時間。
...繼續閱讀2007年02月26日
2007年02月6日
在 Windows 上使用 Trac on Apache - 安裝與設定篇
說明
最近公司的伙伴們變多了,專案的控管也變得越來越重要;原來的 Trac/Subversion 獨立伺服器在權限控制方面也變得有點礙手礙腳,所以這次我決定改以 Apache 為基礎伺服器的方式來安裝 Trac/Subversion 。
我打算把此系列文章分成三個部份:
-
第一部份是第一次的伺服器程式安裝步驟,及相關的 Trac 模組與 Subversion 的安裝。
-
第二部份是每次新建立一個專案時所必要的設定。
- 第三部份是 Trac 的使用方式。
以下先來看看如何安裝及設定。
...繼續閱讀2006年11月6日
在 Windows 上安裝 Memcached
說明
memcached 是一個分散式的物件快取系統,只要有適當的 API ,任何有支援的程式語言都可以用它來存放相關的變數資訊。例如我們可以利用 memcached 來管理 PHP 的 Session ,提高 Web 網站的運作效能。
...繼續閱讀2006年10月30日
在 Windows 上安裝 Trac 專案管理軟體
說明
記錄一下自己成功的經驗,因為參考的網址在有些小地方的實作上我不是看得很懂。
追加以下三個自己的實作紀錄:
- 建立 tracd 的帳號
- 設定 tracd 的權限。
- 將 tracd 註冊成 Windows Service 。
2006年10月2日
在 Windows 上安裝測試用的 MySQL 伺服器
簡單說明一下如何在 Windows 安裝測試用的 MySQL 伺服器,這是給我自己備忘用的。
首先先到官方網站下載免安裝壓縮檔,建議下載符合需求的版本;這裡我下載的是 mysql-noinstall-5.0.xx-win32.zip 。
解壓縮後放到 D:\mysql 或是 D:\Appserv\mysql 都可以,我是放在 D:\Appserv\mysql 。
複製 my-medium.ini (或其他) 為 my.ini ,並放到 D:\Appserv 底下。
然後找到 my.ini 裡的:
/tmp/mysql.sock改為:
D:/Temp/mysql.sockTemp 路徑請自行決定。
然後在 [mysqld] 下一行加入:
basedir = D:\Appserv\mysql default-character-set=big5以設定 MySQL 的執行路徑及預設字集 (請依照需求自行決定) 。
把 D:\Appserv\mysql\bin 加到 PATH 系統變數裡。
接著在 DOS 命令列下執行:
C:\>mysqld-nt --install MySQL --defaults-file=D:\Appserv\my.ini--defaults-file 的用意是強制指定 my.ini 的位置,否則就需要把 my.ini 放到 C:\Windows 底下 (個人不建議) 。
然後再執行:
C:\>NET START MYSQL或用服務管理員來啟動 MySQL
-
如果要移除服務,就用:
C:\>mysqld-nt --remove
當然還有一些細部的地方可以調整,但是開發用的話這樣就夠了。
