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
likai
V2EX  ›  Python

VPS配置python web环境真吐血

  •  
  •   likai · 2013-07-26 21:44:54 +08:00 · 11969 次点击
    这是一个创建于 3919 天前的主题,其中的信息可能已经有所发展或是发生改变。
    新手想搭建一个nginx+uwsgi+mysql+flask的环境。
    在GOOGLE的帮助下一个下午还没成功跑起来。
    有没有什么一键安装的SHELL之类的?
    环境CENTOS
    50 条回复    2016-07-24 00:49:02 +08:00
    skyworker
        1
    skyworker  
       2013-07-26 22:12:03 +08:00 via Android   ❤️ 1
    Centos的yum体系是绑定Python版本,用Python的web项目,最好用Debian
    likai
        2
    likai  
    OP
       2013-07-26 22:33:23 +08:00
    @skyworker

    Debian?
    为啥啊?求解惑。

    只是因为YUM么?
    ipconfiger
        3
    ipconfiger  
       2013-07-26 22:34:27 +08:00
    稍微熟悉点linux貌似不是啥难事,centos唯一麻烦一点是替换python版本,还有yum库版本都太旧
    不想折腾ubuntu server也不错啊
    jezal
        4
    jezal  
       2013-07-26 22:34:54 +08:00
    这不奇怪,本来 Python Web 部署比较麻烦,特别是咱们这样的新手。不过还好,由于 VPS 磁盘损毁我今天又部署了下 nginx uuwsgi mysql django 环境,每一个部分都有很多暗坑。请楼主不要着急,一一击破。有问题请贴出来,我能回答的尽量回答。
    likai
        5
    likai  
    OP
       2013-07-26 22:43:44 +08:00
    @jezal 先谢你了,有问题一定@你

    下了个军哥lnmp.然后准备更改他的脚本把不需要的PHP相关的去掉,
    系统换成@skyworker说的Debian。
    ericFork
        6
    ericFork  
       2013-07-26 22:53:10 +08:00
    ubuntu 12.04, nginx, gunicorn, mysql, flask
    adow
        7
    adow  
       2013-07-26 22:55:16 +08:00
    我一直都是全程yum的,同事们都很鄙视我
    octopus_new
        8
    octopus_new  
       2013-07-26 23:05:23 +08:00
    CentOS怎么了....., 个人认为也没什么, python版本就替换一下而已嘛, 不用YUM也活得挺好的啊. Debian也ok, 这完全是看团队或者个人习惯而已。有的人就Debian系, 有的人就Redhat系, 萝卜青菜嘛.....
    julyclyde
        9
    julyclyde  
       2013-07-26 23:06:33 +08:00 via iPad
    centos5里yum依赖python包是2.4的
    装epel的python26包即可
    tangyuan
        10
    tangyuan  
       2013-07-26 23:36:52 +08:00
    所以我喜欢用bottle + sqlite,当然我的应用非常小...
    xdata
        12
    xdata  
       2013-07-26 23:47:07 +08:00
    服务器系统一直在用CentOS.
    CentOS下的Python什么时候成为问题了?
    不想自己编译, 自己配置, Python环境, 请直接使用各种方便的Python环境管理工具来管理.
    imcj
        13
    imcj  
       2013-07-26 23:47:53 +08:00
    如果习惯Vagrant做开发or测试环境的话,你因该有一个自动部署脚本,部署还是问题?
    paicha
        14
    paicha  
       2013-07-27 00:06:18 +08:00 via Android
    静等楼主配置手记。
    clowwindy
        15
    clowwindy  
       2013-07-27 00:40:04 +08:00   ❤️ 1
    fucker
        16
    fucker  
       2013-07-27 02:01:02 +08:00
    我的环境是ubuntu + apache + wsgi + webpy(bottle) + mysql (sqlite,postgesql)
    这种东西配置起来大同小异吧,看见上面说的,yum并不影响啥。撸主你说的一键安装shell没见过。
    我配置的时候是apache,mysql 各自分别安装,wsgi也是apt-get来的。webpy,mako,MySQLdb啥的都是easy_install ,主要环节是apache或者你的nginx,配置httpd.conf文件,注意做好alias,模块加载,项目路径就行了。
    SR1
        17
    SR1  
       2013-07-27 03:00:19 +08:00
    身为一个Linux入门小白,我已经折腾好几个晚上了,还没搭好环境。

    目标是LinuxMint + Apache + Python + MySQL + Mod_Python

    现在卡在Mod_Python编译上,make的时候一直提示缺少头文件,比如apr.h,比如Python.h
    可是apr.h已经通过软连接将他们所在的文件夹连接到/usr/include/ 里了,还是提示找不到,
    没搞懂gcc查找头文件的机制,只能把每个文件都连接到/usr/include/ 里。
    而Python.h这个头文件完全没找到,重装了Python-dev也没用,真心给跪了。

    过路的大神顺路搭救下我,谢谢
    swulling
        18
    swulling  
       2013-07-27 03:39:10 +08:00   ❤️ 1
    @SR1 mint就是ubuntu啊,直接apt-get就完了。。。

    apt-get install libapache2-mod-python

    编译有意思么<_<
    swulling
        19
    swulling  
       2013-07-27 03:43:17 +08:00   ❤️ 2
    likai
        20
    likai  
    OP
       2013-07-27 05:00:09 +08:00 via Android
    @SR1
    python.h是不是在python/includ里面那个?
    fucker
        21
    fucker  
       2013-07-27 05:20:34 +08:00
    @SR1 mod_python 真心不好用。。。
    fucker
        22
    fucker  
       2013-07-27 05:21:15 +08:00
    @swulling 咦,西南大学的同志?
    vibbow
        23
    vibbow  
       2013-07-27 05:25:14 +08:00   ❤️ 1
    linux 耗费了多少程序员的光阴:装完一个程序包、发现需要再装一个程序包、发现需要再装一个程序包、最后都不知道往电脑里装了多少程序包、最后再费点时间写个控诉+炫耀的安装攻略
    cctvsmg
        24
    cctvsmg  
       2013-07-27 05:48:35 +08:00
    @vibbow 精辟
    paloalto
        25
    paloalto  
       2013-07-27 08:17:03 +08:00
    之前写过一个LNMP(Nginx、MySQL、PHP、phpMyAdmin) + Python + web.py的。

    http://www.douban.com/note/233957765/
    SR1
        26
    SR1  
       2013-07-27 08:19:10 +08:00
    @swulling 大谢啊!!!

    之前看的Django Web 开发指南,上面写着需要装Apache,于是 apt-get 了一个,然后说要装mod_python,所以再祭出 apt-get ,发现没找到,Google 之… 然后就看到了mod_python 的文档 + 一些其他博客资料,说使用mod_python 需要自行编译,用apt-get 方式得到的Apache 缺少什么什么源码,如果是自行编译的话就包含所需的,于是又把Apache卸了,恶补了编译知识,开始了编译的不归路,落泪。

    apr , apr-util , httpd , mod_python 一路下来,就当成长了。

    (期间默默吐槽了无数遍Linux下的环境搭建的不人性化,@#$%^&@#$%^&
    SR1
        27
    SR1  
       2013-07-27 08:27:27 +08:00
    @likai 后来把Python.h找到了,然后在make 的时候又出现一堆问题,不是warning就是error,表示完全看不懂了

    In file included from /usr/include/python2.7/Python.h:8:0,
    from /home/sr1/下载/mod_python-2.7.8/src/include/mod_python.h:77,
    from mod_python.c:54:
    /usr/include/python2.7/pyconfig.h:1161:0: warning: "_POSIX_C_SOURCE" redefined [enabled by default]
    /usr/include/features.h:215:0: note: this is the location of the previous definition
    In file included from mod_python.c:54:0:
    /home/sr1/下载/mod_python-2.7.8/src/include/mod_python.h:93:1: error: unknown type name ‘pool’
    /home/sr1/下载/mod_python-2.7.8/src/include/mod_python.h:96:33: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘python_module’
    In file included from /home/sr1/下载/mod_python-2.7.8/src/include/mod_python.h:99:0,
    from mod_python.c:54:
    /home/sr1/下载/mod_python-2.7.8/src/include/util.h:57:1: error: unknown type name ‘array_header’
    In file included from /home/sr1/下载/mod_python-2.7.8/src/include/mod_python.h:100:0,
    from mod_python.c:54:
    /home/sr1/下载/mod_python-2.7.8/src/include/tableobject.h:69:2: error: unknown type name ‘table’
    /home/sr1/下载/mod_python-2.7.8/src/include/tableobject.h:70:2: error: unknown type name ‘pool’
    /home/sr1/下载/mod_python-2.7.8/src/include/tableobject.h:77:52: error: unknown type name ‘table’
    ………………………………
    ………………………………
    ………………………………
    ………省略一堆…………
    ………………………………
    ………………………………
    ………………………………
    kk71
        28
    kk71  
       2013-07-27 08:34:07 +08:00
    我都自己编译的呢。
    有的vps自带精简优化的ubuntu server版本,那就好办事了。
    raptor
        29
    raptor  
       2013-07-27 12:31:18 +08:00
    centos里的python版本太老,不方便。
    当然一定要用的话也不是不可以。
    源码编译一下,然后用virtualenv -p用这个高版本的python弄一个单独的环境。
    nginx配置反向代理很简单的,uwsgi不好弄,建议换gunicorn,非常简单。
    不要考虑什么一键安装之类的东西,后遗症很多,还是自己把要用的各个东西搞懂为好。
    raptor
        30
    raptor  
       2013-07-27 12:35:04 +08:00
    gunicorn+nginx/apache的配置可以参考我以前为web.py写的一个文档:https://github.com/raptorz/webpy.github.com/blob/master/cookbook/gunicorn-apache-nginx.zh-cn.md
    pianai
        31
    pianai  
       2013-07-27 12:46:05 +08:00
    教程 apache2+mod-wsgi+django环境配置 不过ubuntu 系统下的
    http://www.pianai.net/?p=11
    iCodex
        32
    iCodex  
       2013-07-27 13:08:14 +08:00
    @ericFork 我也是用 gunicorn 这样nginx直接反代过去就好了
    另外 centos也不是不可以,只是编译python时最后一步用make altinstall,这样就不会和系统自带的冲突,自己的程序再改改python路径就好。
    ericFork
        33
    ericFork  
       2013-07-27 14:12:21 +08:00
    @iCodex 是啊,gunicorn 多方便

    大多教程都是 uWSGI,mod_python, mod_wsgi,简直太费力,浪费多少非 SA 的程序员的光阴
    swulling
        34
    swulling  
       2013-07-29 13:19:34 +08:00
    @fucker 不是
    @SR1 现在大家都用gunicorn这种高级工具啦

    对Linux小白提一个真心的建议,永远避免任何形式的自己编译。。。只用现成的包管理,不会出问题的
    rrfeng
        35
    rrfeng  
       2013-07-29 13:46:29 +08:00
    @swulling
    那也只能永远留在小白阶段了……
    liuhang0077
        36
    liuhang0077  
       2013-07-29 13:49:10 +08:00
    @rrfeng 让小白编译 对小白简直是莫大的折磨。。 我一想推荐rpm 如果是专门学linux的就另当别论了
    swulling
        37
    swulling  
       2013-07-29 17:29:17 +08:00
    @rrfeng 先让服务跑起来,其实就算是资深SA又如何,放着包管理不去用的人去编译,简直吃饱了撑的。。

    如果想调整编译参数,也要最好选择Arch的ABS那种方便管理的系统!

    另外如果你管理1k台机器,你无论如何都得选择某种二进制包,总不能让每台机器自己呼呼的编译吧。。哪怕是make后tar下,都比呼呼编译强,当然这就是自己又发明了下包管理而已
    stackpop
        38
    stackpop  
       2013-07-29 19:28:48 +08:00
    我一直想开发一个一键部署的集成工具,哈哈,可惜执行力不够
    0bit
        39
    0bit  
       2013-07-29 21:23:23 +08:00   ❤️ 1
    要涉及到多个版本的Python的话,就用pythonbrew或者新推荐的pyenv
    如果不涉及到多个Python版本,只是多个项目的话,推荐virtualenv以及virtualenvwrapper。
    不管怎么样,安装的时候,一律用pip install。
    对新手来说,不太复杂吧。
    另外,也真心喜欢gunicorn,纯python的,比uwsgi什么的要友好得多。
    不嫌麻烦的话,也可以再装一个supervisor来管理进程。
    manoon
        40
    manoon  
       2013-07-29 22:29:13 +08:00
    所以,我配置完了。。。。松一口气。然后,一直都不敢乱动那几台VPS。重新配置,又得重新学习一遍。累得要死!!!
    janxin
        41
    janxin  
       2013-07-29 23:10:32 +08:00 via iPad
    linode的文档非常值得参考,即使非linode机器也可以用
    lw9956164
        42
    lw9956164  
       2013-07-29 23:31:33 +08:00
    搭建过 ubuntu gunicorn+flask表示毫无压力
    mengzhuo
        43
    mengzhuo  
       2013-07-30 09:01:35 +08:00
    virtualenv+pip用来架设Python webserver表示没有半点压力
    pythoner
        44
    pythoner  
       2013-07-30 12:59:43 +08:00
    编译安装python2.7,替换系统默认python版本
    但是由于yum 默认要用python2.4,所以要修改yum的配置文件,指定py2.4
    除了这一点需要注意意外,其它的包安装起来基本不会有什么问题。
    mengzhuo
        45
    mengzhuo  
       2013-07-30 13:14:59 +08:00
    @SR1 等你用上自动化部署的时候就知道Linux的脚本化安装远比Windows的安装程序包来的舒服
    hartnett
        46
    hartnett  
       2013-07-30 14:04:07 +08:00
    tornado + mysql + nginx + supervisor,几句apt-get就搞定了。
    no13bus
        47
    no13bus  
       2014-11-02 09:39:20 +08:00
    @mengzhuo 你说的是利用buildout和fabric吗?将同样的程序批量部署在多台服务器上面?
    mengzhuo
        48
    mengzhuo  
       2014-11-02 11:33:28 +08:00 via iPad
    @no13bus 只用fabric 和少量Shell脚本就搞定了
    tjxiter
        49
    tjxiter  
       2015-09-16 14:10:57 +08:00
    @tangyuan 博客用 sqlite3 够吗?
    gladuo
        50
    gladuo  
       2016-07-24 00:49:02 +08:00
    docker 吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1077 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:59 · PVG 02:59 · LAX 11:59 · JFK 14:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.