c********l 发帖数: 8138 | 1 周末的时候在家里闲得无聊,于是想体验一把Python的web server。本来以为,无非是
手动地实现一个类似于WAMP的功能,应该花不了太长时间。但最后的事实是:各种问题
不断,插曲实在太多,花费了偶大半天的时间,于是把安装经验分享在网上,希望后来
人少走弯路。
web.py在安装之前,需要有几个dependency: web server, Python, CGI/WSGI module,
Database, Database driver/adaptor.
第一步:web server
web.py的官方页面上说既可以用LightTPD也可以用Apache,考虑到Apache更普遍,平时
也经常用Apache,于是决定使用Apache。在官网上找到Apache 2.4 for windows x64下
载,安装,设端口为4567,最后start。发现:在服务器本地访问http://localhost:4567/时,一切OK。但是如果用远程机器上的浏览器访问http://my.server.com:4567/时,浏览器会长时间显示空白页面,最后超时报错。一开始怀疑可能是路由器没有打开NAT映射的问题,于是打开4567端口映射,再试,问题照旧。于是采取更激进的措施:索性在路由器上开启DMZ,同时DMZ指向安装了Apache的那台机器的IP,问题依然照旧。再打开Apache的logs,发现凡是本地访问的信息都会在上面一条不落地记录地一清二楚,但是远程的访问信息一点痕迹也没有。于是考虑到是不是Windows Server 2008自带的防火墙的问题。后来证实果然是: 如果没有在管理面板中明确指明允许端口或进程,那么Windows 2008的防火墙就会自动默认禁止相关的链接。解决方案有几种:添加"allow port 4567"的rule;添加"allow httpd.exe"的rule;甚至关闭windows Server自带的防火墙。本人选择了第二种方案,即"allow httpd.exe"的rule。最后终于出现Apache那“It works!”的界面
第二步:安装Python
由于本人之前没有学过Python,机器上也没有任何Python Legacy Code, 所以选择了
稳定版本中最高的3.3。在安装python时倒没什么问题
第三步:安装WSGI Module
在web.py的说明上有N种module,选择了最推荐的WSGI. 但是其在Google Project上的官
网做得极不人性化。好不容易在downloads那一栏里面找到了一个“mod_wsgi-win32-
ap22py31-3.3.so”。于是下载之,放到Apache安装目录下的modules目录下,并且修改
了Apache的httpd.conf,往里面加了一行LoadModules。再之后Apache始终启动不起来,
一直报错:
httpd.exe: Syntax error on line 129 of C:/Program Files (x86)/Apache
Software Foundation/Apache2.4/conf/httpd.conf: Cannot load C:/Program Files
(x86)/Apache Software Foundation/Apache2.4/modules/mod_wsgi.so into server:
The specified module could not be found.反复检查来检查去,确认那路径明明是正
确的。既然路径正确,为什么会显示“syntax error”和“cannot be found”呢?查
了一查stackoverflow,说是32位版本的Apache + WSGI Module与64位版本的Python不
兼容。既然这样,索性从头开始,卸载了x64的Python,重新安装了x32的Python,但问
题照旧…………继续做功课,无意中发现了一个叫apachelounge.com的网站,从上面下
载了x64版的Apache,又找到了一个“Unofficial Windows Binaries for Python
Extension Packages”的个人网站,下载了x64版的mod_wsgi。如此一来,Apache, mod
_wsgi, Python这三者都是64位的了!Apache顺利启动!
第四步:安装Database,这一步也是相当顺利,跳过
第五步:psycopg
和WSGI Module类似,官网上所提供的下载主要是源文件。自己下载,并在windows环境
下编译虽然可行,但会非常非常麻烦。好在官网上提供了一个链接,指向stickpeople.
com,上面提供了for Python 3.2 & Windows x64的下载。看到那里,心中一乐心想“
大功告成了”。结果发现实在是高兴得太早了,在执行其安装程序时,提示找不到
python的目录。原因实在再也明显不过:因为psycopg所对应的版本是python 3.2,然
而机器上已经安装了python 3.3。一个3.3,另一个3.2,自然不兼容。在山穷水复之际
,突然想到了刚才的那个“Unofficial Windows Binaries for Python Extension
Packages”的个人网站(顺便赞一把网站作者Christoph Gohlke),上面赫然列了一项
for Python 3.3& Windows x64的下载,遂下载之。
插曲:虽然psycopg 2.4.6 on Python 3.3大体可以运行,但是正规的试验表明,存在
两个regression test 没有通过:testByteaHexCheckFalsePositive,
testAdaptBytearray。大部分人不会用到这两项功能,也不能否定将来会有小隐患。
第六步:设置Apache上的virtual directory
如果希望在一台主机上部署多个不同功能的网站,那么virtual server/directory必不
可少。这可以在Apache的设置文件中轻易设置。设置完了之后等待我的依然是麻烦--
系统只显示:“403 forbidden”出错信息。怎么改都无效。最后发现是Apache 2.2与2
.4之间的改动的问题。
在Apache 2.2中,只需要加上
Order allow,deny
Allow from all
就行了,而在Apache 2.4中,只有给相应的条目加上
Require all granted
才算数。
然后呢?然后,就没有然后了 |
d********g 发帖数: 10550 | 2 这作者都挂了,不要学了
module,
【在 c********l 的大作中提到】 : 周末的时候在家里闲得无聊,于是想体验一把Python的web server。本来以为,无非是 : 手动地实现一个类似于WAMP的功能,应该花不了太长时间。但最后的事实是:各种问题 : 不断,插曲实在太多,花费了偶大半天的时间,于是把安装经验分享在网上,希望后来 : 人少走弯路。 : web.py在安装之前,需要有几个dependency: web server, Python, CGI/WSGI module, : Database, Database driver/adaptor. : 第一步:web server : web.py的官方页面上说既可以用LightTPD也可以用Apache,考虑到Apache更普遍,平时 : 也经常用Apache,于是决定使用Apache。在官网上找到Apache 2.4 for windows x64下 : 载,安装,设端口为4567,最后start。发现:在服务器本地访问http://localhost:4567/时,一切OK。但是如果用远程机器上的浏览器访问http://my.server.com:4567/时,浏览器会长时间显示空白页面,最后超时报错。一开始怀疑可能是路由器没有打开NAT映射的问题,于是打开4567端口映射,再试,问题照旧。于是采取更激进的措施:索性在路由器上开启DMZ,同时DMZ指向安装了Apache的那台机器的IP,问题依然照旧。再打开Apache的logs,发现凡是本地访问的信息都会在上面一条不落地记录地一清二楚,但是远程的访问信息一点痕迹也没有。于是考虑到是不是Windows Server 2008自带的防火墙的问题。后来证实果然是: 如果没有在管理面板中明确指明允许端口或进程,那么Windows 2008的防火墙就会自动默认禁止相关的链接。解决方案有几种:添加"allow port 4567"的rule;添加"allow httpd.exe"的rule;甚至关闭windows Server自带的防火墙。本人选择了第二种方案,即"allow httpd.exe"的rule。最后终于出现Apache那“It works!”的界面
|
c********l 发帖数: 8138 | 3 which作者?
apache?
python?
postgre?
psycopg?
wsgi module?
web.py?
【在 d********g 的大作中提到】 : 这作者都挂了,不要学了 : : module,
|
d********g 发帖数: 10550 | 4 唉,不要两耳不闻窗外事……
http://en.wikipedia.org/wiki/Aaron_Swartz
【在 c********l 的大作中提到】 : which作者? : apache? : python? : postgre? : psycopg? : wsgi module? : web.py?
|
d********g 发帖数: 10550 | 5 web.py
另外是postgres或者PostgreSQL,没有postgre的说法……
【在 c********l 的大作中提到】 : which作者? : apache? : python? : postgre? : psycopg? : wsgi module? : web.py?
|
c********l 发帖数: 8138 | 6 他的大名我当然知道
为了纪念他,偶还是要学
【在 d********g 的大作中提到】 : 唉,不要两耳不闻窗外事…… : http://en.wikipedia.org/wiki/Aaron_Swartz
|
s*******a 发帖数: 8827 | 7 在windows上折腾这些是自虐啊。
有钱还是上mac吧,对自己好一点。
mac上一个terminal就甩windows9条街
module,
【在 c********l 的大作中提到】 : 周末的时候在家里闲得无聊,于是想体验一把Python的web server。本来以为,无非是 : 手动地实现一个类似于WAMP的功能,应该花不了太长时间。但最后的事实是:各种问题 : 不断,插曲实在太多,花费了偶大半天的时间,于是把安装经验分享在网上,希望后来 : 人少走弯路。 : web.py在安装之前,需要有几个dependency: web server, Python, CGI/WSGI module, : Database, Database driver/adaptor. : 第一步:web server : web.py的官方页面上说既可以用LightTPD也可以用Apache,考虑到Apache更普遍,平时 : 也经常用Apache,于是决定使用Apache。在官网上找到Apache 2.4 for windows x64下 : 载,安装,设端口为4567,最后start。发现:在服务器本地访问http://localhost:4567/时,一切OK。但是如果用远程机器上的浏览器访问http://my.server.com:4567/时,浏览器会长时间显示空白页面,最后超时报错。一开始怀疑可能是路由器没有打开NAT映射的问题,于是打开4567端口映射,再试,问题照旧。于是采取更激进的措施:索性在路由器上开启DMZ,同时DMZ指向安装了Apache的那台机器的IP,问题依然照旧。再打开Apache的logs,发现凡是本地访问的信息都会在上面一条不落地记录地一清二楚,但是远程的访问信息一点痕迹也没有。于是考虑到是不是Windows Server 2008自带的防火墙的问题。后来证实果然是: 如果没有在管理面板中明确指明允许端口或进程,那么Windows 2008的防火墙就会自动默认禁止相关的链接。解决方案有几种:添加"allow port 4567"的rule;添加"allow httpd.exe"的rule;甚至关闭windows Server自带的防火墙。本人选择了第二种方案,即"allow httpd.exe"的rule。最后终于出现Apache那“It works!”的界面
|
a9 发帖数: 21638 | 8 啥terminal这么牛逼?
windows上的putty很不错啊。
非是
问题
后来
平时
x64下
【在 s*******a 的大作中提到】 : 在windows上折腾这些是自虐啊。 : 有钱还是上mac吧,对自己好一点。 : mac上一个terminal就甩windows9条街 : : module,
|
|
s*******a 发帖数: 8827 | 9 putty跟terminal完全两码事
【在 a9 的大作中提到】 : 啥terminal这么牛逼? : windows上的putty很不错啊。 : : 非是 : 问题 : 后来 : 平时 : x64下
|
y*******g 发帖数: 6599 | 10 装个linux就好了
【在 s*******a 的大作中提到】 : 在windows上折腾这些是自虐啊。 : 有钱还是上mac吧,对自己好一点。 : mac上一个terminal就甩windows9条街 : : module,
|
|
|
B***i 发帖数: 724 | 11 没有用过python来玩web.py, 还真是自虐 |
a9 发帖数: 21638 | 12 看上去跟cherrypy+mako有点像。
【在 B***i 的大作中提到】 : 没有用过python来玩web.py, 还真是自虐
|
c********l 发帖数: 8138 | 13 mako? 什么东西?和moco有什么联系?
【在 a9 的大作中提到】 : 看上去跟cherrypy+mako有点像。
|
E*****m 发帖数: 25615 | 14 連 python 都沒學過, 沒搞懂你裝web.py 做什麼。
module,
【在 c********l 的大作中提到】 : 周末的时候在家里闲得无聊,于是想体验一把Python的web server。本来以为,无非是 : 手动地实现一个类似于WAMP的功能,应该花不了太长时间。但最后的事实是:各种问题 : 不断,插曲实在太多,花费了偶大半天的时间,于是把安装经验分享在网上,希望后来 : 人少走弯路。 : web.py在安装之前,需要有几个dependency: web server, Python, CGI/WSGI module, : Database, Database driver/adaptor. : 第一步:web server : web.py的官方页面上说既可以用LightTPD也可以用Apache,考虑到Apache更普遍,平时 : 也经常用Apache,于是决定使用Apache。在官网上找到Apache 2.4 for windows x64下 : 载,安装,设端口为4567,最后start。发现:在服务器本地访问http://localhost:4567/时,一切OK。但是如果用远程机器上的浏览器访问http://my.server.com:4567/时,浏览器会长时间显示空白页面,最后超时报错。一开始怀疑可能是路由器没有打开NAT映射的问题,于是打开4567端口映射,再试,问题照旧。于是采取更激进的措施:索性在路由器上开启DMZ,同时DMZ指向安装了Apache的那台机器的IP,问题依然照旧。再打开Apache的logs,发现凡是本地访问的信息都会在上面一条不落地记录地一清二楚,但是远程的访问信息一点痕迹也没有。于是考虑到是不是Windows Server 2008自带的防火墙的问题。后来证实果然是: 如果没有在管理面板中明确指明允许端口或进程,那么Windows 2008的防火墙就会自动默认禁止相关的链接。解决方案有几种:添加"allow port 4567"的rule;添加"allow httpd.exe"的rule;甚至关闭windows Server自带的防火墙。本人选择了第二种方案,即"allow httpd.exe"的rule。最后终于出现Apache那“It works!”的界面
|
c********l 发帖数: 8138 | 15 不正是为了学习么
话说回来,正文仅仅是安装了所有的第三方dependency,连web.py的一根毛都没有碰
我标题中提web.py只是为了寻求一种不打那么多关键字的方法
为啥你们这些回复只聚焦在web.py?
【在 B***i 的大作中提到】 : 没有用过python来玩web.py, 还真是自虐
|
d********g 发帖数: 10550 | 16 装Linux也行。搞open source的确实Windows不好用
【在 s*******a 的大作中提到】 : 在windows上折腾这些是自虐啊。 : 有钱还是上mac吧,对自己好一点。 : mac上一个terminal就甩windows9条街 : : module,
|
d********g 发帖数: 10550 | 17 web.py好比PHP,众人震精鸟
【在 c********l 的大作中提到】 : 不正是为了学习么 : 话说回来,正文仅仅是安装了所有的第三方dependency,连web.py的一根毛都没有碰 : 我标题中提web.py只是为了寻求一种不打那么多关键字的方法 : 为啥你们这些回复只聚焦在web.py?
|
t***a 发帖数: 416 | 18 用gentoo, 一切从source code重新编译。。。。
【在 d********g 的大作中提到】 : 装Linux也行。搞open source的确实Windows不好用
|
d********g 发帖数: 10550 | 19 不怕伤硬盘的就用
【在 t***a 的大作中提到】 : 用gentoo, 一切从source code重新编译。。。。
|
c********l 发帖数: 8138 | 20 我这么反问吧:
即使我不用web.py而是用Django,
原文中所述的那些Apache, Virtual Directory,mod_wsgi那些东东,
不也一样都要go through么?
【在 d********g 的大作中提到】 : web.py好比PHP,众人震精鸟
|
|
|
c********l 发帖数: 8138 | 21 你都没仔细看原文
【在 E*****m 的大作中提到】 : 連 python 都沒學過, 沒搞懂你裝web.py 做什麼。 : : module,
|
d********g 发帖数: 10550 | 22 Apache也是PHP,mod_wsgi也是PHP,MySQL也是PHP
隔行如隔山啊
【在 c********l 的大作中提到】 : 我这么反问吧: : 即使我不用web.py而是用Django, : 原文中所述的那些Apache, Virtual Directory,mod_wsgi那些东东, : 不也一样都要go through么?
|
c********l 发帖数: 8138 | 23 ????怎么扯到PHP上了??
【在 d********g 的大作中提到】 : Apache也是PHP,mod_wsgi也是PHP,MySQL也是PHP : 隔行如隔山啊
|
d********g 发帖数: 10550 | 24 PHP是一个形容词在这里
另外web.py都不支持python 3,你装个3干嘛……
【在 c********l 的大作中提到】 : ????怎么扯到PHP上了??
|
c********l 发帖数: 8138 | 25
elaborate??BTW,我可不怎么会PHP.....看着满屏的"->"就让我回忆起恶梦般的C++
有哪些轻量的framework支持python 3?
【在 d********g 的大作中提到】 : PHP是一个形容词在这里 : 另外web.py都不支持python 3,你装个3干嘛……
|
d********g 发帖数: 10550 | 26 轻量级的有Bottle。Django 1.5也带了支持其实
【在 c********l 的大作中提到】 : : elaborate??BTW,我可不怎么会PHP.....看着满屏的"->"就让我回忆起恶梦般的C++ : 有哪些轻量的framework支持python 3?
|
B***i 发帖数: 724 | 27 很多公司都还停留在python 2.6, 2.7呢。 你装个3.3, 唉 |
c********l 发帖数: 8138 | 28 昨天本版不是还有人说bottle 其实是一个吊丝程序员的浆糊作品?
那就只能上Django 了?
【在 d********g 的大作中提到】 : 轻量级的有Bottle。Django 1.5也带了支持其实
|
d********g 发帖数: 10550 | 29 那是我说的好吧。也不算浆糊,质量上是不如Django。Django入门是绝对没错的,不要
听信什么重量级的传闻,你自己搞也可以搞成轻量级的
【在 c********l 的大作中提到】 : 昨天本版不是还有人说bottle 其实是一个吊丝程序员的浆糊作品? : 那就只能上Django 了?
|
d********g 发帖数: 10550 | 30 传统Django + PostgreSQL的应用看disqus的文章,好多人是从Django顺带学Python,
而不是先会Python再学Django
新的趋势看Pinterest的部署文章,大量用AWS
【在 d********g 的大作中提到】 : 那是我说的好吧。也不算浆糊,质量上是不如Django。Django入门是绝对没错的,不要 : 听信什么重量级的传闻,你自己搞也可以搞成轻量级的
|
|
|
E*****m 发帖数: 25615 | 31 我看了, 你有興趣應該先學 Python, 再來搞這些。
【在 c********l 的大作中提到】 : 你都没仔细看原文
|
c********l 发帖数: 8138 | 32 links plz?
【在 d********g 的大作中提到】 : 传统Django + PostgreSQL的应用看disqus的文章,好多人是从Django顺带学Python, : 而不是先会Python再学Django : 新的趋势看Pinterest的部署文章,大量用AWS
|
c********l 发帖数: 8138 | 33 python不就是那么一些么?
没有括号,缩进,for和if用冒号,没有类似java的for loop
tuples, lambda,外加一些字符的class...神马的
偶之前还在版上贴过python的程序呢
http://www.mitbbs.com/article/Programming/31245807_0.html
这些东西,在真神面前是小儿科,不过编编web应该够用了
【在 E*****m 的大作中提到】 : 我看了, 你有興趣應該先學 Python, 再來搞這些。
|
a9 发帖数: 21638 | 34 cherrypy好像支持
【在 c********l 的大作中提到】 : python不就是那么一些么? : 没有括号,缩进,for和if用冒号,没有类似java的for loop : tuples, lambda,外加一些字符的class...神马的 : 偶之前还在版上贴过python的程序呢 : http://www.mitbbs.com/article/Programming/31245807_0.html : 这些东西,在真神面前是小儿科,不过编编web应该够用了
|
N*****m 发帖数: 42603 | 35 看着就蛋疼啊
node.js5分钟搞定的事
module,
【在 c********l 的大作中提到】 : 周末的时候在家里闲得无聊,于是想体验一把Python的web server。本来以为,无非是 : 手动地实现一个类似于WAMP的功能,应该花不了太长时间。但最后的事实是:各种问题 : 不断,插曲实在太多,花费了偶大半天的时间,于是把安装经验分享在网上,希望后来 : 人少走弯路。 : web.py在安装之前,需要有几个dependency: web server, Python, CGI/WSGI module, : Database, Database driver/adaptor. : 第一步:web server : web.py的官方页面上说既可以用LightTPD也可以用Apache,考虑到Apache更普遍,平时 : 也经常用Apache,于是决定使用Apache。在官网上找到Apache 2.4 for windows x64下 : 载,安装,设端口为4567,最后start。发现:在服务器本地访问http://localhost:4567/时,一切OK。但是如果用远程机器上的浏览器访问http://my.server.com:4567/时,浏览器会长时间显示空白页面,最后超时报错。一开始怀疑可能是路由器没有打开NAT映射的问题,于是打开4567端口映射,再试,问题照旧。于是采取更激进的措施:索性在路由器上开启DMZ,同时DMZ指向安装了Apache的那台机器的IP,问题依然照旧。再打开Apache的logs,发现凡是本地访问的信息都会在上面一条不落地记录地一清二楚,但是远程的访问信息一点痕迹也没有。于是考虑到是不是Windows Server 2008自带的防火墙的问题。后来证实果然是: 如果没有在管理面板中明确指明允许端口或进程,那么Windows 2008的防火墙就会自动默认禁止相关的链接。解决方案有几种:添加"allow port 4567"的rule;添加"allow httpd.exe"的rule;甚至关闭windows Server自带的防火墙。本人选择了第二种方案,即"allow httpd.exe"的rule。最后终于出现Apache那“It works!”的界面
|
E*****m 发帖数: 25615 | 36 那就別謙虛說沒學過。
還是搞 Django 吧! community 大些。
【在 c********l 的大作中提到】 : python不就是那么一些么? : 没有括号,缩进,for和if用冒号,没有类似java的for loop : tuples, lambda,外加一些字符的class...神马的 : 偶之前还在版上贴过python的程序呢 : http://www.mitbbs.com/article/Programming/31245807_0.html : 这些东西,在真神面前是小儿科,不过编编web应该够用了
|
p**o 发帖数: 3409 | 37 如果以前没有做过 web programming 和部署,而只是为了学 python,其实不用先折腾
apache 和 mod_wsgi。可以先用 web.py 或者 bottle 内置的那个用于调试的
webserver,把代码跑起来再说。 |
p**o 发帖数: 3409 | 38 与其道听途说、以讹传讹,为什么不自己读一读 bottle 源码?
总共就一个py文件,三千行代码,简单而精巧,是非常优秀的python学习资料。
是不是“浆糊作品”,你研读完后自有判断。
http://github.com/defnull/bottle/blob/master/bottle.py
【在 c********l 的大作中提到】 : 昨天本版不是还有人说bottle 其实是一个吊丝程序员的浆糊作品? : 那就只能上Django 了?
|
d********g 发帖数: 10550 | 39 辟谣的来了,“浆糊作品”属于LZ自行添加,正宗的以讹传讹
原文:
http://mitbbs.com/article1/Programming/31244113_3_0.html
【在 p**o 的大作中提到】 : 与其道听途说、以讹传讹,为什么不自己读一读 bottle 源码? : 总共就一个py文件,三千行代码,简单而精巧,是非常优秀的python学习资料。 : 是不是“浆糊作品”,你研读完后自有判断。 : http://github.com/defnull/bottle/blob/master/bottle.py
|
w****w 发帖数: 521 | 40 web.py自己就是个web server,自己用不需要另装Apache或lighttpd吧?我装在
pogoplug上用得蛮好。 |