尝鲜用了下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
系统默认的Python版本为2.7.5,够用了。
安装pip:
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
安装virtualenv:
pip install virtualenv
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
yum -y install mariadb-server mariadb
然后执行mysql_secure_installation
,按提示完成安全设置。
启动MariaDB、配置MariaDB开机启动:
systemctl start mariadb.service
systemctl enable mariadb.service
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管理页面。
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
1
awanabe 2014-11-06 12:45:03 +08:00
python web 配置在哪里? flask的好伙伴 uwsgi在哪里呢?
怎么变成配置php了? 这种分享有意义么? 教程一大把而且题目和内容又不搭.. |
2
humiaozuzu 2014-11-06 12:50:03 +08:00 1
部署可以用 supervisor + gunicorn
virtualenvwrapper 已经是标准配件了 Mac 下的 Sequel Pro 管理数据库很方便 |
3
hustlzp OP @awanabe
* 重点是在CentOS 7下为Python Web开发配置一些基础的东西好吗? * 你没看见pip、virtualenv、支持Pillow的图像库? * 你确定flask的好伙伴是uwsgi?而不是gunicorn? * 你看题目中有php吗?难道没看出来php是用来支持Adminer的? @humiaozuzu 恩恩,我部署都是用supervisor + gunicorn。 virtualenvwrapper还没有看过,找时间去看看。 Sequel Pro确实没有用过...最近一直用Adminer的Web界面来管理。谢谢推荐!去试试~ |
4
ericFork 2014-11-06 13:14:02 +08:00 1
@humiaozuzu 完全赞同...
|
5
no13bus 2014-11-06 14:35:03 +08:00
@ericFork
@hustlzp @humiaozuzu @awanabe 我想问你们开发的时候用python的构建工具吗?buildout。这东西跟virtualenv差不多,但是比他强大(网上说的)。有什么优点呢? |
6
hustlzp OP @no13bus 跑单元测试用的构建工具,我用的是更加成熟的Jenkins,然后用virtualenv创建虚拟环境。
http://docs.python-guide.org/en/latest/scenarios/ci/ 这里是一些推荐的CI工具。 |
8
hustlzp OP |
10
hustlzp OP |
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 |
12
awanabe 2014-11-06 16:42:00 +08:00
@hustlzp 题目不是python web环境么, 通篇没见你提过"开发"环境.. 难道还不是文不对题么, 这种题目拿出去不都是 配置线上运行环境么?
开发的话需要要用web方式访问db? 既然都在用命令行了..这个真是有点多此一举了... |
15
sivacohan 2014-11-06 18:49:29 +08:00 via Android 1
既然都写模板了。为啥不上salt,puppet。
最不济写个shell也成啊。 话说我自己电脑都用salt管了。基本告别手动apt,yum |
17
sivacohan 2014-11-06 20:11:24 +08:00 via Android
@hustlzp
我是先看的puppet。然后因为Ruby,以及这货配置文件的逻辑,类似变量作用域那有点绕就放弃了。 具体puppet的优势还没体会到。 salt用起来还挺方便的。我的主要用途是软件版本管理,还有配置文件管理。其他的东西基本没碰。 另外salt是Python写的。如果你对Python熟悉。我推荐salt。 |
19
chinsonliu 2014-11-07 15:59:17 +08:00 1
赞!
|