第一步:准备CentOS7服务器
此次部署我采用的是部署到本机的虚拟机环境中,所以先在VM上安装CentOS7。为了避免每次启动虚拟机服务器IP地址就发生改变,所以先配置静态IP,首先在VM workstation的菜单栏上找到虚拟网卡配置菜单,然后将adapter8的dhcp去掉,然后查看gateway(中文名网关)。在centos中主要涉及一个文件的配置,在/etc/sysconfig/network_config/(网卡编号,类似cfg_eth0的文件),然后编辑5个地方:
1.BOOTPROTO=static 静态IP
2.ONBOOT=yes 随计算机启动
3.NETMASK=255.255.255.0 子网掩码
4.GATEWAY=192.168.3.2 网关,和之前在VM中查看的gateway相同
4.IPADDR=192.168.3.7 需要和网关在同一个网段内
5.DNS1=192.168.3.2 DNS和网关相同
最后输入命令service restart network重启网络。
第二步:安装Python
因为CentOS7自带了python2.7.5,所以这里我就不再重新安装Python,如果需要安装python可以找其他资料,安装其他版本的python时要使用make && make altinstall避免覆盖之前版本的python导致系统中其他使用到默认版本python的程序无法运行。然后再安装pip,我采用源码安装,首先去pip官网下载pip的压缩包,然后解压后,进入解压后的目录,输入python setup.py install来安装pip,如果提示缺少setuptools模块,则先安装setuptools模块,可以使用yum安装,执行yum install setuptools安装,也可以使用其他安装方式,安装好setuptools后再安装pip,pip安装好后,进入项目文件夹,因为我的项目在之前已经通过pip freeze >requirements.txt生成了需求文件,所以当迁移到其他环境时可以直接使用pip install -r requirements.txt来安装项目需要的模块。到此python的环境就安装完成了,可以在python下启动项目,看python环境是否配置成功。
如果服务器中可能会存在多个不同python环境的项目,可以使用virtualenv创建独立的python环境,可以通过pip安装,安装好后可以在项目文件夹下执行virtualenv venv创建虚拟环境,可以加上-no-site-packages参数不拷贝真实python环境中的site-packages到新的虚拟环境中以创建一个干净的Python环境。
第三步:安装nginx和uwsgi
先去nginx官网下载源码,然后执行./configure && make && make install来安装,nginx会被自动添加的/usr/bin/nginx执行环境下,可以直接执行nginx命令,通过nginx -c conf/nginx.conf(nginx的配置文件)来启动nginx,启动成功后可以通过访问127.0.0.1来验证nginx是否启动成功,nginx的默认端口是80,可以通过nginx安装目录下的conf目录下nginx.conf来配置。
然后再安装uwsgi,同样采用源码的方式安装,安装好后需要通过配置nginx来把所有请求传给uwsgi处理。
配置nginx的很简单,编辑nginx.conf文件,找到server节点下的localtion,localtion / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:3031;
root html;
index index.html index.htm
}
然后通过ps -ef | grep nginx找到nginx的线程master线程编号,然后通过kill -HUP nginx线程编号重启nginx,这个时候再访问127.0.0.1就会出错。
接下来配置uwsgi,在项目文件夹下创建app_config.ini配置文件,文件名可以自定义,内容为:
[uwsgi]
socket=127.0.0.1:8099
chdir=/var/www/my-website/ #项目路径
wsgi-file=manage.py #项目的启动的主文件,也就是app = Flask(__name__)的创建文件,这里需要灵活一点
callable=app #这个就是app = Flask(__name__)中的app对象名称
processes=4 #配置启动多少个进程来处理请求
配置好后通过uwsgi app_config.ini来启动uwsgi,这里的app_config.ini需要绝对或相对路径
配置好后再访问127.0.0.1就能够访问项目中路由地址"/"的路由函数。
到此python项目就部署成功,有什么问题后面再补充,本文是完全盲写,有些命令或配置名称可以输入有错,如果出错可以自行查阅。
本文出自 “技术不宅” 博客,请务必保留此出处http://chrischen.blog.51cto.com/9954795/1763802
Python-在CentOS7上使用nginx+uwsgi部署Flask框架开发的Web项目
原文地址:http://chrischen.blog.51cto.com/9954795/1763802