作業系統: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 對...