Archive

文章標籤 ‘wsgi’

Mercurial 的WEB界面安裝

2011年2月16日 尚無評論

簡單記一下這次安裝版本控制系統的過程

版本控制是用 Mercurial 這套
安裝基本上就是用指令線上安裝即可:

$ sudo apt-get install mercurial

基本的指令用法可直接看官網 Guide

接著就是建立一個可以用瀏覽器直接查看程式碼及各版本內容的環境
參考資料也是從官網而來:Serving Mercurial repositories with Apache and mod_wsgi

這裡需要的環境是

  • Apache (2.2.6, 2.2.3)
  • mod_wsgi (1.1, 2.0)
  • Python (2.5.1, 2.4.4)
  • Mercurial (1.1)
  • hgwebdir.wsgi

Apache和Python就不用再多說明,而mod_wsgi是需要手動安裝的,這在 在現有Apache2再安裝新的module – mod_wsgi.so 可以看到我之前的註記,當然現在版本是又更新了。

有了 module 後,接著就是設定 Apache 及文件環境

首先是先建立一個目錄
以我的習慣是在 /home/andy/www 下建立一個 hg 目錄
再 softlink 到 /var/www/ 底下

$ cd ~/www
$ mkdir hg
$ cd hg
$ mkdir cgi-bin

其中 hg 就是網站根目錄
底下的 cgi-bin 是之後要放cgi的目錄

接著是要找到 hgweb.wsgi 這個檔案,這個檔案是 Mercurial 提供的一個 sample
以我的環境是在 /usr/share/doc/mercurial/examples/hgweb.wsgi
把這個檔 copy 到 www/hg/cgi-bin

$ cd cgi-bin
$ sudo cp /usr/share/doc/mercurial/examples/hgweb.wsgi hgwebdir.wsgi

然後修改裡面的內容:

# An example WSGI for use with mod_wsgi, edit as necessary
# See http://mercurial.selenic.com/wiki/modwsgi for more information

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/var/www/hg/cgi-bin/hgweb.config"

import os
os.environ["HGENCODING"] = "UTF-8"

# Uncomment and adjust if Mercurial is not installed system-wide:
import sys; sys.path.insert(0, "/path/to/python/lib")

# Uncomment to send python tracebacks to the browser if an error occurs:
import cgitb; cgitb.enable()

# enable demandloading to reduce startup time
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir
application = hgwebdir(config)

其中第5行的 config 內容:

[web]
# paper, monoblue, spartan, gitweb, static
style = monoblue

contact = Andy
description = 專案說明文字
name = 專案名稱
allow_archive = gz, zip, bz2

[paths]
RDLAB3 = /home/andy/www/rdlab3

[collections]
# www = /home/andy/www

[hooks]
changegroup =
# reload wsgi application
changegroup.mod_wsgi = touch /var/www/hg/cgi-bin/hgwebdir.wsgi

其中第19行,指定的路徑必需是 wsgi 檔的完整絕對路徑,即使 config 檔是和 wsgi 檔是放在相同目錄,也要指定完整絕對路徑!!

這些設定完成後,得把 www/hg 整個目錄權限修改一下,也要 softlink 到 /var/www 底下:

$ cd ~/www
$ sudo chown www-data:root hg -R
$ cd /var/www
$ sudo ln -s ~/www/hg/ .

設定 vhost:

<VirtualHost *:80>
     ServerName hg.nb3vm.com

     ServerAdmin rdandy@gmail.com

     DocumentRoot "/var/www/hg/"

     WSGIScriptAliasMatch ^(.*)$ /var/www/hg/cgi-bin/hgwebdir.wsgi$1

    <Directory "/var/www/hg/">
        Options -Indexes MultiViews FollowSymLinks

        AllowOverride None

        Order allow,deny
        Allow from all
    </Directory>

    <Directory /var/www/hg/cgi-bin>
        Options ExecCGI FollowSymlinks
        AddHandler wsgi-script .wsgi
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.hg.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.hg.log combined
</VirtualHost>

然後就會看到專案列表了!

Categories: Python, uBuntu Tags: , ,

在現有Apache2再安裝新的module – mod_wsgi.so

2010年2月12日 尚無評論

我在開發機上已經先安裝了Apache2,現在需要讓Python能在Apache上執行,得使用一個module,這裡使用wsgi這個module,但得手動make及install
底下是我的過程:

一、到wsgi官網下載wsgi的source code (我是下載現在的最新3.1版,不知道n年後會是更新到幾版^^)
在我的home目錄,執行 (就直接放在home目錄吧)


$ sudo -c wget http://modwsgi.googlecode.com/files/mod_wsgi-3.1.tar.gz

二、下載後,解壓縮:(我這裡會直接解到mod_wsgi-3.1目錄)

$ tar xvfz mod_wsgi-3.1.tar.gz

※注意唷,我現在是3.1,之後是多少~~不知道~~~

三、進入mod_wsgi-3.1目錄吧,要執行底下的指令來確認環境

$ ./configure

我會寫這篇,就是因為在這裡卡到了~,因為我出現一堆apxs找不到的錯誤訊息
上網再找,總算在Apache apxs這則討論找到解決的方法~

因為我是先安裝了Apache2,並沒有source code,所以wsgi在偵測環境時,沒有可用的原始檔
當然我也有用

sudo apt-cache search apxs

來看apxs會是在哪個pakage裡,但還是列了很多,不確定我該裝哪一個,索性還是照著Apache apxs這則討論直接安裝apache2-threaded-dev吧


$ sudo apt-get install apache2-threaded-dev

(老實說,我還沒找到這個安裝後是安裝到哪個位置,不管,晚一點再找吧~)

然後再回到我home下的mod_wsgi-3.1目錄
再次檢查wsgi需要的環境
這回就全找到了
沒有錯誤啦!!!

好,直接執行下面的指令吧

make

照手冊說就是Building The Source Code
但我執行後還沒看到mod_wsgi.so呀
因為,還需要安裝~~
正是底下的指令


$ sudo make install

記住,要以 root 的身份執行呀~

這時一切都ok了,剩下最後一步,讓Apache載入這個mod_wsgi!!

我的這個Apache2因為是安裝在uBuntu 9.10 desktop裡,在Apache的設定位置較不一樣
如下:

$ cd /etc/apache2/mods-available
$ sudo vim wsgi_module.load

然後編輯就是完全一樣的了

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

這個mod_wsgi.so絕對位置,請依照實際情況給予正確的位置哦,可能不同的server,放的位置會不同吧~

$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/wsgi_module.load .

好了,再重啟一下Apache吧!!

sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 start

就OK了!!

之後,要再實做設定時,再把這篇補齊嘍~

Categories: Python, uBuntu Tags: , ,