关于Trac 部署问题.

91 views
Skip to first unread message

Zoom.Quiet

unread,
Jan 7, 2011, 2:44:33 AM1/7/11
to sniperpr, trach...@googlegroups.com
在 2011年1月7日 下午3:26,sniperpr <snip...@gmail.com> 写道:
>      10年12月16日我发了个mail,标题是  对  Trac熟悉的哥们进来.请教一个关于性能方面的问题.

参考:
http://wiki.woodpecker.org.cn/moin/NginxuWSGIPublishTrac
俺在公司内部配置发布的记要...

>>
>> tracd 只是测试用的哈,,,没人用这个来正式跑的哪?!
>> + trac 的动态内容看似很多,分析流量才发现 8成都是样式相关的 图片/CSS 什么的:
>>    + 建议将/chrome /attachment 目录用 Nginx 静态文件发布并
>> + 我们以前一直用 Lighttpd+fcgi 带trac 的,配置2倍CPU数量的进程
>> 现在俺建议:
>> Nginx 0.8x + uWSGI
>>    + Nginx 均衡+静态发布
>>    + uWSGI 包装Trac 发布应用
>>    + Nginx内置 uWSGI 模块代理发布 Trac 网站
>>
>> 以上,应该可以获得10倍以上的性能提升...
>> 参考:
>> TracModWSGI - The Trac Project
>>    http://trac.edgewall.org/wiki/TracModWSGI
>> RunOnNginx - uWSGI
>>    http://projects.unbit.it/uwsgi/wiki/RunOnNginx
>> Example - uWSGI
>>    http://projects.unbit.it/uwsgi/wiki/Example
>> 配置Nginx+uwsgi更方便地部署python应用 | observer专栏杂记
>>    http://obmem.info/?p=703
>
> 先看     http://obmem.info/?p=703
>
> 缺少网站部署知识,看的云里雾里的.
>
> 再到project目录建立myapp.py,使得application调用框架的wsgi接口,比如web.py就是
>
> ......
> app = web.application(urls, globals())
> application = app.wsgifunc()
>
> 我理解下面这句是 用uwsgi启动 myapp,把  myapp更换成为 tracd 吗?
> tracd启动要带参数呢,这下就不理解了.(上面的段落是tracd的配置吗?)
>  然后运行uwsgi监听9090,其中-w后跟模块名,也就是刚才配置的myapp
>
> uwsgi -s :9090 -w myapp
>
> 此文章名为: 配置Nginx+uwsgi更方便地部署python应用
>
> 但是我想知道如何 nginx + uwsgi 部署 tracd的应用.
> 再我眼里看来,tracd就是 httpd.

明白了,你的问题是没有理解 Nginx(或是其它HTTPD)和uWSGI/fcgi/cgi 以及 Trac/Tracd 的关系:
+ Nginx/Lighttpd/Apache/Tracd 都是 HTTPD 用来响应和解析 HTML 请求
+ Trac 是应用系统
+ WSGI/cgi/scgi/fcgi 是Web应用接口标准,本身没有什么代码,只是文档
+ uWSGI 是内置 WSGI 接口的全部精巧 HTTPD
+ mod_wsgi 是Nginx 天才的率先内置的 WSGI 接口,可以直接吃入吻合 WSGI 标准的应用响应
所以,
Nginx+mod_wsgi+uWSGI 发布 Trac

Lighttpd+fast-cgi swap+fast-cgi agent 发布 Trac 要少一级,所以,效率要高
又比:
Apache+mod_proxy+Tracd 发布 Trac 要高效一些,因为 Tracd 是纯Py 实现的HTTPD 效率比C实现的的确要差点儿...

但是不论哪种形式发布,都有个问题:
- Trac 本身要将 传票/维基等等中的 CSS/JS/图片,动态吐给 HTTPS
- 而且,这种静态文件的读取/输出,本身也不是 Py 的强项
- 統計上看,这种静态数据的动态输出量很大,占到整个 Trac 应用流量的 70% 左右!
所以,建议,对以下几个URL进行静态发布,以 Nginx 配置为示意:

location /trac/chrome {
alias /path/2/trac_chrome/htdocs/;
autoindex off;
}
location /trac/raw-attachment {
alias /path/2/trac/attachments/;
autoindex off;
}

location /trac/pygments {
alias /path/2/pygments;
autoindex off;
}


>
> 我来描述下我的应用吧.
> 我有两台机器.
> 一台机器是公司的 trac+svn. 是使用apache来做的.
> /etc/httpd/conf.d/trac.conf
> ......
> <Location /trac>
>     SetHandler mod_python
>     PythonHandler trac.web.modpython_frontend
>     PythonInterpreter main_interpreter
>  PythonOption TracEnvParentDir /var/scm/trac/
>     PythonOption TracUriRoot /trac
> ..........
> 这种配置,但是我发现个问题,在我用trac中diff 一个100多k的源码中,发现
> tracd的CPU利用率及高,完毕后我再次diff这个文件,cpu还是及高,
> 所以我觉得 这个apache并没有给我带来多少性能的提升.
> 这是我在公司布置的机器,没性能就没性能吧,反正我不为了性能骂街,基本就没人了.我忍了.
> 但是我再米国买的VPS是 trac+subversion,没有采用apache.
> 我不想用apache,所以一直再用tracd来做应用,几个人连续提交几个ticket感觉要砸鼠标.... 启动方法 nohup tracd --port
> 8000 88f6281
> --basic-auth=*,/home/trac/ddnas-88f6281/trac/88f6281/conf/trac_passwd,* &
> stunnel /etc/stunnel/stunnel-tracd.conf  很土鳖吧....哈哈哈!!
> 今天终于忍无可忍的要弄下. 我看不懂 Nginx 0.8x + uWSGI , 尝试了下  Lighttpd+fcgi
> ,没有成功(关于lighttpd我也有个小问题,不过为了你说的性能,我觉得还是把  Nginx 0.8x + uWSGI
> 搞定了再去追lighttpd的问题)。

Lighttpd的fcgi 作得很好,很干净,我们也用这种方式跑了几年几十个 Trac,从来没有出过问题;
只是初期,没有将 sqlite 迁移到 pg 时,不时有 sqlite 锁死的现象;
然而去年, BDB 和 sqlite 深度合作后,并发响应的问题,估计也可以解决了,使用 sqlite 也更加没有问题了

> ( 先忽略我的这个问题,:) ,我还是先描述出来比较好.
> 我trac-admin 后的目录里面并没有trac.fcgi的东西,
> 而通过 KSPEG}LJ}廖杰/-2234 兄弟
> 1. 提取静态文件的方法:
> trac-admin /path/to/trac deploy /path/to/nginx/static
> 可以把trac和所有插件要用到的静态文件提取到指定目录。
>
> 2. attachment需要额外配置成静态文件发布。)
>

--
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
俺: http://about.me/zoom.quiet
开: http://code.ijinshan.com/
豆: http://www.douban.com/group/zoomquiet
书: http://code.google.com/p/openbookproject
蟒: http://code.google.com/p/kcpycamp/wiki/PythoniCamp

linux_pro

unread,
Jan 8, 2011, 5:39:13 AM1/8/11
to TraChinese
出点问题.


按照 http://wiki.woodpecker.org.cn/moin/NginxuWSGIPublishTrac
的方法.
菜鸟一只,请大家多帮忙.谢谢了.
先 解决 2 生成所有依赖目录信息:
要注意python的缩进. 要 table在 print "pythonpath=%s"%i


然后
运行 uWSGI 守护: 我是拿普通用户权限运行的. 我 uwsgi.ini配置如下:
[uwsgi]
uid=trac
gid=trac
socket=/home/trac/ddnas-88f6281/trac/tracs/cgi-bin/trac.sock
processes=5
pidfile=/home/trac/ddnas-88f6281/trac/tracs/cgi-bin/trac.uwsgi.pid
wsgi-file=/home/trac/ddnas-88f6281/trac/tracs/cgi-bintrac.wsgi
chmod-socket=666
harakiri=30
disable-logging=true
master=true
memory-report=true
profiler=true
single-interpreter=true //删除了这句,还是 报 2528那行 的错误
pythonpath=/usr/lib/python2.6/site-packages/flup-1.0.3.dev_20100525-
py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/docutils-0.7-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/epydoc-3.0.1-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/supervisor-3.0a9-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/meld3-0.6.7-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/Pygments-1.4-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/pytz-2010o-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/simplejson-2.1.2-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/Genshi-0.6-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/Babel-0.9.5-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/Trac-0.12.1-py2.6.egg
pythonpath=/usr/lib/python2.6/site-packages/chardet-1.0.1-py2.6.egg
pythonpath=/usr/lib/python26.zip
pythonpath=/usr/lib/python2.6
pythonpath=/usr/lib/python2.6/plat-linux2
pythonpath=/usr/lib/python2.6/lib-tk
pythonpath=/usr/lib/python2.6/lib-old
pythonpath=/usr/lib/python2.6/lib-dynload
pythonpath=/usr/lib/python2.6/site-packages
pythonpath=/usr/lib/python2.6/site-packages

uwsgi --ini uwsgi.ini -d log


trac@lueluevpn2:~/ddnas-88f6281/trac/tracs/cgi-bin [trac@lueluevpn2
cgi-bin]$ cat log
*** Starting uWSGI 0.9.6.5 (32bit) on [Sat Jan 8 05:33:57 2011] ***
compiled with version: 4.1.2 20080704 (Red Hat 4.1.2-48)
Python version: 2.6.5 (r265:79063, Jun 4 2010, 21:43:07)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)]
writing pidfile to /home/trac/ddnas-88f6281/trac/tracs/cgi-bin/
trac.uwsgi.pid
your memory page size is 4096 bytes
*** WARNING: you have enabled harakiri without post buffering. Slow
upload could be rejected on post-unbuffered webservers ***
allocated 412 bytes (0 KB) for 1 request's buffer.
binding on UNIX socket: /home/trac/ddnas-88f6281/trac/tracs/cgi-bin/
trac.sock
your server socket listen backlog is limited to 64 connections
added /usr/lib/python2.6/site-packages/flup-1.0.3.dev_20100525-
py2.6.egg to pythonpath.
added /usr/lib/python2.6/site-packages/docutils-0.7-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/epydoc-3.0.1-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/supervisor-3.0a9-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/meld3-0.6.7-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/Pygments-1.4-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/pytz-2010o-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/simplejson-2.1.2-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/Genshi-0.6-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/Babel-0.9.5-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/Trac-0.12.1-py2.6.egg to
pythonpath.
added /usr/lib/python2.6/site-packages/chardet-1.0.1-py2.6.egg to
pythonpath.
added /usr/lib/python26.zip to pythonpath.
added /usr/lib/python2.6 to pythonpath.
added /usr/lib/python2.6/plat-linux2 to pythonpath.
added /usr/lib/python2.6/lib-tk to pythonpath.
added /usr/lib/python2.6/lib-old to pythonpath.
added /usr/lib/python2.6/lib-dynload to pythonpath.
added /usr/lib/python2.6/site-packages to pythonpath.
added /usr/lib/python2.6/site-packages to pythonpath.
initializing hooks...done.
fopen(): No such file or directory [uwsgi.c line 2528]

=====================================================
=====================================================

http://projects.unbit.it/uwsgi/browser/uwsgi.c?rev=253:a9913cdc2427
2528的代码如下所示,我是搞不明白到底什么意思.

2505 void manage_opt(int i, char *optarg) {
2506
2507 switch (i) {
2508 #ifndef UNBIT
2509 case LONG_ARGS_PIDFILE:
2510 uwsgi.pidfile = optarg;
2511 break;
2512 case LONG_ARGS_UDP:
2513 uwsgi.udp_socket = optarg;
2514 uwsgi.master_process = 1;
2515 break;
2516 case LONG_ARGS_CHROOT:
2517 uwsgi.chroot = optarg;
2518 break;
2519 case LONG_ARGS_GID:
2520 uwsgi.gid = atoi (optarg);
2521 break;
2522 case LONG_ARGS_UID:
2523 uwsgi.uid = atoi (optarg);
2524 break;
2525 case LONG_ARGS_BINARY_PATH:
2526 uwsgi.binary_path = optarg;
2527 break;
2528 case LONG_ARGS_WSGI_FILE:
2529 uwsgi.single_interpreter = 1;
2530 uwsgi.wsgi_file = optarg;
2531 break;

On Jan 7, 3:44 pm, "Zoom.Quiet" <zoom.qu...@gmail.com> wrote:


> 在 2011年1月7日 下午3:26,sniperpr <snipe...@gmail.com> 写道:
>
> > 10年12月16日我发了个mail,标题是 对 Trac熟悉的哥们进来.请教一个关于性能方面的问题.
>
>

Zoom.Quiet

unread,
Jan 8, 2011, 9:21:28 AM1/8/11
to trach...@googlegroups.com
在 2011年1月8日 下午6:39,linux_pro <snip...@gmail.com> 写道:
> 出点问题.
>
>
> 按照  http://wiki.woodpecker.org.cn/moin/NginxuWSGIPublishTrac
> 的方法.
> 菜鸟一只,请大家多帮忙.谢谢了.
> 先 解决   2 生成所有依赖目录信息:

嗯嗯嗯,那一段是因为俺们的主机被无数SA 安裝过无数Py 版本,完全无法自动加载正确的模块了,
所以,才给出这种极端的配置来,
一般是不需要的,按照官方的建议配置先跑起来就好 ;-)

> --
> 邮件来自: Google 论坛“TraChinese”论坛。
> 发言: trach...@googlegroups.com
> 退订: trachinese-...@googlegroups.com
> 详细: http://groups.google.com/group/trachinese
> 工程: http://trac-hacks.org/wiki/TracChineseTranslation

sniperpr

unread,
Jan 8, 2011, 11:15:20 AM1/8/11
to trach...@googlegroups.com
是的,我精简到了 只剩下trac.但是我没搞定
uwsgi --ini conf.ini -d log

.........
initializing hooks...done.
fopen(): No such file or directory [uwsgi.c line 2528]

我strace 了下.

gettimeofday({1294503222, 748696}, NULL) = 0
getsockopt(3, SOL_SOCKET, SO_TYPE, 0xbfdb4a6c, 0xbfdb4a68) = -1 EBADF (Bad file descriptor)
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7fad708) = 5495
exit_group(0)

这个红色看样子不太对劲,我更改了ini文件, 变更为  socket = 127.0.0.1:3031 还是出错. 
追不下去了.

Zoom.Quiet

unread,
Jan 8, 2011, 11:18:14 AM1/8/11
to trach...@googlegroups.com
在 2011年1月9日 上午12:15,sniperpr <snip...@gmail.com> 写道:
> 是的,我精简到了 只剩下trac.但是我没搞定
> uwsgi --ini conf.ini -d log
看起来是 uWSGI 没有安装成功哪...

sniperpr

unread,
Jan 8, 2011, 11:19:18 AM1/8/11
to trach...@googlegroups.com
不可能啊.我编译OK.
然后扔/usr/sbin/里面去了啊.

Zoom.Quiet

unread,
Jan 8, 2011, 11:27:27 AM1/8/11
to trach...@googlegroups.com
在 2011年1月9日 上午12:15,sniperpr <snip...@gmail.com> 写道:
> 是的,我精简到了 只剩下trac.但是我没搞定
> uwsgi --ini conf.ini -d log
> .........
> initializing hooks...done.
> fopen(): No such file or directory [uwsgi.c line 2528]

socket 文件的权限问题?

sniperpr

unread,
Jan 8, 2011, 11:29:52 AM1/8/11
to trach...@googlegroups.com
排除.我更换了端口.给了权限.
root.
正在用python26 setup.py install 从新弄trac
关键是以前没成功过,连个参照都没有.

如果还不行,我就按照example来做.
还不行,把ssh交给你看下....... 只要求救大牛了...

Zoom.Quiet

unread,
Jan 8, 2011, 11:46:48 AM1/8/11
to trach...@googlegroups.com
在 2011年1月9日 上午12:29,sniperpr <snip...@gmail.com> 写道:
> 排除.我更换了端口.给了权限.
> root.
> 正在用python26 setup.py install 从新弄trac
> 关键是以前没成功过,连个参照都没有.

不是吧,以前从来没有用 非 tracd 的方式发布过?
- 那么,用 lighttpd 带 fast-cgi 也很足够用的
- uWSGI 是个全新的 httpd ,不知道是否你编译的那个版本有小问题...

> 如果还不行,我就按照example来做.
> 还不行,把ssh交给你看下....... 只要求救大牛了...

这个,,,实在太危险了哪,,,最好是自个儿重新摸明白,比什么都靠谱 ;-)

>
> 在 2011年1月9日 上午12:27,Zoom.Quiet <zoom....@gmail.com>写道:
>>
>> 在 2011年1月9日 上午12:15,sniperpr <snip...@gmail.com> 写道:
>> > 是的,我精简到了 只剩下trac.但是我没搞定
>> > uwsgi --ini conf.ini -d log
>> > .........
>> > initializing hooks...done.
>> > fopen(): No such file or directory [uwsgi.c line 2528]
>>
>> socket 文件的权限问题?
>>

...

sniperpr

unread,
Jan 8, 2011, 11:52:52 AM1/8/11
to trach...@googlegroups.com
我觉得是我的环境问题多些.

给我惹火了,我倒我自己机器里面建立环境搞.
tracd 以前肯定是正常工作的.但是刚才我 python26 setup.py install 后,现在tracd都出错了. 404错误, 浏览器显示 环境问题.
不行,既然这个uwsgi这么给力,一定要将他搞定.

危险倒是不危险,没啥重要数据.我先折腾了....



sniperpr

unread,
Jan 8, 2011, 12:15:57 PM1/8/11
to trach...@googlegroups.com
uwsgi -s /tmp/uwsgi.sock -C -w trac.web.main:dispatch_request --env TRAC_ENV=/home/trac/ddnas-88f6281/trac/88f6281

*** Starting uWSGI 0.9.6.5 (32bit) on [Sat Jan  8 12:17:44 2011] ***
compiled with version: 4.1.2 20080704 (Red Hat 4.1.2-48)
Python version: 2.6.5 (r265:79063, Jun  4 2010, 21:43:07) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)]
 *** WARNING: you are running uWSGI without its master process manager ***
your memory page size is 4096 bytes
allocated 412 bytes (0 KB) for 1 request's buffer.
binding on UNIX socket: /tmp/uwsgi.sock
chmod() socket to 666 for lazy and brave users
your server socket listen backlog is limited to 64 connections
initializing hooks...done.
application 0 () ready
setting default application to 0
spawned uWSGI worker 1 (and the only) (pid: 1988)

 但是我的trac挂了.......我哭啊............当时安装trac是Pyhon2.4,运行的好好的,为了排除问题,python2.6安装的trac...
就无法访问trac了。还好,数据做了热备份..

sniperpr

unread,
Jan 8, 2011, 12:57:29 PM1/8/11
to trach...@googlegroups.com
确定是我机器环境问题.
看来我有事情要做了!!!!

我本机的ubuntu 10.10 desktop是工作正常的. 

sniperpr

unread,
Jan 9, 2011, 12:44:55 AM1/9/11
to trach...@googlegroups.com
重新来了遍系统。

centos5。5默认是PYTHON 2。4
自己下载了python2.6的安装上.

这会不懒了,以前是yum啊yum的,这下把自己搞晕了,我是没能力查出来到底那个lib或者那个bin出了问题。
可以肯定的是,我的系统python肯定是混乱不堪的.....

还是自己动手放心啊,用别人的yum真的不放心. 吃一堑长一智.

等全部完工,写个报告出来。

可惜这个疑难杂症我是没心情搞了.否则FAQ又可以多点东西.

Zoom.Quiet

unread,
Jan 9, 2011, 8:41:54 AM1/9/11
to trach...@googlegroups.com
在 2011年1月9日 下午1:44,sniperpr <snip...@gmail.com> 写道:
> 重新来了遍系统。
> centos5。5默认是PYTHON 2。4
> 自己下载了python2.6的安装上.
> 这会不懒了,以前是yum啊yum的,这下把自己搞晕了,我是没能力查出来到底那个lib或者那个bin出了问题。
是也乎,是也乎,俺也是习惯了BSD的ports,Debian 的apt 之后,
对于 CentOS的 yum 自动信任,從而食了N多亏,
所以,正牌 CentOS 的SA 从来和 RedHat 当年一样,一切是自个儿编译的...这样真不如用 Gentoo 呢..

祝好运!

sniperpr

unread,
Jan 12, 2011, 9:11:21 PM1/12/11
to Zoom.Quiet, trach...@googlegroups.com
谢谢大家抽时间查看。 :)


这几天配置了下,有几个问题需要解决.(已经google,看官方文档)

1 认证问题.
2 uwsgi+ NGINX 发布问题。 (静态发布)


问题    
认证问题,我使用 htpass来创建密码.
登录即要认证,然而密码肯定正确,但是提示 . 而我用fastcgi发布的时候,也是这个样子.

但奇怪的是,我用fastcgi发布的时候,取消了密码认证,然后我刷新浏览器,竟然是登录为 admin(之前我输入admin为登录).

http://76.164.225.196/   为我的页面地址,请点击看看。

500 Internal Server Error


问题 二
我已经正常填写了正确的发布地址,为何页面显示不全面?

我用fastcgi发布,就能够正常.
为何uwsgi不行呢?  配置文件在底部.


server {
    listen   80;
    server_name      trac.example.com;
    root /home/trac/ddnas88f6281/trac;


    location / {
        auth_basic      "AUTH";
        auth_basic_user_file    /home/trac/ddnas88f6281/auth/trac_passwd;
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9001;
        uwsgi_param SCRIPT_NAME /;
        uwsgi_modifier1 30;

   }
        location /trac/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;
        }

}

uwsgi.ini

uid=root
gid=root
#socket=/home/trac/ddnas88f6281/tracs/trac.sock
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

Zoom.Quiet

unread,
Jan 12, 2011, 9:27:59 PM1/12/11
to sniperpr, trach...@googlegroups.com
在 2011年1月13日 上午10:11,sniperpr <snip...@gmail.com> 写道:
...
> 这几天配置了下,有几个问题需要解决.(已经google,看官方文档)
那么你的尝试,以及理解呢?...

> 1 认证问题.
> 2 uwsgi+ NGINX 发布问题。 (静态发布)
>
> 问题    一
> 认证问题,我使用 htpass来创建密码.

htpasswd 命令哈,这是标准作法,但是仔细看文档,得用 指定的hash 算法的 ;-)
否则 Trac 不认识的,,,


> 登录即要认证,然而密码肯定正确,但是提示 . 而我用fastcgi发布的时候,也是这个样子.
> 但奇怪的是,我用fastcgi发布的时候,取消了密码认证,然后我刷新浏览器,竟然是登录为 admin(之前我输入admin为登录).

用 FF 的话,会记录之前认证的 cookie 的

> http://76.164.225.196/   为我的页面地址,请点击看看。
最好有 域名绑定,因为是 VPN 服务,有太多应用在同一IP 中,不知道是否会有错乱现象?

>
> 500 Internal Server Error
一般 500 是Trac 本身崩潰了,否则应该是一个友好的认证失败的报告页面的 ;-)

>
> 问题 二
> 我已经正常填写了正确的发布地址,为何页面显示不全面?
> 我用fastcgi发布,就能够正常.
> 为何uwsgi不行呢?  配置文件在底部.
>
> server {
>     listen   80;
>     server_name      trac.example.com;
>     root /home/trac/ddnas88f6281/trac;
>
>     location / {
>         auth_basic      "AUTH";
>         auth_basic_user_file    /home/trac/ddnas88f6281/auth/trac_passwd;
>         include uwsgi_params;
>         uwsgi_pass 127.0.0.1:9001;

建议使用 文件socket 方式,以便减少网卡的I/O

>         uwsgi_param SCRIPT_NAME /;
>         uwsgi_modifier1 30;
>    }

明显的,你想发布 trac 为:
http://76.164.225.196/trac
所以,因为如下进行配置
location / {
root /data/app/www/;
index index.html index.php;
autoindex off;
if ($request_uri ~ "^\/?$") {
rewrite ^(.*) /trac redirect;
}
}
location /trac {
...
}
如果要发布 trac 为: http://76.164.225.196/
那么,以下的静态就都要发布成:
location /chrome
location /raw-attachment
location /pygments
...

可以看一下首页 trac 解析出的 html 就知道静态资源目录应该发布成什么路径了...

>         location /trac/chrome/ {
>                 alias /home/trac/ddnas88f6281/tracs/htdocs/;
这里是否是完整的trac 实例的 html 资源目录?


>                 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;
>         }
> }

> uwsgi.ini
> uid=root
> gid=root
> #socket=/home/trac/ddnas88f6281/tracs/trac.sock
> socket = 127.0.0.1:9001
> 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

有条件的话,使用 viretualenv 来部署你的Trac 吧,
方便以后的升迁,备份,测试,,,

> 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

--

Zoom.Quiet

unread,
Jan 12, 2011, 10:30:01 PM1/12/11
to sniperpr, trach...@googlegroups.com
请回复到列表中,以便接收更加广泛的建议 ;-)

在 2011年1月13日 上午11:24,sniperpr <snip...@gmail.com> 写道:
...
>> > 1 认证问题.
>> > 2 uwsgi+ NGINX 发布问题。 (静态发布)
>> >
>> > 问题    一
>> > 认证问题,我使用 htpass来创建密码.
>> htpasswd 命令哈,这是标准作法,但是仔细看文档,得用 指定的hash 算法的 ;-)
>> 否则  Trac 不认识的,,,
>

> 我用tracd发布时候就用这个加密方式,我是让htpasswd默认生成,应该就是hash.
> 刚才我又尝试其他加密算法,还是依旧问题.
那应该就是配置文件,以及口令文件的权限问题了,
你得确保 httpd 运行的用户权限可以读写这个口令文件 ;-)
...

>> >
>> > 500 Internal Server Error
>> 一般 500 是Trac 本身崩潰了,否则应该是一个友好的认证失败的报告页面的 ;-)
>>

> 完全新手部署网页,连404都不太熟悉如何搞.... 我补下相关知识.
这个和 html 协议没有关系吧, 500 就是说应用服务挂了
...


>> > 问题 二
>> > 我已经正常填写了正确的发布地址,为何页面显示不全面?
>> > 我用fastcgi发布,就能够正常.
>> > 为何uwsgi不行呢?  配置文件在底部.
>> >
>> > server {
>> >     listen   80;
>> >     server_name      trac.example.com;
>> >     root /home/trac/ddnas88f6281/trac;
>> >
>> >     location / {
>> >         auth_basic      "AUTH";
>> >         auth_basic_user_file
>> >  /home/trac/ddnas88f6281/auth/trac_passwd;
>> >         include uwsgi_params;
>> >         uwsgi_pass 127.0.0.1:9001;
>> 建议使用 文件socket 方式,以便减少网卡的I/O
>

> copy,我是先拿这个做测试,等正常工作再来.


>
>>
>> >         uwsgi_param SCRIPT_NAME /;
>> >         uwsgi_modifier1 30;
>> >    }
>> 明显的,你想发布 trac 为:
>> http://76.164.225.196/trac
>> 所以,因为如下进行配置
>>        location / {
>>            root   /data/app/www/;
>>            index  index.html index.php;
>>            autoindex off;
>>            if ($request_uri ~ "^\/?$") {
>>                rewrite ^(.*) /trac redirect;
>

> 重定向 我理解,但是
> loation /trac {
> 。。。。。  这个是什么东东?里面放什么?

根据你的网站发布规划哪, 最终用户访问的 trac 如果是:
http://76.164.225.196/trac
那么 loation /trac { 就应该是真正的 Trac 应用发布的配置

> 放这些吗?     include uwsgi_params;
>         uwsgi_pass 127.0.0.1:9001;


>         uwsgi_param SCRIPT_NAME /;
>         uwsgi_modifier1 30;

> {


>
>>
>>            }
>>        }
>>        location /trac {
>>             ...
>>        }
>> 如果要发布 trac 为: http://76.164.225.196/
>> 那么,以下的静态就都要发布成:
>> location /chrome
>> location /raw-attachment
>> location /pygments
>> ...
>>
>> 可以看一下首页 trac 解析出的 html 就知道静态资源目录应该发布成什么路径了...
>>

> 我用tracd 看看.


>
>>
>> >         location /trac/chrome/ {
>> >                 alias /home/trac/ddnas88f6281/tracs/htdocs/;
>> 这里是否是完整的trac 实例的 html 资源目录?
>

> 是完整的资源.


>
>>
>> >                 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;
>> >         }
>> > }
>>
>> > uwsgi.ini

...


>> 有条件的话,使用 viretualenv 来部署你的Trac 吧,
>> 方便以后的升迁,备份,测试,,,
>>

> 恩,放入日程中. :)

Zoom.Quiet

unread,
Jan 12, 2011, 10:48:43 PM1/12/11
to sniperpr, trach...@googlegroups.com
在 2011年1月13日 上午11:41,sniperpr <snip...@gmail.com> 写道:
再次提醒哪! 请回复到列表中,以便接收更加广泛的建议 ;-)

>>
>> 在 2011年1月13日 上午11:24,sniperpr <snip...@gmail.com> 写道:
>> ...
>> >> > 1 认证问题.
>> >> > 2 uwsgi+ NGINX 发布问题。 (静态发布)
>> >> >
>> >> > 问题    一
>> >> > 认证问题,我使用 htpass来创建密码.
>> >> htpasswd 命令哈,这是标准作法,但是仔细看文档,得用 指定的hash 算法的 ;-)
>> >> 否则  Trac 不认识的,,,
>> >
>> > 我用tracd发布时候就用这个加密方式,我是让htpasswd默认生成,应该就是hash.
>> > 刚才我又尝试其他加密算法,还是依旧问题.
>> 那应该就是配置文件,以及口令文件的权限问题了,
>> 你得确保 httpd 运行的用户权限可以读写这个口令文件 ;-)
>> ...
>>
> 肯定是有权限的,我是root,我承认,我再服务问题上习惯不好. :)
- 呃,,,你得理解不论你的习惯是否好, Nginx 的习惯是好的哪!
一般编译时建议将 Nginx 的运行期 user 指定为 www
所以,不是你的权限如何,而是 uWSGI/trac/nginx 运行起来后,相关的文件/目录,是否允许它们来读写?!

> 我是无论输入正确的密码还是错误的密码,都会有个   500 Internal Server Error.
要真正明白 500 是什么意思,
- 在出错后,用 ps 搜索一下,相关的 tracd/uWSGI 进程是否还存活?
- 出错后,立即回到首页,是否依然是 500 ?

>
>> >> >
>> >> > 500 Internal Server Error
>> >> 一般 500 是Trac 本身崩潰了,否则应该是一个友好的认证失败的报告页面的 ;-)
>> >>
>> > 完全新手部署网页,连404都不太熟悉如何搞.... 我补下相关知识.
>> 这个和 html 协议没有关系吧, 500 就是说应用服务挂了
>>
...

sniperpr

unread,
Jan 13, 2011, 3:23:24 AM1/13/11
to Zoom.Quiet, trach...@googlegroups.com, szlug
在 2011年1月13日 上午11:48,Zoom.Quiet <zoom....@gmail.com>写道:
在 2011年1月13日 上午11:41,sniperpr <snip...@gmail.com> 写道:
再次提醒哪! 请回复到列表中,以便接收更加广泛的建议 ;-)
>>
COPY,这个习惯我要建立起来. 
谢谢提醒。 :)

>> 在 2011年1月13日 上午11:24,sniperpr <snip...@gmail.com> 写道:
>> ...
>> >> > 1 认证问题.
 
解决nginx认证,但是 trac的认证还不清楚概念.
 
>> >> > 2 uwsgi+ NGINX 发布问题。 (静态发布)
解决发布问题.稍候奉上完整版本.
 
>> >> >
>> >> > 问题    一
>> >> > 认证问题,我使用 htpass来创建密码.
>> >> htpasswd 命令哈,这是标准作法,但是仔细看文档,得用 指定的hash 算法的 ;-)
>> >> 否则  Trac 不认识的,,,
>> >
>> > 我用tracd发布时候就用这个加密方式,我是让htpasswd默认生成,应该就是hash.
>> > 刚才我又尝试其他加密算法,还是依旧问题.
>> 那应该就是配置文件,以及口令文件的权限问题了,
>> 你得确保 httpd 运行的用户权限可以读写这个口令文件 ;-)
>> ...
>>
> 肯定是有权限的,我是root,我承认,我再服务问题上习惯不好. :)
- 呃,,,你得理解不论你的习惯是否好, Nginx 的习惯是好的哪!
一般编译时建议将 Nginx 的运行期 user 指定为 www
所以,不是你的权限如何,而是 uWSGI/trac/nginx 运行起来后,相关的文件/目录,是否允许它们来读写?!

确实是权限问题 。我tall error.log后发现 提示没有权限.
怪我自己不仔细,nginx的 conf文件 是 nginx权限运行,肯定读不了 passwd(root权限).
 
> 我是无论输入正确的密码还是错误的密码,都会有个   500 Internal Server Error.
要真正明白 500 是什么意思,
- 在出错后,用 ps 搜索一下,相关的 tracd/uWSGI 进程是否还存活?
- 出错后,立即回到首页,是否依然是 500 ?

tracd ?   我没运行 tracd ,我只运行了 /usr/local/nginx/sbin/nginx  ,uwsgi --ini uwsgi.ini -d log

这个500错误是由  passwd认证问题引起. 多看log,多看log...  基本的规则我都没搞明白!唉!!!

>
>> >> >
>> >> > 500 Internal Server Error
>> >> 一般 500 是Trac 本身崩潰了,否则应该是一个友好的认证失败的报告页面的 ;-)
>> >>
>> > 完全新手部署网页,连404都不太熟悉如何搞.... 我补下相关知识.
>> 这个和 html 协议没有关系吧, 500 就是说应用服务挂了
>>
恩,没关系.
前几天刚玩的时候,把404搞成和 推特的 鲸鱼界面一样了.....呵呵....

Zoom.Quiet

unread,
Jan 13, 2011, 3:28:27 AM1/13/11
to sniperpr, trach...@googlegroups.com, szlug
在 2011年1月13日 下午4:23,sniperpr <snip...@gmail.com> 写道:
>> 在 2011年1月13日 上午11:41,sniperpr <snip...@gmail.com> 写道:
>> 再次提醒哪! 请回复到列表中,以便接收更加广泛的建议 ;-)
> COPY,这个习惯我要建立起来.

在gmail 中使用 a 就好 ;-)


>>
>> >> 在 2011年1月13日 上午11:24,sniperpr <snip...@gmail.com> 写道:
>> >> ...
>> >> >> > 1 认证问题.
> 解决nginx认证,但是 trac的认证还不清楚概念.
>

嗯嗯嗯有进展就好,记得记录下来blog /wiki 分享哪!


>>
>> >> >> > 2 uwsgi+ NGINX 发布问题。 (静态发布)
>
> 解决发布问题.稍候奉上完整版本.

嗯嗯嗯,这个其实就是网站的部署理解,和配置文件无关;-)
Nginx 的配置很精简的,关键是自个儿要想明白要发布成什么样儿

...


>> >> >> > 认证问题,我使用 htpass来创建密码.
>> >> >> htpasswd 命令哈,这是标准作法,但是仔细看文档,得用 指定的hash 算法的 ;-)
>> >> >> 否则  Trac 不认识的,,,
>> >> >
>> >> > 我用tracd发布时候就用这个加密方式,我是让htpasswd默认生成,应该就是hash.
>> >> > 刚才我又尝试其他加密算法,还是依旧问题.
>> >> 那应该就是配置文件,以及口令文件的权限问题了,
>> >> 你得确保 httpd 运行的用户权限可以读写这个口令文件 ;-)
>> >> ...
>> >>
>> > 肯定是有权限的,我是root,我承认,我再服务问题上习惯不好. :)
>> - 呃,,,你得理解不论你的习惯是否好, Nginx 的习惯是好的哪!
>> 一般编译时建议将 Nginx 的运行期 user 指定为 www
>> 所以,不是你的权限如何,而是 uWSGI/trac/nginx 运行起来后,相关的文件/目录,是否允许它们来读写?!
>>
> 确实是权限问题 。我tall error.log后发现 提示没有权限.
> 怪我自己不仔细,nginx的 conf文件 是 nginx权限运行,肯定读不了 passwd(root权限).
>
>>
>> > 我是无论输入正确的密码还是错误的密码,都会有个   500 Internal Server Error.
>> 要真正明白 500 是什么意思,
>> - 在出错后,用 ps 搜索一下,相关的 tracd/uWSGI 进程是否还存活?
>> - 出错后,立即回到首页,是否依然是 500 ?
>>
> tracd ?   我没运行 tracd ,我只运行了 /usr/local/nginx/sbin/nginx  ,uwsgi --ini
> uwsgi.ini -d log
> 这个500错误是由  passwd认证问题引起. 多看log,多看log...  基本的规则我都没搞明白!唉!!!

俺是说,可以先用 tracd 来快速进行调试,都KO 了,再用 Nginx 正式发布;
以免各种问题纠结在一起,阻碍问题的追踪...

...
> 前几天刚玩的时候,把404搞成和 推特的 鲸鱼界面一样了.....呵呵....
>>
咔咔咔,这也是 Nginx 有爱的地方哪,本身支持协议的自动转发指定页面的 ;-)

sniperpr

unread,
Jan 13, 2011, 4:07:40 AM1/13/11
to Zoom.Quiet, trach...@googlegroups.com, szlug
在 2011年1月13日 下午4:28,Zoom.Quiet <zoom....@gmail.com>写道:
在 2011年1月13日 下午4:23,sniperpr <snip...@gmail.com> 写道:
>> 在 2011年1月13日 上午11:41,sniperpr <snip...@gmail.com> 写道:
>> 再次提醒哪! 请回复到列表中,以便接收更加广泛的建议 ;-)
> COPY,这个习惯我要建立起来.

在gmail 中使用 a 就好 ;-)
恩.好快捷键! 
>>
>> >> 在 2011年1月13日 上午11:24,sniperpr <snip...@gmail.com> 写道:
>> >> ...
>> >> >> > 1 认证问题.
> 解决nginx认证,但是 trac的认证还不清楚概念.
>

嗯嗯嗯有进展就好,记得记录下来blog /wiki 分享哪!

那是肯定的. 哈哈哈,感谢全程指点.
 
>>
>> >> >> > 2 uwsgi+ NGINX 发布问题。 (静态发布)
>
> 解决发布问题.稍候奉上完整版本.
嗯嗯嗯,这个其实就是网站的部署理解,和配置文件无关;-)
Nginx 的配置很精简的,关键是自个儿要想明白要发布成什么样儿

我还是稀里糊涂的,这个得多向大家取经,多看文档.. 
...
>> >> >> > 认证问题,我使用 htpass来创建密码.
>> >> >> htpasswd 命令哈,这是标准作法,但是仔细看文档,得用 指定的hash 算法的 ;-)
>> >> >> 否则  Trac 不认识的,,,
>> >> >
>> >> > 我用tracd发布时候就用这个加密方式,我是让htpasswd默认生成,应该就是hash.
>> >> > 刚才我又尝试其他加密算法,还是依旧问题.
>> >> 那应该就是配置文件,以及口令文件的权限问题了,
>> >> 你得确保 httpd 运行的用户权限可以读写这个口令文件 ;-)
>> >> ...
>> >>
>> > 肯定是有权限的,我是root,我承认,我再服务问题上习惯不好. :)
>> - 呃,,,你得理解不论你的习惯是否好, Nginx 的习惯是好的哪!
>> 一般编译时建议将 Nginx 的运行期 user 指定为 www
>> 所以,不是你的权限如何,而是 uWSGI/trac/nginx 运行起来后,相关的文件/目录,是否允许它们来读写?!
>>
> 确实是权限问题 。我tall error.log后发现 提示没有权限.
> 怪我自己不仔细,nginx的 conf文件 是 nginx权限运行,肯定读不了 passwd(root权限).
>
>>
>> > 我是无论输入正确的密码还是错误的密码,都会有个   500 Internal Server Error.
>> 要真正明白 500 是什么意思,
>> - 在出错后,用 ps 搜索一下,相关的 tracd/uWSGI 进程是否还存活?
>> - 出错后,立即回到首页,是否依然是 500 ?
>>
> tracd ?   我没运行 tracd ,我只运行了 /usr/local/nginx/sbin/nginx  ,uwsgi --ini
> uwsgi.ini -d log
> 这个500错误是由  passwd认证问题引起. 多看log,多看log...  基本的规则我都没搞明白!唉!!!

俺是说,可以先用 tracd 来快速进行调试,都KO 了,再用 Nginx 正式发布;
以免各种问题纠结在一起,阻碍问题的追踪...

汗颜,我没理解。 
我已经用tracd开始了 1个月的项目了... 4-5个人的小项目....基本上KO,除了运行效率实在太低....

目前还有个trac内部的login问题没有解决. 

我当前运行正常的配置文件.
目前是只要登录网站就 认证,这个是正常的。
但是 trac的内部认证是没有的.
看下面红色字体.

默认就成了 404 Not Found

nginx 的error.log里面是 
2011/01/13 04:08:59 [error] 3794#0: *81 open() "/home/trac/ddnas88f6281/trac/login" failed (2: No such file or directory), client: 183.17.168.124, server: , request: "GET /login HTTP/1.1", host: "76.164.225.196",

为何我要把login定义到   alias /home/trac/ddnas88f6281/trac/login; 呢?
因为我自己用 tracd 时候,看到 login时候就是输出这个 login信息.




server {
    listen   80;

        location / {

        include uwsgi_params;
        #   root   /usr/local/nginx/html/;
        auth_basic      "Auth !!";
        auth_basic_user_file    /home/trac/ddnas88f6281/auth/trac_passwd;
        #uwsgi_param SCRIPT_NAME /;
        uwsgi_pass 127.0.0.1:9001;
        uwsgi_modifier1 30;
           index  index.html;
           autoindex off;
        #   if ($request_uri ~ "^\/?$") {
        #       rewrite ^(.*) /trac redirect;
        #   }
       }

        #location /login {
        #       alias /home/trac/ddnas88f6281/trac/login;
        #       auth_basic      "trac realm";
        #       auth_basic_user_file    /home/trac/ddnas88f6281/auth/trac_passwd;
        #       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;
        }

}




 
...
1E3.gif

Zoom.Quiet

unread,
Jan 13, 2011, 4:15:33 AM1/13/11
to sniperpr, trach...@googlegroups.com, szlug
在 2011年1月13日 下午5:07,sniperpr <snip...@gmail.com>写道:
...

>> 俺是说,可以先用 tracd 来快速进行调试,都KO 了,再用 Nginx 正式发布;
>> 以免各种问题纠结在一起,阻碍问题的追踪...
>>
...
> 目前还有个trac内部的login问题没有解决.
> 我当前运行正常的配置文件.
> 目前是只要登录网站就 认证,这个是正常的。
> 但是 trac的内部认证是没有的.
> 看下面红色字体.
> 默认就成了 404 Not Found
> nginx 的error.log里面是
> 2011/01/13 04:08:59 [error] 3794#0: *81 open() "/home/trac/ddnas88f6281/trac/login" failed (2: No such file or directory), client: 183.17.168.124, server: , request: "GET /login HTTP/1.1", host: "76.164.225.196",
> 为何我要把login定义到   alias /home/trac/ddnas88f6281/trac/login; 呢?
> 因为我自己用 tracd 时候,看到 login时候就是输出这个 login信息.

>         #location /login {
>         #       alias /home/trac/ddnas88f6281/trac/login;

FT! 这个文件或是目录有嘛?
- 用户访问的URL
- Nginx 发布的URL
- Trac 发布的URL
以上3个是完全的不同对象,表任意指代哪...
这里参考官方文档就好 ;-)
http://trac.edgewall.org/wiki/TracModWSGI

>         #       auth_basic      "trac realm";
>         #       auth_basic_user_file    /home/trac/ddnas88f6281/auth/trac_passwd;
>         #       autoindex off;
>         #}

sniperpr

unread,
Jan 13, 2011, 4:19:33 AM1/13/11
to Zoom.Quiet, szlug, trach...@googlegroups.com
刚才就在里面搜索了  auth  nginx trac 关键字找到这个.

还在看.... 
360.gif

sniperpr

unread,
Jan 13, 2011, 8:21:33 PM1/13/11
to Zoom.Quiet, szlug, trach...@googlegroups.com
早上又看了下,实在是没看明白我的nginx和apache的配置区别.
人家可以,为何我的不行呢?

我的login配置是这个.
location /login {
include uwsgi_params;
auth_basic "trac realm";
auth_basic_user_file /home/trac/ddnas88f6281/auth/trac_passwd;
# autoindex off;
}

APACHE配置

<Location "/trac/login">
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /somewhere/trac.htpasswd
  Require valid-user
</Location>
我这样配置nginx的log  :   error.log显示

2011/01/13 20:03:02 [error] 9729#0: *2129 open() "/usr/share/nginx/html/login" failed (2: No such file or directory), client: 183.17.168.124, server: , request: "GET /login HTTP/1.1", host: "76.164.225.196", referrer: "http://76.164.225.196/"

如果我更换成为这个 location /trac/[^/]+/login {

WEB显示

Trac错误

缺少身份认证信息,请查看 安装文档 。

TracGuide — Trac用户及管理员指南

则没有 error
可是我trac和 passwd文件的用户名是对称的阿.
 

插播广告一条:
 220.181.108.173 - - [13/Jan/2011:20:21:00 -0500] GET / HTTP/1.1 "401" 195 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)" "-"

2011/01/13 20:21:00 [error] 9815#0: *8 no user/password was provided for basic authentication, client: 220.181.108.173, server: , request: "GET / HTTP/1.1", host: "76.164.225.196"

等会加个参数,不让它爬我.烂baidu.
360.gif

Zoom.Quiet

unread,
Jan 13, 2011, 8:45:59 PM1/13/11
to sniperpr, szlug, trach...@googlegroups.com
在 2011年1月14日 上午9:21,sniperpr <snip...@gmail.com>写道:
> 早上又看了下,实在是没看明白我的nginx和apache的配置区别.
> 人家可以,为何我的不行呢?
> 我的login配置是这个.
> location /login {
> include uwsgi_params;
> auth_basic "trac realm";
> auth_basic_user_file /home/trac/ddnas88f6281/auth/trac_passwd;
> # autoindex off;
> }
> APACHE配置
>
> <Location "/trac/login">
> AuthType Basic
> AuthName "Trac"
> AuthUserFile /somewhere/trac.htpasswd
> Require valid-user
> </Location>
>
> 我这样配置nginx的log  :   error.log显示
> 2011/01/13 20:03:02 [error] 9729#0: *2129 open() "/usr/share/nginx/html/login" failed (2: No such file or directory), client: 183.17.168.124, server: , request: "GET /login HTTP/1.1", host: "76.164.225.196", referrer: "http://76.164.225.196/"
> 如果我更换成为这个 location /trac/[^/]+/login {
> WEB显示
>
> Trac错误
>
> 缺少身份认证信息,请查看 安装文档 。
你指的文档都打不开,给几个相关的中文的:
ZhTracCgi – OpenKavass 开源卫士社区 {Powerded by KTRAC}
http://code.ijinshan.com/trac/wiki/ZhTracCgi
ZhTracStandalone – OpenKavass 开源卫士社区 {Powerded by KTRAC}
http://code.ijinshan.com/trac/wiki/ZhTracStandalone
ZhTracModPython – OpenKavass 开源卫士社区 {Powerded by KTRAC}
http://code.ijinshan.com/trac/wiki/ZhTracModPython

> 则没有 error
> 可是我trac和 passwd文件的用户名是对称的阿.

...

Reply all
Reply to author
Forward
0 new messages