Apache wsgl配置trac詳解

2021-09-01 06:46:42 字數 3043 閱讀 2949

作業系統:centos 6

軟體:apache2.2,trac0.12,python2.6,mysql

trac以python寫成,python應用可以用多種方式佈署到apache上,比如mod_python,fastcgi,wsgi等。

我們將以wsgi的方式將trac佈署到apache上,因為wsgi是python的原生態協議。

乙個web應用要使用wsgi,必須提供乙個叫做*.wsgi的指令碼,實際這個指令碼是個python檔案。在apache的配置中指定乙個位址對映到.wsgi的路徑,這樣在訪問這個位址時,就會執行這個wsgi指令碼檔案,於是相容wsgi的web應用就被執行。

要使trac正常執行,除了要提供這個指令碼外還應為它提供資料庫。我們將使用mysql為例,為trac的乙個專案建立乙個資料庫。並告訴trac如何連線到這個資料庫。

建立資料庫要在mysql中,使用mysql工具建立資料庫和trac的資料庫使用者。

在trac中建立專案要使用trac-admin工具,可在其中指定要連線的資料庫和使用的資料庫使用者。

# yum install ***xx...略

# easy_install trac

比如我們有乙個python專案名字叫 proj1,我們把它對應的資料庫命名為proj1

先保證mysql server執行起來:

# service mysqld start

設定mysql root帳戶的密碼為 123:

# mysqladmin -u root password 123

進入mysql管理器:

# mysql -u root -p 123

建立乙個資料庫 proj1 :

mysql> create database proj1 default character set utf8 collate utf8_bin;

為資料庫 proj1 建立乙個使用者proj1user,密碼為 111

mysql> grant usage on proj1.* to proj1user@localhost identified by '111';

mysql> grant all on proj1.* to proj1user@localhost identified by '111';

mysql> quit

我們把proj1專案放在/var/trac目錄下:

# cd /var

# mkdir trac

# cd trac

在proj1目錄下建立乙個專案的環境

# trac-admin ./proj1 initenv

在這個命令執行過程中會要求輸入專案名字和資料庫訪問字串,專案名字就是proj1,資料庫字串是:

mysql://proj1user:111@localhost:3306/proj1

其中包含了資料庫使用者名稱和密碼,以及資料庫的名字。

# trac-admin /var/trac/proj1 deploy /tmp/deploy

# mv /tmp/deploy/* /var/trac/proj1

此時已經可以用trac自帶的http server執行trac服務了:

tracd -s --port 8000 /var/trac/proj1

客戶端可以在瀏覽器中輸入: http://trac-server-ip:8000/ 來測試。

當然我們的目標是讓trac執行在apache下,所以還要繼續搞下去...

apache 要使支援wsgi,需要安裝 mod_wsgi :

# yum install mod_wsgi

然後在/etc/httpd/conf/httpd.conf檔案中,增加

loadmodule wsgi_module modules/mod_wsgi.so

要使乙個web應用程式通過wsgi與apache配合工作,它必須提供乙個.wsgi指令碼,這其實是乙個python檔案。

我們把這個指令碼放在trac專案環境所在的資料夾中:/var/trac 。

在/var/trac中建立乙個trac.wsgi檔案:

# cd /var/trac

# mkdir trac.wsgi

os.environ['trac_env_parent_dir'] = '/var/trac' 指明了trac專案們的父目錄,這樣可以在/var/trac下建多個trac專案(建立專案環境),並被trac自動在網頁中列出。

os.environ['python_egg_cache'] = '/var/trac/eggs' 指明了python egg包解壓到的目錄。現在還沒有,所以手動建立乙個:

# mkdir /var/trac/eggs

開啟apache配置檔案 /etc/httpd/conf/httpd.conf

增加wsgiscriptalias /trac /var/trac/trac.wsgi

order deny,allow

allow from all

apache要讀寫trac專案的檔案,所以要為apache分配許可權:

# chown -r apache.apache /var/trac

重啟apache就可以在瀏冷覽器中訪問了:

瀏覽器中輸入:http://trac-server-ip/trac

但是還有乙個問題,當要登入proj1專案中時,報出錯誤,為什麼尼?因為我們沒有配置使用者許可權。

我們將讓trac使用apache的驗證機制,使用basic許可權管理方式。

用apache建立帳戶admin:

# htpasswd -c /var/trac/trac.htpasswd admin

authtype basic

authname "trac"

authuserfile /var/trac/trac.htpasswd

require valid-user

重啟apache。好了,現在可以登入了,但為什麼許可權不多?我可是admin啊!沒關下,再來一句:

# trac-admin /var/trac/proj1 permission add admin trac_admin

Tr A(矩陣快速冪)

description a為乙個方陣,則tr a表示a的跡 就是主對角線上各項的和 現要求tr a k 9973。input 資料的第一行是乙個t,表示有t組資料。每組資料的第一行有n 2 n 10 和k 2 k 10 9 兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是 0,9 表示方陣a...

矩陣快速冪 Tr A

a為乙個方陣,則tr a表示a的跡 就是主對角線上各項的和 現要求tr a k 9973。資料的第一行是乙個t,表示有t組資料。每組資料的第一行有n 2 n 10 和k 2 k 10 9 兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是 0,9 表示方陣a的內容。對應每組資料,輸出tr a ...

Tr A 矩陣快速冪

a為乙個方陣,則tr a表示a的跡 就是主對角線上各項的和 現要求tr a k 9973。input 資料的第一行是乙個t,表示有t組資料。每組資料的第一行有n 2 n 10 和k 2 k 10 9 兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是 0,9 表示方陣a的內容。output 對...