V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
hustlzp
V2EX  ›  Linux

[分享] CentOS 7 Python Web 环境配置

  •  
  •   hustlzp ·
    hustlzp · 2014-11-06 12:34:22 +08:00 · 10802 次点击
    这是一个创建于 3663 天前的主题,其中的信息可能已经有所发展或是发生改变。

    尝鲜用了下CentOS 7跑Flask应用。

    总体感觉除了systemd带来一些不习惯之外,其他都还行,包的版本也比6.5要新,比如Python默认就是2.7.5。BTW,CentOS 7安装MySQL时,默认安装的是MariaDB,不知道这个东西有什么坑…不过反正是跑一些自己的一些业余小项目,也无所谓了。

    下面是经验记录,使用Nginx作为反代,MariaDB作为数据库,用Adminer管理MariaDB,然后顺便安装了Supervisor:

    系统更新

    yum -y update
    

    安装常用包

    # 一些常用工具集,比如gcc
    yum groupinstall -y development
    # 安装Pillow所需要的图像库
    yum install -y  libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel
    yum install -y vim git python-devel mariadb-devel
    

    安装pip、virtualenv

    系统默认的Python版本为2.7.5,够用了。

    安装pip:

    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    

    安装virtualenv:

    pip install virtualenv
    

    安装Nginx

    vim /etc/yum.repos.d/nginx.repo,输入如下内容:

    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    

    然后yum install nginx即可。

    启动Nginx、配置Nginx开机启动:

    systemctl start nginx.service
    systemctl enable nginx.service
    

    安装MariaDB

    yum -y install mariadb-server mariadb
    

    然后执行mysql_secure_installation,按提示完成安全设置。

    启动MariaDB、配置MariaDB开机启动:

    systemctl start mariadb.service
    systemctl enable mariadb.service
    

    安装Adminer

    yum install php php-mysql php-fpm
    

    PHP版本为5.4.16。

    启动php-fpm、配置php-fpm开机启动:

    systemctl start php-fpm.service
    systemctl enable php-fpm.service
    

    在Nginx中配置php-fpm,编辑/etc/nginx/conf.d/default.conf,加入:

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
    }
    

    systemctl restart nginx.service重启nginx。

    安装Adminer:

    cd /usr/share/nginx/html
    wget http://www.adminer.org/latest.php
    

    访问http://your_IP/latest.php即可进入Adminer管理页面。

    安装Supervisor

    pip install supervisor
    echo_supervisord_conf > /etc/supervisord.conf
    sudo mkdir /etc/supervisord.d/
    

    vim /etc/supervisord.conf,在其中加入如下:

    [include]
    files = /etc/supervisord.d/*.conf
    

    此处的/etc/supervisord.d/用于存放各种program的supervisord启动脚本(后缀为conf)。

    然后添加Supervisor的service控制命令:

    vim /usr/lib/systemd/system/supervisord.service,并输入:

    [Unit]
    Description=Supervisord
    
    [Service]
    Type=forking
    PIDFile=/tmp/supervisord.pid
    ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
    ExecStop=/bin/kill -TERM $MAINPID
    ExecReload=/bin/kill -HUP $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    

    启动Supervisord、配置Supervisord开机启动:

    systemctl start supervisord.service
    systemctl enable supervisord.service
    

    参考

    19 条回复    2014-11-07 15:59:17 +08:00
    awanabe
        1
    awanabe  
       2014-11-06 12:45:03 +08:00
    python web 配置在哪里? flask的好伙伴 uwsgi在哪里呢?
    怎么变成配置php了?
    这种分享有意义么?
    教程一大把而且题目和内容又不搭..
    humiaozuzu
        2
    humiaozuzu  
       2014-11-06 12:50:03 +08:00   ❤️ 1
    部署可以用 supervisor + gunicorn
    virtualenvwrapper 已经是标准配件了
    Mac 下的 Sequel Pro 管理数据库很方便
    hustlzp
        3
    hustlzp  
    OP
       2014-11-06 13:13:36 +08:00
    @awanabe

    * 重点是在CentOS 7下为Python Web开发配置一些基础的东西好吗?
    * 你没看见pip、virtualenv、支持Pillow的图像库?
    * 你确定flask的好伙伴是uwsgi?而不是gunicorn?
    * 你看题目中有php吗?难道没看出来php是用来支持Adminer的?

    @humiaozuzu

    恩恩,我部署都是用supervisor + gunicorn。
    virtualenvwrapper还没有看过,找时间去看看。
    Sequel Pro确实没有用过...最近一直用Adminer的Web界面来管理。谢谢推荐!去试试~
    ericFork
        4
    ericFork  
       2014-11-06 13:14:02 +08:00   ❤️ 1
    @humiaozuzu 完全赞同...
    no13bus
        5
    no13bus  
       2014-11-06 14:35:03 +08:00
    @ericFork
    @hustlzp
    @humiaozuzu
    @awanabe
    我想问你们开发的时候用python的构建工具吗?buildout。这东西跟virtualenv差不多,但是比他强大(网上说的)。有什么优点呢?
    hustlzp
        6
    hustlzp  
    OP
       2014-11-06 14:43:03 +08:00
    @no13bus 跑单元测试用的构建工具,我用的是更加成熟的Jenkins,然后用virtualenv创建虚拟环境。

    http://docs.python-guide.org/en/latest/scenarios/ci/

    这里是一些推荐的CI工具。
    eriale
        7
    eriale  
       2014-11-06 14:47:16 +08:00
    @hustlzp 倒是想找个jenkins在flask中的使用实践文章。
    hustlzp
        8
    hustlzp  
    OP
       2014-11-06 14:49:57 +08:00
    之前写的一篇博文:

    http://hustlzp.com/post/2014/08/jenkins

    仅供参考啊。
    hustlzp
        9
    hustlzp  
    OP
       2014-11-06 14:50:13 +08:00
    @eriale 以上。
    hustlzp
        10
    hustlzp  
    OP
       2014-11-06 14:53:00 +08:00   ❤️ 2
    @eriale

    以前也做过一个相关的PPT,一并分享:

    http://hustlzp.github.io/jenkins-presentation
    ericFork
        11
    ericFork  
       2014-11-06 15:31:37 +08:00
    @no13bus

    我没有尝试过,不过知乎团队在用 http://www.zhihu.com/question/19638115

    这里有个更为详细的答案:

    http://www.zhihu.com/question/21639330/answer/21889237
    awanabe
        12
    awanabe  
       2014-11-06 16:42:00 +08:00
    @hustlzp 题目不是python web环境么, 通篇没见你提过"开发"环境.. 难道还不是文不对题么, 这种题目拿出去不都是 配置线上运行环境么?
    开发的话需要要用web方式访问db? 既然都在用命令行了..这个真是有点多此一举了...
    hustlzp
        13
    hustlzp  
    OP
       2014-11-06 16:48:47 +08:00
    @awanabe 恩,确实文不对题。
    eriale
        14
    eriale  
       2014-11-06 17:22:52 +08:00   ❤️ 1
    @hustlzp 写的真不错,多谢多谢!
    sivacohan
        15
    sivacohan  
       2014-11-06 18:49:29 +08:00 via Android   ❤️ 1
    既然都写模板了。为啥不上salt,puppet。
    最不济写个shell也成啊。
    话说我自己电脑都用salt管了。基本告别手动apt,yum
    hustlzp
        16
    hustlzp  
    OP
       2014-11-06 18:58:38 +08:00
    @sivacohan 没有用过salt、puppet,请问哪一个好用一些?
    sivacohan
        17
    sivacohan  
       2014-11-06 20:11:24 +08:00 via Android
    @hustlzp
    我是先看的puppet。然后因为Ruby,以及这货配置文件的逻辑,类似变量作用域那有点绕就放弃了。
    具体puppet的优势还没体会到。

    salt用起来还挺方便的。我的主要用途是软件版本管理,还有配置文件管理。其他的东西基本没碰。
    另外salt是Python写的。如果你对Python熟悉。我推荐salt。
    hustlzp
        18
    hustlzp  
    OP
       2014-11-06 21:21:13 +08:00
    @sivacohan 恩,谢谢推荐,试试salt。
    chinsonliu
        19
    chinsonliu  
       2014-11-07 15:59:17 +08:00   ❤️ 1
    赞!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   987 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:45 · PVG 06:45 · LAX 14:45 · JFK 17:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.