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 開發者一個不錯的選擇。

大家有任何使用上的經驗嗎?也歡迎分享喔~


Posted by jaceju at 樂多Roodo!17:05回應(0)

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 下,方法如下:

  1. 安裝到 Setup Type 時選 Custom ,並按 Next 。

  2. 把 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 伺服器」裡的安裝方式,節錄如下:

  1. 將下載回來的 mysql-noinstall-5.0.xx-win32.zip 解壓縮到 D:\Appserv 下,然後把 mysql-5.0.xx-win32 這個資料夾名稱改為 mysql 。

  2. 複製 D:\Appserv\mysql\my-medium.ini (或其他) 為 my.ini ,並放到 D:\Appserv 底下。

    然後找到 my.ini 裡的:

    /tmp/mysql.sock

    改為:

    D:/Temp/mysql.sock 

    註:在 [client] 和 [mysqld] 區段裡各有一個,都要改。

    Temp 路徑請自行決定。

  3. 然後在 [mysqld] 下一行加入:

    basedir = D:\Appserv\mysql

    以設定 MySQL 的執行路徑。

  4. D:\Appserv\mysql\bin 加到 PATH 系統變數裡。

  5. 接著在 DOS 命令列下執行:

    C:\>mysqld-nt --install MySQL --defaults-file=D:\Appserv\my.ini

    --defaults-file 的用意是強制指定 my.ini 的位置,否則就需要把 my.ini 放到 C:\Windows 底下 (個人不建議) 。

  6. 然後再執行:

    C:\>NET START MYSQL

    或用服務管理員來啟動 MySQL

  7. 如果要移除服務,就用:

    C:\>mysqld-nt --remove

這樣就能完成 MySQL 的安裝了。

註:這裡不再採用預設字集為 big5 的安裝方式。

安裝 PHP 5.2

安裝程式部份

  1. 將下載回來的 php-5.2.x-Win32.zip 解壓縮到 D:\Appserv\php 底下。

  2. 將下載回來的 php_xdebug.dll 複製到 D:\Appserv\php\ext 底下。

  3. 把 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 底下。

  4. 把 D:\Appserv\php\php.ini-recommended 複製成 php.ini ,然後將它放到 D:\Appserv 底下。

  5. 將以下內容存成 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 套件是不是有安裝成功,如果沒有的話,請看下面的常見問題。

常見問題

  1. 問:為什麼改了 php.ini 或 httpd.conf 後,畫面重整後還是沒有任何改變?

    答:因為要重新啟動 Apache 服務。

  2. 問:為什麼重新啟動了 Apache 服務,有些 PHP 的套件還是沒有載入?

    答:Apache 似乎會快取系統變數 PATH (猜想),所以要重新開機才能讓 Apache 知道 PATH 路徑,並正確載入這些套件。

  3. 問:為什麼 PHP 的路徑要加在 PATH 的最前面?

    答:Apache/PHP 會以 PATH 的先後順序來尋找相關檔案,所以這樣會避免掉一些檔案版本衝突的問題。

  4. 問:為什麼不在 httpd.conf 裡加入「PHPIniDir "D:/Appserv/"」來指定 php.ini 的位置?

    答:當然也可以採用這樣的方式來指定 php.ini 的位置,只是這裡我為了在 DOS 模式下也可以使用 D:\Appserv\php.ini ,所以才會利用 Registry 的方式。不然我們也可以在每次執行 DOS 底下的 PHP 時,使用以下指令:

    C:\> php -c d:\Appserv\ test.php 
  5. 問:我用的是 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 上。


Posted by jaceju at 樂多Roodo!12:46

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

當然,如果大家有更好的方法的話,也歡迎分享喔。


Posted by jaceju at 樂多Roodo!12:43回應(6)

2007年04月19日

在 Linux 上建構 PHP5 開發與測試環境

終於正式進入 PHP5 的領域了,而公司的正式環境是使用 Linux ,所以我也必須準備一個在 Linux 平台上的測試環境。 Neo 老大給了我一台還不錯的雙 PIII 工作站,稍作清理後我就準備用它來當做測試機了。

不過為了在這台機器建構這樣的測試平台卻花了我不少時間,看來三年多前使用 Linux 的經驗已經完全消失了 (囧rz) 。還好網路上資源非常豐富,雖然在安裝的過程中遇到不少挫折,但是總算是一一克服。接下來,我就把自己安裝的方式記錄下來,免得以後忘記。當然如果內容有錯誤的話,也請各位先進不吝指導。

註:這裡還要感謝 Neo 老大和丫凱,他們不厭其煩地教導我很多有關 Linux 的知識,減少了我許多摸索的時間。

...繼續閱讀

Posted by jaceju at 樂多Roodo!23:06回應(7)引用(0)

2007年02月26日

在 Windows 上使用 Trac on Apache - 使用說明篇

說明

以下將會簡單介紹 Trac 的使用方式,這裡是以 0.10.3 版為基礎。另外本文僅供初入門的朋友參考,因為我個人也還在學習中。

...繼續閱讀

Posted by jaceju at 樂多Roodo!15:12回應(0)引用(0)

2007年02月6日

在 Windows 上使用 Trac on Apache - 專案建置篇

說明

前一篇安裝與設定篇已經架設好環境了,但是專案才是 Trac/Subversion 的靈魂所在,這一篇就是說明如何建立一個新的 Trac/Subversion 專案。

...繼續閱讀

Posted by jaceju at 樂多Roodo!21:15回應(7)引用(0)

在 Windows 上使用 Trac on Apache - 安裝與設定篇

說明

最近公司的伙伴們變多了,專案的控管也變得越來越重要;原來的 Trac/Subversion 獨立伺服器在權限控制方面也變得有點礙手礙腳,所以這次我決定改以 Apache 為基礎伺服器的方式來安裝 Trac/Subversion 。

我打算把此系列文章分成三個部份:

  • 第一部份是第一次的伺服器程式安裝步驟,及相關的 Trac 模組與 Subversion 的安裝。

  • 第二部份是每次新建立一個專案時所必要的設定。

  • 第三部份是 Trac 的使用方式。

以下先來看看如何安裝及設定。

...繼續閱讀

Posted by jaceju at 樂多Roodo!21:14回應(6)引用(0)

2006年11月6日

在 Windows 上安裝 Memcached

說明

memcached 是一個分散式的物件快取系統,只要有適當的 API ,任何有支援的程式語言都可以用它來存放相關的變數資訊。例如我們可以利用 memcached 來管理 PHP 的 Session ,提高 Web 網站的運作效能。

...繼續閱讀

Posted by jaceju at 樂多Roodo!17:31回應(0)

2006年10月30日

在 Windows 上安裝 Trac 專案管理軟體

說明

記錄一下自己成功的經驗,因為參考的網址在有些小地方的實作上我不是看得很懂。

追加以下三個自己的實作紀錄:

  • 建立 tracd 的帳號
  • 設定 tracd 的權限。
  • 將 tracd 註冊成 Windows Service 。
...繼續閱讀

Posted by jaceju at 樂多Roodo!15:43回應(0)引用(0)

2006年10月2日

在 Windows 上安裝測試用的 MySQL 伺服器

簡單說明一下如何在 Windows 安裝測試用的 MySQL 伺服器,這是給我自己備忘用的。

  1. 首先先到官方網站下載免安裝壓縮檔,建議下載符合需求的版本;這裡我下載的是 mysql-noinstall-5.0.xx-win32.zip 。

  2. 解壓縮後放到 D:\mysql 或是 D:\Appserv\mysql 都可以,我是放在 D:\Appserv\mysql 。

  3. 複製 my-medium.ini (或其他) 為 my.ini ,並放到 D:\Appserv 底下。

    然後找到 my.ini 裡的:

    /tmp/mysql.sock

    改為:

    D:/Temp/mysql.sock 

    Temp 路徑請自行決定。

  4. 然後在 [mysqld] 下一行加入:

    basedir = D:\Appserv\mysql
    default-character-set=big5

    以設定 MySQL 的執行路徑及預設字集 (請依照需求自行決定) 。

  5. 把 D:\Appserv\mysql\bin 加到 PATH 系統變數裡。

  6. 接著在 DOS 命令列下執行:

    C:\>mysqld-nt --install MySQL --defaults-file=D:\Appserv\my.ini

    --defaults-file 的用意是強制指定 my.ini 的位置,否則就需要把 my.ini 放到 C:\Windows 底下 (個人不建議) 。

  7. 然後再執行:

    C:\>NET START MYSQL

    或用服務管理員來啟動 MySQL

  8. 如果要移除服務,就用:

    C:\>mysqld-nt --remove

當然還有一些細部的地方可以調整,但是開發用的話這樣就夠了。


Posted by jaceju at 樂多Roodo!14:22回應(0)引用(1)
 [1]  [2]  [最終頁]