會員註冊 / 登入  |  電腦版  |  Jump to bottom of page

軟體開發專案管理 Software Development Project Management » 在CentOS 4.5 Linux上安裝Trac 0.10.4

發表人: wtom, 九級學員
2008-08-11 09:51:24
按照第1点执行,检查第2点中提到的/etc/httpd/conf.d/python.conf 及/etc/httpd/conf.d/subversion.conf 文件,设定与回复中的内容一致,重启httpd后,情况依旧。
我估计问题出在執行trac_setup.sh中的指令,因为我是用rpm包安装的,可能的原因有3个:
1、libxml2-python-2.6.26-2.1.2.i386.rpm这个包对不对,它是否是适合python-2.6的而不是python-2.4的。
2、subversion默认配置文件的位置不对,我用rpm -ql subversion 检查发现
/etc/subversion
/usr/bin/svn
usr/bin/svnadmin
......
其中subversion的配置文件在/etc/subversion中,而按照上面的安装过程配置文件应是在/etc/httpd/conf.d/subversion.conf
3、在您文中subversion安装应当是
yum -y install subversion mod_dav_svn swig,是在一行中完成的,而我安装是rpm -ivh swig-1.3.29-2.el5.i386.rpm,是分开安装的。

不知道是否是上述原因导致错误出现?

發表人: andowson, 七段學員
2008-08-11 21:54:20
請問您有修改newproject.sh的第7~17行的參數嗎?

我有個建議就是可否請您將Trac整個移掉重裝,然後按照我這篇文章的預設路徑去裝裝看,先排除掉路徑問題,如果裝得起來您可再自行調整路徑重新安裝一次。

發表人: wtom, 九級學員
2008-09-03 10:37:57
thanks!
已解决,是因为SELinux的原因

發表人: wtom, 九級學員
2008-09-06 11:24:53
能否再问一个问题:
在使用http://localhost/svn/project1访问时没有权限控制,也就是说任何人都可以访问代码。
因此我将/home/trac/projects/svnaccess中的内容进行修改:
[/]
admin = rw

[project1:/]
admin = rw
user1 = rw
user2 =rw

将其中的* = r 删除,之后用http://localhost/svn/project1访问就出现
Forbidden
You don't have permission to access /svn/project1 on this server.
而没有出现认证对话框,有什么办法可让其出现认证框以输入user passwd。

發表人: andowson, 七段學員
2008-09-06 12:43:25
經過測試之後發現,svnaccess中的[/]是給Trac看的,其他部分[repos-name:/]才是給Apache看的,如果您將[/]底下的 * = r刪除,則您需要將其他可以讀取或寫入的使用者明確地加到這個section來,例如:
[/]
admin = rw
user1 = rw
user2 = rw
否則在Trac登入後按下Browse Source時會出現Insufficient permissions to access /的錯誤。

如果要管控http://localhost/svn/project1時需要輸入帳號密碼,則可以修改/etc/httpd/conf.d/subversion.conf中的設定

<Location /svn>
DAV svn
SVNParentPath /home/andowson/repos
#<LimitExcept GET PROPFIND OPTIONS REPORT>
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /home/andowson/projects/.htpasswd
AuthzSVNAccessFile /home/andowson/projects/svnaccess
Require valid-user
#</LimitExcept>
</Location>

將原來的<LimitExcept>註解掉或刪除掉,再重新啟動Apache即可

發表人: wtom, 九級學員
2008-09-08 11:28:59

在执行./newtracdb.sh project1时总是出现以下错误:
bash-3.1$ ./newtracdb.sh project1
" 不存在命错误: 数据库 "template1
" 不存在命错误: 数据库 "template1
" 不存在命错误: 数据库 "template1
" 不存在命错误: 数据库 "template1
但是将命令分拆,一行一行的执行却没有问题,很不方便。
bash-3.1$ psql -c "create user trac_project1 createdb;" template1
CREATE ROLE
bash-3.1$ psql -c "create database trac_project1 with encoding 'unicode';" -U trac_project1 template1
CREATE DATABASE
bash-3.1$ psql -c "alter user trac_project1 nocreatedb;" template1
ALTER ROLE
bash-3.1$ psql -c "alter user trac_project1 with encrypted password 'trac_project1';" template1
ALTER ROLE

请问是什么原因?

發表人: wtom, 九級學員
2008-09-08 18:19:26
我查了数据库日志:
应当是“致命错误,数据库 "template1 "不存在”

發表人: andowson, 七段學員
2008-09-09 01:53:48
您問的內容比較屬於跟PostgreSQL有關的問題,請參考這篇http://www.andowson.com/posts/list/140.page

發表人: wtom, 九級學員
2008-09-09 11:28:01
配置完成后发现在trac中任何登陆的人均可查看所有代码,我希望能够做到与SVN一样的权限控制,有什么办法吗?
[/]
admin = rw
user1 = rw

[project1:/]
admin = rw
user1 = rw
user2 =rw

[project2:/]
admin = rw
user2 =rw
user1登陆后能够浏览project2的所有代码,能够控制不让他浏览project2代码吗?

發表人: andowson, 七段學員
2008-10-03 00:39:18
經過一連串的測試後發現,如果我們要用同一個svnaccess來完成這個需求:
user1只能看到project1的source code而user2只能看到project2的source code
是不可能的,因為:
1.如果我們將svnaccess最上面的[/]區塊刪除時,變成如下:
[project1:/]
admin = rw
user1 = rw
user2 =rw

[project2:/]
admin = rw
user2 =rw
配合修改/etc/httpd/conf.d/subversion.conf中的設定,此時我們可以控管由網頁去存取http://localhost/svn/project1時,需要輸入帳號密碼,此時用user1可以登入。接著將網址改成http://localhost/svn/project2,此時會再要求輸入帳號及密碼,但是不論嘗試多少次,用user1都不會成功。

2.此時再用user1登入Trac的project1然後去Browse Source時就會遇到Insufficient permissions to access /的錯誤。於是我們又將[/]區塊加回去svnaccess:
[/]
admin = rw
user1 = rw

[project1:/]
admin = rw
user1 = rw
user2 =rw

[project2:/]
admin = rw
user2 =rw
此時,可以正常瀏覽source code了,但是副作用就是此時用user1將可以登入http://localhost/svn/project2(可能user2還無法登入project2)
因此,可以推論,當有設定[/]時,Apache會採用[/]區塊的設定。
此外,此時用user1登入Trac project2也可以Browse Source,所以Trac也是用[/]這邊的設定。

所以這個問題在一個svnaccess的狀況下是無解的。

那要怎麼做到原來的需求呢?
答案應該很明顯了,就是每個Trac project使用一個svnaccess檔案,我們可以在trac.ini裡面去設定這個檔案的路徑,例如:
[trac]

authz_file = /var/trac/projects/svnaccess_project1

然後將原來的svnaccess的[/]區塊刪除,編輯svnaccess_project1如下:
admin = rw
user1 = rw
user2 =rw

最後是將Trac裡面BROWSER_VIEW從anonymous和authenticated刪除,用admin帳號登入Web介面去Admin->Permissions下執行即可,文字指令參考如下:
trac-admin /var/trac/projects/project1 permission remove anonymous BROWSER_VIEW

trac-admin /var/trac/projects/project1 permission remove authenticated BROWSER_VIEW


然後我們可以在右邊的Grant Permission:新增Subject:developer,Action: BROWSER_VIEW
然後再利用Add Subject to Group:將Subject: user1及user2陸續加到Group: developer

如此一來,我們可以確保只有加到每個Project的developer群組才能看到原始碼。

依此類推,完成project2的相關設定(trac.ini、svnaccess_project2及Permissions設定)

日後維護時,每個專案如有成員異動時,便得注意要同時修改svnaccess和svnaccess_projectX兩個檔案。

發表人: andowson, 七段學員
2008-10-03 01:18:23
Trac有提供一個透過Web介面修改svnaccess檔案的Plugin,可以參考下面的網址:
http://trac-hacks.org/wiki/SvnAuthzAdminPlugin
下載後,將其解壓縮,再執行下面的指令安裝
python setup.py install

然後再修改trac.ini,將svnauthz.* = enabled加到[components]區塊下:如
[components]

svnauthz.* = enabled


發表人: wtom, 九級學員
2008-12-10 11:29:57
我用SVN和TRAC来管理多达21个项目库时,postgresql 数据库出现:“致命错误:超过了非超级用户的连接限制”,再无法增加新的项目,如何解决这个问题?
其英文提示为“FATAL: connection limit exceeded for non-superusers ”

發表人: andowson, 七段學員
2008-12-12 22:53:27
您可以試著調整一下PostgreSQL的最大連線數看看

/var/lib/pgsql/data/postgresql.conf
max_connections = 200

參考資料:
http://readthefuckingmanual.net/error/132/

發表人: wtom, 九級學員
2008-12-15 15:24:21
谢谢!问题解决,另外我想了解一下如何从trac中移除已有的项目以及如何备份和恢复版本库的一些知识。

發表人: andowson, 七段學員
2008-12-21 20:54:59
Trac的刪除、備份跟還原
1.刪除Trac專案:
在Trac中每個專案環境就是一個目錄,所以刪除專案很簡單,就是把對應的目錄刪除掉,然後對應的資料庫也刪除掉即可。

2.備份Trac專案:
可以使用trac-admin的hotcopy指令,
$ trac-admin /path/to/projenv hotcopy /path/to/backupdir

例如:
[andowson@www ~]$ trac-admin /home/andowson/projects/demo hotcopy /tmp/demo
Hotcopying /home/andowson/projects/demo to /tmp/demo ... Hotcopy done.

檢視一下內容可以發現其實就是整個目錄複製過去而已,所以理論上只要先把Web Server停止後,自己使用OS的copy指令也是OK的
[andowson@www ~]$ ll /tmp/demo/
總計 36
drwxrwxr-x 2 andowson andowson 4096 12月 21 20:09 attachments
drwxrwxr-x 2 andowson andowson 4096 12月 21 20:09 conf
drwxrwxr-x 2 andowson andowson 4096 12月 21 20:09 htdocs
drwxrwxr-x 2 andowson andowson 4096 12月 21 20:09 log
drwxrwxr-x 2 andowson andowson 4096 12月 21 20:09 plugins
-rw-r--r-- 1 andowson andowson 98 9月 9 2007 README
drwxrwxr-x 2 andowson andowson 4096 12月 21 20:09 templates
-rw-r--r-- 1 andowson andowson 27 9月 9 2007 VERSION
drwxrwxr-x 2 andowson andowson 4096 12月 21 20:09 wiki-macros

資料庫部分可以使用資料庫備份的指令,例如PostgreSQL的pg_dump

3.還原Trac專案
也是很簡單,就是把備份的目錄覆蓋回去即可,先把Web Server停掉,然後把整個目錄結構copy回去,再把資料庫還原回去,然後再重起Web Server即可。

Subverson的備份跟還原
1.備份Subversion的repository
svnadmin hotcopy /path/to/reponame /path/to/backupdir

例如:
svnadmin hotcopy /home/andowson/repos/demo /tmp/demorepo
這個指令單純的將repository的目錄複製一份出來

2.還原Subversion的repository
只要將先前用hotcopy備份的目錄複製回去即可

參考資料:
http://trac.edgewall.org/wiki/TracBackup
http://svnbook.red-bean.com/en/1.1/ch05s03.html
http://wiki.archlinux.org/index.php/Subversion_backup_and_restore
http://rory.cba.tw/rewrite.php/read-95.html




會員註冊 / 登入  |  電腦版  |  Jump to top of page