阿里云(腾讯云)+Centos7.3部署多个Flask项目(nginx+uwsgi)
近期做了一个代购管理平台,相似于微商后端管理系统,部署在了腾讯云上,后由于域名起因迁移到了阿里云。迁移过程部署的具体细节不记得了,导致又花了一点时间处理,于是乎特意在此总结下部署经验。
部署环境:Centos7.3、Python2.7、Nginx、Uwsgi、Mysql
1、基本环境配置
使用yum源安装如下资源(注意以下开头yum和pip区别):
yum install python //安装python2.7
yum install python-pip //安装pip
yum install nginx //安装nginx代理商服务器
centos7自带mariadb,仅需保证启动了就可:
systemctl enable mariadb //开机自动启动mariadb
//注:假如无效可以尝试以下安装
yum install mariadb-server
安装uwsgi服务器,同时需要安装如下三个库来支持:
pip install uwsgi //安装uwsgi服务器
yum install libxml2
yum install gcc
yum install python-devel
2、安装Flask应用依赖包
pip install flask
pip install flask-restful
……等等
因为我的应用中使用到了MySQLdb,于是乎我还需要以下安装:
yum install mysql-devel
pip install mysql-python
3、配置代理商服务器
3.1在你的根目录下创立一个uwsgiconfig.ini文件
我的项目采用的是nginx反向代理商多个二级域名,并将对应的网络请求转发给相应uwsgi,来达到一个云服务器通过多个二级域名来访问多个flask项目的效果。
nginx可以实现安全过滤,防DDOS等保护安全的操作,并且假如配置了多台服务器,nginx可以保证服务器的负载相对均衡。uwsgi是一个web服务器,实现了WSGI协议(Web Server Gateway Interface),http协议等,它可以接收和解决请求,发出响应等。
上传你的flask项目到云服务器上,并在项目根目录下创立一个uwsgiconfig.ini文件。
图例:

注:flask项目里启动host要使用0.0.0.0
重点来了,uwsgiconfig.ini中的内容应该如下,根据自己项目对照修改(删掉其中的注释):
[uwsgi]
socket = 127.0.0.1:8001 //uwsgi启动时的地址和端口
chdir = /root/YouZhiGou //项目根目录
module = run
wsgi-file = run.py //项目启动程序文件名
callable = app //python内用以启动的application名
processes = 4 //解决器个数
threads = 2 //线程个数
stats = 127.0.0.1:9193 //状态检测地址
3.2修改nginx的配置文件nginx.conf
到目录/etc/nginx下可以找到nginx.conf文件,里面内容比较乱,找到相应位置修改成如下内容:
server {
listen 80 default_server; //默认web访问端口
listen [::]:80 default_server;
server_name xxx.xxx.xxx.xxx; //公网地址
#root /usr/share/nginx/html;
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
access_log /root/YouZhiGou/logs/access.log; //服务器接收请求日志
error_log /root/YouZhiGou/logs/error.log; //错误日志,需在根目录下创立logs文件夹
location / {
include uwsgi_params; //导入uwsgi配置
uwsgi_pass 127.0.0.1:8001; //需要和uwsgi里的地址一致,才能转发到uwsgi上
uwsgi_param UWSGI_PYHOME /root/YouZhiGou/env; //指向虚拟环境目录
uwsgi_param UWSGI_CHDIR /root/YouZhiGou; //项目根目录
uwsgi_param UWSGI_SCRIPT run:app; //启动的主程序
proxy_set_header remote-user-ip $remote_addr; //无关,微信支付用的
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
当你的云服务器上需要再运行一个flask项目时,仅需根据以上步骤,在项目根目录下创立uwsgi配置文件,同时在nginx.conf中加入如下代码:
server {
listen 80; //第二个flask项目
server_name xxx.xxx.com; //反向代理商二级域名
#root /usr/share/nginx/html;
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
access_log /root/xxx/logs/access.log; //同上
error_log /root/xxx/logs/error.log;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8002; //配置不同端口
uwsgi_param UWSGI_PYHOME /root/xxx/env;
uwsgi_param UWSGI_CHDIR /root/xxx;
uwsgi_param UWSGI_SCRIPT run:app;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
至此,环境部署完毕
4、启动项目
nginx //开启nginx
uwsgi uwsgiconfig.ini //到项目根目录下执行
可以通过如下语句查看进程情况:
netstat -ntlp
杀死进程:
kill -QUIT (processid)
现在访问公网ip应该可以访问到你的flask应用了。
注:假如配置完后,出现如下问题
unavailable modifier requested:0
可以采用:
yum install uwsgi-plugin-python
同时在uwsgiconfig.ini文件中加入:
plugins=python
重启uwsgi就可
假如本有对你有帮助,记得点赞哦。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 阿里云(腾讯云)+Centos7.3部署多个Flask项目(nginx+uwsgi)