trac, moinmoin wiki 與 svn 搬移與安裝的三兩事(一)

最近在搬移 trac, moinmoin wiki 與 svn server 這篇文章記錄一下過程

原本的舊 server 是跑 apache

由於新的 server 是 VM 所以我覺得選用比較 light weight 的 nginx 似乎比較好

首先先講解在新的 server 重新建立環境

1. nginx 的安裝


首先到 nginx 下載頁 下載 (BTW 今天剛好釋出 1.0 萬歲)
然後依序解壓縮並且 compile 與安裝到指定位置 (敝單位 自己安裝的程式習慣裝在 /home 下面)


這樣 nginx 就會裝好在 /home/nginx 底下了

設定檔會在 /home/nginx/conf/nginx.conf 這裡

2. uWSGI 安裝


因為 trac 跟 moinmoin 都是 python 所以要找一個適合他們的 cgi 給 nginx 接而 uWSGI 似乎是不錯的選擇而且 nginx 也有原生的 uwsgi module

所以一樣依照下列步驟裝起來


make 完之後就會在同一個目錄下產生出 uwsgi 的執行檔在手動複製到想要的地方即可


3. subversion 安裝


基本上用套件管理程式裝一下就好了 敝單位目前都採用 SLES11sp1 所以指令如下


4. trac 的安裝


trac 要安裝可以參考這裡

大概就是用 easy_install 就全部搞定了


5. moinmoin wiki 的安裝


首先到 http://static.moinmo.in/files/moin-1.9.3.tar.gz 抓 source 在用 python install 即可


這樣 moinmoin 應該會被裝在 /usr/local/lib64/python2.6/site-packages/moin-1.9.2-py2.6.egg 之類的路徑 (SLES11sp1 是 x64 的)

五個都準備好了之後就開始來搬移啦

首先摘要一下搬移的方法

1. trac


基本上 trac 要搬移是最簡單的 把原本的目錄直接搬移過來就好了 (假設原本 trac 的 db 是用 sqlite 不然的話要連資料庫的檔案都一起搬) 所以指令大概如下

在 /home/www


這樣 trac 整個目錄就會被抓過來本地端了 (假設 trac 底下只有一個計畫案叫 xuite 的資料夾)

2. moinmoin wiki


moinmoin wiki 要搬移跟 trac 一樣簡單 基本上只要抓 moinmoin wiki 的 data 那個資料夾就夠了!

在 /home/moin 底下

qweqweqe
這樣 data 整個目錄就會被抓過來本地端了

3. svn 備份


svn 的搬移顯然不能直接複製目錄 參考這篇文章

先在舊的 server dump 出資料


然後再新的 server 抓 dump 的檔案回來後 倒回去


稍微把權限給設定一下 首先先建立 nginx 的使用者(與群組[非必要]) 修復一下權限


這麼一來檔案也都準備好了 開始準備建立 server 吧!

稍微整理一下 假設我們的資料目錄分別是

1. trac 的在 /home/www/trac/xuite

2. wiki 的在 /home/moin/data

3. svn 的在 /home/svn

然後程式的部份

1. nginx 在 /home/nginx

2. trac 跟 moinmoin wiki 的 egg 應該會被裝在 /usr/local/lib64/python2.6/site-packages/

前面提過 trac 跟 wiki 要用 uwsgi 跑起來 所以首先我們來設定 uwsgi 吧

trac on uwsgi


首先要先讓 trac generate 出 uwsgi 可以吃的設定檔所以先移動到 /home/www/trac


這個指令會 generate 出各種 cgi 的設定檔 ( /home/www/trac/xuite/cgi-bin ) 與一些 static file ( js,css, etc. ) (/home/www/trac/xuite/htdocs ) 提供伺服器做網址與資料夾的 alias 用

於是 uwsgi 可以用的檔案就會產生在 /home/www/trac/xuite/cgi-bin/trac.wsgi

有了這個檔案我們就可以 run uwsgi 了


注意! 要用 nginx 這個使用者 run 程式

moinmoin on uwsgi


在 run moinmoin 之前有一些設定檔要設定首先


然後修改 /usr/local/lib64/python2.6/site-packages/moin-1.9.2-py2.6.egg/share/moin/moin.wsgi 裡的一部分 修改處如下


然後 /usr/local/lib64/python2.6/site-packages/moin-1.9.2-py2.6.egg/share/moin/wikiconfig.py 也要做客製化的修改

改完這兩個檔案後接下來就可以準備跑 uwsgi 了

moinmoin 本身已經有 wsgi 的設定所以直接執行吧!


如果需要 uwsgi 的最佳化可以自行查詢 uWSGI docs

所以目前我們有兩個 server 分別 listen 在 /tmp/trac.sock 與 /tmp/moin.sock

接下來就是如何把 nginx 對應到這兩個 sock 上

基本上在 nginx 的 server { } 那一段裡設定如下


location ^~ /trac/xuite 與 location ^~ /xwiki 那兩段是把 網址分別像 http://xxxx/trac/xuitehttp://xxxx/xwiki 送往對應的 sock 去處理 (因為要保留與舊的網址相容)

設定裡都有一個 uwsgi_param SCRIPT_NAME 與 uwsgi_modifier1 30 是因為網址前面有 prefix 提醒 nginx 要記得加 prefix

而 location ^~ /trac/xuite/chrome 與 location ^~ /xwiki/moin_static192 則是把 static files 做 alias 加速處理 不要送給 uwsgi 浪費資源並且加上 expires 的 header 節省網路傳輸資源

都設定好之後就起動 nginx 吧


然後測試網址 http://xxxx/trac/xuitehttp://xxxx/xwiki 應該就可以看到對應的 trac 與 moinmoin wiki 的畫面了