V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
m_z
V2EX  ›  Python

搭建Apache+python环境

  •  
  •   m_z · 2012-06-23 21:26:27 +08:00 · 7009 次点击
    这是一个创建于 4536 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家好,最近学习python,看了些基础知识,现在想搭建个web开发环境,httpd-2.4.2已经编译成功,python是通过yum安装的,版本是2.7.3。

    看网上的测试示例,需要加载mod_python.so,我在安装mod_python的时候,configure已经通过了,make不能通过,信息如下:
    make[1]: 进入目录“/home/mz/SoftWare/mod_python-3.3.1/src”

    Compiling for DSO.

    /home/mz/SoftWare/http_server/bin/apxs -I/home/mz/SoftWare/mod_python-3.3.1/src/include -I/home/mz/SoftWare/http_server/include -I/usr/include/python2.7 -c mod_python.c _apachemodule.c requestobject.c tableobject.c util.c serverobject.c connobject.c filterobject.c hlist.c hlistobject.c finfoobject.c -L/usr/lib64/python2.7/config -Xlinker -export-dynamic -lm -lpython2.7 -lpthread -ldl -lutil -lm
    /home/mz/SoftWare/http_server/build/libtool --silent --mode=compile gcc -std=gnu99 -prefer-pic -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/home/mz/SoftWare/http_server/include -I/home/mz/SoftWare/http_server/include -I/home/mz/SoftWare/http_server/include -I/home/mz/SoftWare/mod_python-3.3.1/src/include -I/home/mz/SoftWare/http_server/include -I/usr/include/python2.7 -c -o mod_python.lo mod_python.c && touch mod_python.slo
    In file included from /usr/include/python2.7/pyconfig.h:6:0,
    from /usr/include/python2.7/Python.h:8,
    from /home/mz/SoftWare/mod_python-3.3.1/src/include/mod_python.h:80,
    from mod_python.c:28:
    /usr/include/python2.7/pyconfig-64.h:1170:0: warning: "_POSIX_C_SOURCE" redefined [enabled by default]
    /usr/include/features.h:164:0: note: this is the location of the previous definition
    /usr/include/python2.7/pyconfig-64.h:1192:0: warning: "_XOPEN_SOURCE" redefined [enabled by default]
    /usr/include/features.h:166:0: note: this is the location of the previous definition
    mod_python.c: In function 'init_mutexes':
    mod_python.c:564:30: error: 'unixd_config' undeclared (first use in this function)
    mod_python.c:564:30: note: each undeclared identifier is reported only once for each function it appears in
    mod_python.c:565:17: warning: implicit declaration of function 'unixd_set_global_mutex_perms' [-Wimplicit-function-declaration]
    mod_python.c: In function 'python_init':
    mod_python.c:826:5: warning: initialization from incompatible pointer type [enabled by default]
    apxs:Error: Command failed with rc=65536
    .
    make[1]: *** [mod_python.so] 错误 1
    make[1]: 离开目录“/home/mz/SoftWare/mod_python-3.3.1/src”
    make: *** [do_dso] 错误 2

    我google了“apxs:Error: Command failed with rc=65536”这个,但是没有找到解决方法。我不知道该怎么弄了,希望高手不吝赐教,谢谢
    24 条回复    1970-01-01 08:00:00 +08:00
    m_z
        1
    m_z  
    OP
       2012-06-23 21:48:14 +08:00   ❤️ 1
    请问@Livid这里有回复的话,不刷新能看到吗?
    我问的问题大家怎么都不回复??哪怕提供一个解决思路也好哇。。
    SErHo
        2
    SErHo  
       2012-06-23 22:12:29 +08:00
    @m_z 好吧,其实我刚学的时候,也是先用 Apache,不过就是没折腾成功过,后来就用 uwsgi+Nginx 了。如果你的 Web 应用是支持 WSGI 的,或许可以试试其它的。
    m_z
        3
    m_z  
    OP
       2012-06-23 22:13:44 +08:00
    非常感谢,我朝这边努力下
    cloudzhou
        4
    cloudzhou  
       2012-06-23 22:16:43 +08:00
    @m_z yum search python-libs python-libs-dev 是否安装
    m_z
        5
    m_z  
    OP
       2012-06-23 22:23:05 +08:00
    @cloudzhou
    [root@mz mod_python-3.3.1]# rpm -qa | grep python-libs
    python-libs-2.7.3-3.fc16.x86_64

    [root@mz mod_python-3.3.1]# yum search python-libs
    已加载插件:langpacks, presto, refresh-packagekit
    ============================ N/S 匹配:python-libs =============================
    python-libs.i686 : Runtime libraries for Python
    python-libs.x86_64 : Runtime libraries for Python

    名称和简介匹配 only,使用“search all”试试。
    SErHo
        6
    SErHo  
       2012-06-23 22:27:26 +08:00
    @m_z Google 一下 `mod_python Command failed with rc=65536`试试。
    cloudzhou
        7
    cloudzhou  
       2012-06-23 22:29:25 +08:00
    @m_z 因为我对yum包不熟悉,如果是ubuntu:
    > apt-cache search python-dev
    python-dev - header files and a static library for Python (default)

    如果你现在已经是linux环境了,没有历史包袱,使用nginx+uwsgi吧,apache是上个世纪的产物了。
    m_z
        8
    m_z  
    OP
       2012-06-23 22:33:16 +08:00
    @SErHo 谢谢

    @cloudzhou 好的,我要跟上潮流,谢谢了
    m_z
        9
    m_z  
    OP
       2012-06-24 18:46:09 +08:00
    @cloudzhou 我在使用nginx,配置了一个自己的server,但是报 “403 Forbidden”,应该不是访问权限的问题阿。
    location / {
    root /home/mz/python/project/html;
    index index.html;
    }
    这是把示例的html页面cp过来的,还是不行。默认的那个就可以。
    help me..
    cloudzhou
        10
    cloudzhou  
       2012-06-24 19:55:28 +08:00   ❤️ 1
    > ps axu|grep nginx 查看这个worker process的属主
    > ls -ld /home/mz/python/project/html 的权限属主
    m_z
        11
    m_z  
    OP
       2012-06-24 21:31:57 +08:00
    @cloudzhou
    ps -aux | grep nginx
    nginx 3186 0.0 0.0 98856 2504 ? S 21:27 0:00 nginx: worker process

    ls -dl /home/mz/python/project/html/
    drwxrwxrwx. 2 nginx mz 4096 6月 24 18:25 /home/mz/python/project/html/

    好像安装什么的过程中,有过add user的操作。怎么能把nginx的worker process改为mz?
    cloudzhou
        12
    cloudzhou  
       2012-06-24 21:35:09 +08:00
    @m_z 你现在的属主是对的阿,还是你chown了,如果要改成一样的,修改
    > grep use /where/is/your/nginx.conf
    user mz mz;
    m_z
        13
    m_z  
    OP
       2012-06-24 21:36:09 +08:00
    @cloudzhou 非常感谢!我修改了nginx.conf文件的user,然后ok拉!好高兴~~接下来看看怎么让py文件输出到浏览器。再次感谢。
    cloudzhou
        14
    cloudzhou  
       2012-06-24 21:45:37 +08:00
    如果你是用django框架的,我这里有配置文件,如果有其他框架,按照配置来。
    总之,一步步入门开源框架的步骤是:
    1 官方文档,不要害怕英文,一步步按照实现,比如django,非常的完善了。
    2 google
    cloudzhou
        15
    cloudzhou  
       2012-06-24 21:46:49 +08:00
    @m_z 选择一个入手简单,文档丰富对入门很有帮助的,不要立刻找小众的技术
    m_z
        16
    m_z  
    OP
       2012-06-24 21:50:25 +08:00
    @cloudzhou 之前听过一个讲座,说用flask,所以我想试试这个。不过最近在网上看到的好多django。我不知道区别,不过有点想用flask,感觉名字好念,哈哈。
    013231
        17
    013231  
       2012-06-24 21:54:23 +08:00
    @m_z flask吧. django太重了, 我是不喜歡.
    cloudzhou
        18
    cloudzhou  
       2012-06-24 21:55:52 +08:00
    @m_z 那你不论如何要看这里 http://flask.pocoo.org/docs
    关于发布选择,http://flask.pocoo.org/docs/deploying/
    如果只是开发方便,可以选择 http://flask.pocoo.org/docs/quickstart/#quickstart-deployment,注册一个 Heroku 帐号就可以使用 flask 了
    一步步按照这个
    m_z
        19
    m_z  
    OP
       2012-06-24 22:00:23 +08:00
    @cloudzhou
    $ python hello.py
    * Running on http://127.0.0.1:5000/
    这个,和我/etc/init.d/nginx start启动的服务,有啥关系吗?

    那个注册,是什么用?我现在好像已经可以用flask了
    cloudzhou
        20
    cloudzhou  
       2012-06-24 22:04:09 +08:00
    Heroku是一个类似gae的云端开发,可以发布应用,当然我觉得还是没有本地爽。
    你刚才说得 http://127.0.0.1:5000/ 应该和 nginx 没有什么关系。
    nginx 是这样的,你定义url作为静态服务,比如/static/,访问的是静态文件
    其他目录可以通过 nginx 的 proxy 代理,或者 uwsgi,cgi 协议访问到你刚才的 http://127.0.0.1:5000/,通过这样nginx,python分别服务于静态和动态数据
    m_z
        21
    m_z  
    OP
       2012-06-24 22:09:07 +08:00
    你说的这些对我以后应该很有用的,谢谢。我现在还是打算先在本地做个东西出来。

    我本来是搞java的,最近接触了python,感觉动态性很好,并且对常用的API(比如jdbc,我简单看了些例子)支持的很好,所以想自己搞搞这个,希望能做这个的项目。

    谢啦~
    013231
        22
    013231  
       2012-06-24 22:15:55 +08:00
    @m_z 沒關係.
    app.run()啓動了一個內嵌的開發服務器.
    http://flask.pocoo.org/docs/api/#flask.Flask.run
    lqs
        23
    lqs  
       2012-06-24 22:31:03 +08:00
    @SErHo 应该要搜 "'unixd_config' undeclared"
    m_z
        24
    m_z  
    OP
       2012-06-24 22:36:42 +08:00
    @lqs 已经不用那个了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2984 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:04 · PVG 21:04 · LAX 05:04 · JFK 08:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.