2011年12月3日 星期六

Redmine + Subversion for MAC OS 10.7.2

http://www.dotblogs.com.tw/remhom/archive/2010/10/13/18308.aspx

參考以上網址修改部份內容,因為做的時侯出了一些錯誤訊息,我改了一下

我的硬體規格

  1. MAC BOOK PRO
  2. OS : 10.7.2
  3. 使用套件版本:bitnami-redmine-1.2.2-0-osx-x86-installer


Mac OSX 與 Redmine 的邂逅【Part1】安裝 Redmine + Subversion

想要有個團隊網站,有共同的文件庫、行事曆,還可以指派工作,相關的過程都用Email通知,
嗯~如果有甘特圖那也不錯唷,什麼!還可以跟版本控制軟體結合唷?簽入的程式碼可以跟工作指派連結,那很棒耶!

聽起來有些部分是不是跟TFS有點相似的感覺?我們今天要介紹的就是免費的Redmine軟體,
其實我個人有用過TFS2005與2008,其實對於微軟的TFS感覺到相當的方便,
團隊的網站也讓成員彼此之間的文件控管、分享有了不一樣的感受,對於團隊分工幫助真的很大,

Redmine的部分功能與TFS類似,有些功能更是人性化些,例如工作與日曆、甘特圖的結合,而且最棒的是支援繁體中文,
若您沒有預算可以建置TFS的環境,強烈建議使用Redmine+subversion來控管您的專案。

接下來我會撰寫系列的文章,透過下列工具的整合,打造一個小型專案團隊所需要的程式開發環境應用。

  • Mac OSX server ( 作業系統)
  • Redmine ( 專案管理軟體)
  • Subversion ( 版本控制軟體)
  • Ankhsvn套件 ( Visual Studio 外掛,讓 Visual Studio.Net與Subversion結合)



以下的文章適合

  • 想用版本控制系統,但又不想花錢的人
  • 習慣使用TFS卻無法使用TFS的人
  • 想建立團隊專案管理網站的人( wiki、文件管理、甘特圖、工作指派、自動通知...)
  • 規模較中小型的開發團隊
  • 受夠了 Project 跟 Excel 的人 XD



閱讀前,請先了解什麼是 Redmine?
(請自行Google啦!介紹的原文居多,自己啃一下 。 官網
http://www.redmine.org)

或是你也可以直接上官方demo的網站使用
http://demo.redmine.org/ ,這樣比較快了解,

這邊先貼幾張圖


共用日歷,與工作指派結合

alt

甘特圖 (子工作回報完成度,會自動顯示在上面,並自動計算父工作項目的完成度)alt


安裝前準備

  1. 安裝工具SSH Secure Shell ( 重要!讓 Windows 可以遠端 Terminal Mac OSX)
  2. Mac中文化 ( 純粹用起來爽而已)
  3. 安裝yahoo keykey 輸入法 (同上)
  4. 學會 vi 指令 ( 重要!)


安裝步驟:

  1. 安裝 Bitmine的 redmine版 http://bitnami.org/stack/redmine
    (Include all the dependencies necessary to run the application, such as Apache, MySQL, Ruby, Rails and Subversion.)
    可以省去很多麻煩,強烈建議初學者使用
    請使用root 身分安裝,如果要安裝在port80上的話,請將OSX預設的網站關閉。
  2. Subversion 環境設定
    • 確定SVN版本,因為Mac 已經有內建的svn了,所以目前是1.6.5版
      1root# svn --version
      2svn, version 1.6.5 (r38866)
      3compiled Jan 26 2010, 17:43:42
    • 將內建的SVN變更為 Bitnami 版本

      使用SSH登入OSX,修改/etc/bashrc,在最後加入 export PATH=/Applications/redmine-1.2.2-0/subversion/bin:$PATH
      1root# sudo vi /etc/bashrc
      2root# sudo reboot
      3root# svn --version
      5svn, version 1.6.16

      SVN版本已經變成1.6.16,是目前的最新版本
    • 建立SVN的主目錄 (你可以建在你喜歡、好記的地方)
      01'建立主目錄
      02root# sudo mkdir /Applications/redmine-1.2.2-0/subversion/repos

      04'建立一個專案
      05root# sudo svnadmin create /Applications/redmine-1.2.2-0/subversion/repos/repoOne
      07'建立三個基本目錄 (以下步驟非必要)
      08root# cd /Applications/redmine-1.2.2-0/subversion/repos/repoOne
      09root# sudo mkdir tmp '建立測試資料夾
      10root# cd tmp
      11//從指定的file路徑checkout抓最新版本的下來
      root# sudo svn co file:///Applications/redmine-1.2.2-0/subversion/repos/repoOne
      13root# cd repoOne
      14//隨便建了三個目錄
      root# sudo svn mkdir tags branches trunk
      15// 把剛建好的三個目錄 check-in 到主機的
      root# sudo svn ci -m
      "check in by XANDY"

      18'變更使用者為 daemon,讓使用者可以透過 http 來寫入資料,並將資料夾權限更改為755。
      19root# sudo chown -R daemon /Applications/redmine-1.2.2-0/subversion/repos
      20root# sudo chmod -R 755 /Applications/redmine-1.2.2-0/subversion/repos
      註1:不變更為 daemon 的話,後續使用類似像ankhsvn套件時,會發生類似
      svn: Can't open file '/XXX/SVN/repos/db/txn-current-lock': Permission denied 的錯誤訊息


      註2:資料夾權限不變更為755的後,後續檔案在lock的時候會失敗。

    • 01設定 apache2 server ,啟用svn模組
      07root# sudo vi /Applications/redmine-1.2.2-0/apache2/conf/httpd.conf
      09'將下面兩行前的#拿掉
      10LoadModule dav_svn_module modules/mod_dav_svn.so
      11LoadModule authz_svn_module modules/mod_authz_svn.so
      13'並加入下列的參數
      15將下面前的#拿掉
      #

      DAV svn
      16SVNParentPath /Applications/redmine-1.2.2-0/subversion/repos
      17SVNListParentPath on
      19# how to authenticate a user
      20AuthType Basic
      21AuthName "Subversion repository"
      22AuthUserFile /Applications/redmine-1.2.2-0/subversion/svnuser.auth
      24# only authenticated users may access the repository
      25Require valid-user
      27將下面前的#拿掉
      #
    • 設定 SVN的http存取的帳號、密碼
      • 建立認證檔案 root# sudo vi /Applications/redmine-1.2.2-0/subversion/svnuser.auth (請用 :wq! 寫入檔案)
      • $ sudo htpasswd -cm /Applications/redmine-1.2.2-0/subversion/svnuser.auth user1 (帳號-xandy請自取)
        Password:
        New password: // 輸入新增帳號的密碼
        Re-type new password:
        Adding password for user user1

        $ sudo chmod 755 /Applications/redmine-1.2.2-0/subversion/svnuser.auth
        $ sudo chown _www /Applications/redmine-1.2.2-0/subversion/svnuser.auth

    • 瀏覽 http://localhost:8080/repos

      如果有出現帳號密碼驗證,通過後有顯示網頁的話,就表示svn沒問題,並可以提供http存取。

alt

3. 設定redmine與subversion的連結

http://localhost:8080/redmine/

  • 登入redmine
  • 建立專案
  • 設定=>選擇Subversion=>輸入網址、帳號、密碼

    alt
  • 若設定成功,完成後可以看到redmine已將subversion的資訊導入如下圖。

    alt

參考文章:http://asuralyc.blogspot.com/2009/05/svn-websvn-ssl-trac-on-leopard.html


---------------

TFS 的替代方案:Redmine【Part2】開機自動啟動 Redmine

安裝好Redmine後,有一個問題需要解決,就是他開機並不會自動執行服務,
所以會發生一種誤解,就是明明安裝完測試都ok,怎麼重開機後網站就掛點了...

我們可以利用 /Applications/redmine-1.2.2-0/ctlscript.sh status 指令來檢查redmine的服務狀態
會發現我們的服務其實都沒有啟動...
subversion already not running
apache already
not running

redmine already not running

mysql already not running

我們可以在開機後,利用 /Applications/redmine-1.2.2-0/ctlscript.sh start的方式來啟動這四項服務,
讓網站順利運作,但是既然是要當作團隊的伺服器,每次都要手動開啟未免太遜也太笨,


xandy自創方法

1. 建立一個檔案 redmine-start.exec (Unix Executable File)

內容只寫一行 /Applications/redmine-1.2.2-0/ctlscript.sh start

2. 將rednube-start.exe加到mac 開機自動啟動列方法如下。

3. 重新開機就會自動執行

當Mac電腦開機時,預設會自動啟動一些系統必備的應用程式,讓我們一開機時就可以快速使用這些工具或服務。

如果哪天你安裝了某些軟體,移除後卻在系統中留下了沒清除乾淨的垃圾,或者某些程式你並不希望每次開機都自動啟動,那該怎麼在Mac OS X系統中將這些開機時自動啟動的項目移除呢?

或者你希望Mac電腦一開機就自動啟動你要執行的程式、自動化工具或某些常用程式,該怎麼把它加入到開機啟動清單呢?

方法:

第1步 在桌面下方的Dock上的「系統偏好設定」圖示按一下。

第2步 開啟「系統偏好設定」視窗後,按一下「帳號」圖示。

第3步 由於開機啟動清單的管理是依照帳號來個別設定,請先從左邊選單點一下你要修改的帳號名稱,再切換到「登入項目」。

「登入時會自動打開的項目」清單中會列出該帳戶開機時會自動開啟的軟體或程式,如果你不希望自動開啟某個程式,請在「隱藏」方框打勾,如果要刪除該項目,請點選使其反白後再按「-」將他刪除即可。如果要新增其他項目,請按「+」。

第4步 如果你在前一個步驟按了「+」新增其他啟動項目之後,接著會自動開啟應用程式選單,請從清單中點選你要啟動的軟體再按「加入」按鈕。

第5步 設定完之後,登入啟動清單中就會出多出剛剛選取的項目,將此視窗關閉,下次開機時便會自動開啟你指定的程式囉。


-------------------------


TFS 的替代方案:Redmine【Part3】啟用 Redmine 的 Email 通知

在這邊鬧了很大的笑話,那就是我設定了好幾天,Email就是不通,
幾乎快把國外所有的文章都翻爛了,到最後才發現是我的Mac Mini的網路設定出了問題...

因為我的主機是透過AirPort + pppoe 來取得固定IP,
當我撥接完取得IP後,發現無法上網,但是SSH卻可以遠端Terminal進去,所以我就不以為意,
一直在設定我的redmine,最後到了要使用郵件通知時,才發現無法使用,因為只要寄測試信都會有逾期的報錯,

最後進去看了postfix 的錯誤訊息,才發現是主機的DNS有問題,這時候才讓我回想到,對唷!當初PPPOEP時是沒法瀏覽網頁的,
最後進去MAC的系統偏好,將PPPOE設為優先,賓果!郵件正常了 XD

下面是設定的過程,因為我繞了很多路,所以簡單的說明一下,或許會有多設定的地方,但應該不多^^"

作法:

利用 Mac OSX Server 內建的 Postfix 郵件服務寄發 Redmine郵件

步驟:

1.修改Redmine郵件設定檔 /Applications/redmine-1.2.2-0/apps/redmine/config/email.yml

預設是沒有emial.yml這個檔案的,所以您需要新增一個或是將資料夾內的email.yml.example變更一下,

因為我們要使用MAC的 mail server,所以我們將 email.yml設的內容只留下

production:
delivery_method: :sendmail

其他相關設定,例如要利用Gmail或是其他smtp,請參考官方文件:http://www.redmine.org/wiki/redmine/EmailConfiguration

2.設定OSX 中的Postfix

  • 先利用指令 date | mail -s test 我的信箱@gmail.com ,寄一封測試信給自己,如果收的到,那恭喜你,可以跳過第二步驟。
  • 設定 /etc/postfix/main.cf
    • 幾個參數要設定mydomain、myhostname、mydestination (如果你沒有Domain Name的話,去申請個免費的吧!)
  • 幾個 postfix 常用指令
    • postfix check :檢查 postfix 相關的檔案、權限等是否正確!
      postfix start :開始 postfix 的執行
      postfix stop :關閉 postfix
      postfix flush :強制將目前正在郵件佇列的郵件寄出!
      postfix reload:重新讀入設定檔,也就是 /etc/postfix/main.cf
      postfix status:目前狀態

參考文章:簡易 Mail Server 架設 -- Postfix 設定


----------------------------

TFS 的替代方案:Redmine【Part4】設定 apache 與 subversion 的多專案權限

假設我們在subversion有多個專案,並且希望多個專案的權限要不一樣,那我們可以透過下列的方式達成。

subversion的目錄建置方式請參閱 Mac OSX 與 Redmine 的邂逅【Part1】安裝 Redmine + Subversion

設定方式如下:

  1. 修改 > sudo vi /Applications/redmine-1.2.2-0/apache2/conf/httpd.conf

    • DAV svn
      #SVNListParentPath on
      SVNParentPath /Applications/redmine-1.2.2-0/subversion/repos
      AuthType Basic
      AuthName "Subversion Login"
      AuthUserFile /Applications/redmine-1.2.2-0/subversion/svnuser.auth # 使用者的帳號密碼存放文件
      AuthzSVNAccessFile /Applications/redmine-1.2.2-0/subversion/svnaccess.pub # svn的存取規則
      Require valid-user
  2. 利用指令 htpasswd -m /Applications/redmine-1.2.2-0/subversion/svnuser.auth username 來建立帳號、密碼
  3. 新增/Applications/redmine-1.2.2-0/subversion/svnaccess.pub 文件
    • 寫入下面內容:

      ## 設定群組
      [groups]
      admin = admin1, admin2
      g_code = user1,user2
      g_doc = user3,user4

      ## 設定根目錄權限,r=讀、w=寫
      [/]
      * =
      @admin = rw #admin群組可以讀寫全部

      [proj1:/] # 版本目錄名稱
      @g_code = rw #群組g_code可以讀寫
      @g_doc=r #群組g_doc只能讀

      [proj2:/]
      user3=rw #使用者user3可以讀寫
      user4=r #使用這user4可以讀

備註:

  • 使用者的帳號密碼與/Applications/redmine-1.2.2-0/subversion/svnuser.auth 是關聯的。
  • svnaccess.pub 的規則變更是不用重啟apache就可以套用的。





沒有留言:

張貼留言