flask项目部署到阿里云ubuntu服务器 uwsgi+nginx
Web服务器都会使用一种叫做Web服务网关接口(Web Server Gateway Interface, WSGI)的协议,这是一种标准化的设计,它让Python应用跟Web服务器能够轻松地通信。在用flask开发web项目的时候,程序员一般使用的是flask提供的测试环境,即development环境;而像java EE等并没有提供一个测试服务器,因此需要在一开始时就需要tomcat等服务器。
而flask在真正部署的时候,最好不要使用flask提供的测试环境,而是使用uWSGI来代替测试环境。
uWSGI是一个支持包括WSGI在内的多种不同接口的Web服务器。uWSGI可以作为应用的服务器使用,也可以处理在不同进程和线程之间进行负载均衡之类的任务。
1.登陆到远程服务器
首先,需要登陆到远程服务器。
这里推荐使用ssh,ssh的端口是22;如果ssh失败,则可能是这个端口未开启。这里使用的ssh是linux带的命令,若对此不熟悉可以使用xshell。
[code]ssh root@IP地址
root表示以root用户登陆,IP地址改为阿里云所提供的公网IP地址,然后就会让你输入云服务器的root用户密码,若登陆成功则输出:
注意:此时是以root登陆的,操作请小心谨慎。
2.安装Nginx
其次,需要安装nginx。
对于ubuntu来说,安装软件倒显得简单得多了:
[code]sudo apt install nginx
Nginx在安装成功后会默认开启服务器,此时稍微修改/etc/nginx/sites-available/default文件就可以访问Nginx所提供的网页了。
初始的server_name的值为 下划线_,把它的值改为阿里云公网的IP地址即可。
接着就可以在浏览器输入IP地址来测试Nginx所提供的默认网页了。如果无法访问,则可能是阿里云没有开启端口。
开启端口操作如下:
1.点击更多
2.选择安全组配置
3.点击配置规则
4.点击添加安全组规则
5.接着输入要开放的端口和允许的IP地址规则即可。
授权对象牵涉到IP地址和掩码的相关知识。
3.uWSGI代替测试环境
Nginx和uWSGI算是相辅相成,如下图:
使用Web服务器Nginx作为前端,为WSGI服务器uWSGI提供反向代理服务。反向代理服务器是这样的程序:他们接受客户端的请求,并从真正的服务器那里取得响应内容,再返回客户端,就好像数据是由代理服务器提供给客户端的一样。
总得来说,Nginx负责监听端口(默认为80)发来的请求,并把该请求转到对应端口的WSGI应用,之后在处理之后又经由Nginx返回给客户端。也就是说,uWSGI还需要和Nginx进行通信。
创建配置文件uwsgi.ini保存配置环境:
[code][uwsgi] #uwsgi启动时所使用的地址与端口,端口可以使用其他端口 socket=127.0.0.1:8080 # 指向网站的项目根目录 chdir=/home/ren/ScholarDiscovery/SchoolSearch/MicroFlask #python启动程序文件 wsgi-file=app.py #python程序内用以启动application变量名,app = Flask(__name__) callable=app master=true #处理器数目 processes=4 #线程数 threads=2
接着运行即可:
[code]uwsgi uwsgi.ini
运行成功时输出如下:
此时如果提示端口已经被占用,则可以尝试换个端口或者使用kill命令杀死占用该端口的进程。
[code]ps -aux | grep uwsgi
会列出和uwsgi相关的进程,然后使用:
[code]kill -9 [PID]
来杀死进程。
先使用Ctrl+c停止uWSGI的运行。
接着是nginx配置文件的修改,修改/etc/nginx/sites-available/default:
Nginx监听80端口,root为项目根目录;location则保存着uWSGI的相关配置,用以方便Nginx和uWSGI的通信。
location中用到了UWSGI_PYHOME来表示虚拟环境的路径,如果没有用到虚拟环境则可以注释掉这一句。
另外就是uwsgi_pass中的IP:port和uwsgi.ini的socket的IP:port是相同的。
然后重新启动Nginx服务:
[code]service nginx restart
接着需要运行uWSGI:
[code]uwsgi uwsgi.ini
如果需要后台运行的话,则可以使用:
[code]uwsgi -d --ini uwsgi.ini
项目部署完成。
参考书目:《深入理解Flask》
参考链接:https://blog.csdn.net/weixin_39212776/article/details/81318553
- Flask学习11:阿里云新手Flask + nginx + uwsgi + ubuntu的完整项目部署教程
- 阿里云服务器部署笔记一(python3、Flask、uWSGI、Nginx)
- 阿里云 Ubuntu 16.04+uWSGI+Nginx部署Django项目
- 配置阿里云CentOS7.2+nginx+uwsgi 部署flask项目
- Flask+nginx+uWSGI阿里云服务器部署-centos6.8
- 阿里云(ubuntu)下使用nginx、uwsgi部署django项目
- 阿里云服务器部署笔记二(python3、Flask、uWSGI、Nginx)
- 阿里云CentOS、Nginx、uWSGI、Flask部署简易博客
- 在MAC使用Nginx+uWSGI部署Flask项目
- python-django 阿里云ECS服务器部署uwsgi+nginx过程解说
- Flask+uwsgi+Nginx+Ubuntu部署
- 阿里云部署Ubuntu 1.4 Flask + WSGI + Nginx 详解
- Django项目部署:Nginx+uWSGI服务器
- flask+uwsgi+supervisor+nginx在局域网服务器上部署实践
- flask部署-Ubuntu下使用nginx+uwsgi+supervisor部署flask应用
- 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的
- 基于ubuntu(阿里云)的nginx+uwsgi+django的服务器搭建(到处是坑)
- Python-在CentOS7上使用nginx+uwsgi部署Flask框架开发的Web项目
- Ubuntu 12.04 下部署 Nginx+uWSGI+Flask
- 用uWSGI和Nginx部署Flask项目的方法示例