Ubuntu 10.04.1 LTS
因为我购买的VPS安装debian有BUG,所以选择了ubuntu.
一开始是用centos来进行搭建,但是2.6的python在centos上面编译有问题(自行编译),
经Z.Q.教导,转而使用ubuntu. 所以用centos的兄弟姐妹,以下文章中trac中的svn的问题我没处理好在centos上面.
目标: 建立一个高效的Trac环境.(相比Tracd的方式)
起因: 一直在用Tracd + svn + stunnel 来进行发布,小项目,4-5个人在提交的时候感觉非常差,经常没有反应. 注:构建在这里 http://blogold.chinaunix.net/u/10884/showart.php?id=2421306
TODO: SSL加密连接
管理 trac中浏览 svn代码权限.
2011年01月23日更新:
巨型svn 在trac中浏览会造成uwsgi崩溃重启.解决方法是
#socket=/home/Trac/xxx/Tracs/Trac.sock
socket = 127.0.0.1:9001 启用端口绑定模式. FD的问题,估计是VPS造成的问题.
选择工具.
python 2.6.5
Trac 0.12.1
nginx 0.8.53 ( 0.8.54一样)
uwsgi 0.9.6.6
(由于我购买的是国外VPS,选择了CentOS 5.5 ,默认安装的只有python2.4
所以自己去下载python2.6.5编译.千万别乱用其他安装源的.我就是yum了python2.6后,无法自拔了..给自己yum死了.)
ubuntu自带 python2.6,所以不用安装了.
这里给出配置文件,对Trac的入门了解还是看这个比较实在. http://blogold.chinaunix.net/u/10884/showart.php?id=2421306
uwsgi的配置请看这里
python
Python 2.6.6 (r266:84292, Dec 1 2010, 23:08:07)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for i in sys.path:
... print "pythonpath=%s"%i
对于新手,需要提醒一点的就是 print的时候 要给个table,这个貌似是python语法.否则要报错.
配置文件如下: (我的配置,请自己根据情况来订,不要完全照搬)
[uwsgi]
uid=root
gid=root
socket=/home/Trac/xxx/Tracs/Trac.sock
#socket = 127.0.0.1:9001 //这种方式会增加重网卡I/O
processes=2
pidfile=/home/Trac/ddnas88f6281/Tracs/Trac.uwsgi.pid
wsgi-file=/home/Trac/ddnas88f6281/Tracs/cgi-bin/Trac.wsgi
chmod-socket=666
harakiri=30
disable-logging=true
master=true
memory-report=true
profiler=true
single-interpreter=true
pythonpath=/usr/local/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
pythonpath=/usr/local/lib/python2.6/site-packages/Babel-0.9.5-py2.6.egg
pythonpath=/usr/local/lib/python2.6/site-packages/Genshi-0.6-py2.6.egg
pythonpath=/usr/local/lib/python2.6/site-packages/Trac-0.12.1-py2.6.egg
pythonpath=/usr/local/lib/python2.6/site-packages/supervisor-3.0a9-py2.6.egg
pythonpath=/usr/local/lib/python2.6/site-packages/meld3-0.6.7-py2.6.egg
pythonpath=/usr/local/lib/python2.6/site-packages/virtualenv-1.5.1-py2.6.egg
pythonpath=/usr/local/lib/python2.6/site-packages/TracGit-0.12.0.5dev-py2.6.egg
pythonpath=/usr/local/lib/python26.zip
pythonpath=/usr/local/lib/python2.6
pythonpath=/usr/local/lib/python2.6/plat-linux2
pythonpath=/usr/local/lib/python2.6/lib-tk
pythonpath=/usr/local/lib/python2.6/lib-old
pythonpath=/usr/local/lib/python2.6/lib-dynload
pythonpath=/usr/local/lib/python2.6/site-packages
启动uwsgi: uwsgi --ini uwsgi.ini -d log (注意自己的目录,自行把握)
然后cat log看看是否工作正常.
nginx配置
server {
listen 80;
# ssl_certificate /etc/nginx/myssl.crt;
# ssl_certificate_key /etc/nginx/key.key;
location / {
include uwsgi_params;
# auth_basic "!!! !!";
# auth_basic_user_file /home/Trac/ddnas88f6281/auth/nginx_passwd;
#uwsgi_param SCRIPT_NAME /;
#uwsgi_pass 127.0.0.1:9001;
uwsgi_pass unix://home/Trac/ddnas88f6281/Tracs/Trac.sock;
uwsgi_modifier1 30;
index index.html;
autoindex off;
}
location /chrome/ {
alias /home/Trac/ddnas88f6281/Tracs/htdocs/;
autoindex off;
}
location /Trac/raw-attachment {
alias /home/Trac/ddnas88f6281/Trac/attachments/;
autoindex off;
}
location /Trac/pygments {
alias /home/Trac/ddnas88f6281/Trac/pygments;
autoindex off;
}
}
自行编译的nginx 一般加上ssl模块即可,其他的模块我没有加载.
所以安装再 /usr/local/nginx
启动nginx
/usr/local/nginx/sbin/nginx -t
看看报错信息有没有,没有就去掉t,正式让nginx上线.
trac就开始工作了!
当然,你现在没什么权限,自己加权限吧。
用户管理我使用了一个插件:
TracAccountManager 0.3dev-r9591
也开启. 这样可以让其他人注册了. 提示:注意自己权限的分配!
按照wiki的配置
[account-manager]
account_changes_notify_addresses =
authentication_url =
force_passwd_change = true
htpasswd_hash_type = crypt
password_file = //XXXX/XXX/XXXtrac_passwd //自行替换
password_store = HtPasswdStore
persistent_sessions = False
user_lock_max_time = 0
verify_email = true
[components]
acct_mgr.pwhash.htdigesthashmethod = enabled
然后htpasswd -c trac_passwd admin
登录后自己注意权限别泄漏了.
OK。基本完了.
参考文档:
trachinese@googlegroups.com maillist
http://blogold.chinaunix.net/u/10884/showart.php?id=2421306
感谢 trachinese里面朋友的帮助!在这里不一一列举了。