flask项目+uwsgi+nginx部署

目录:
一、在linux系统安装python3.7环境
二、在linux系统导入项目
三、uwsgi安装部署
四、nginx安装部署
五、uwsgi+nginx启动项目


一、python3.7环境安装

CentOS7默认携带python2.7版本,但是现在大部分使用python3.7版本,所以要在服务器上搭建python2和python3共存环境。

1. 安装依赖包

yum install zlib-devel libffi-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc* make -y

2. 下载python3安装包

wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
注意:如果是在window系统下载好想要传到linux系统,可以在命令行使用rz命令,将安装包放在opt目录下(不要拖动,可能会造成文件缺失)。
出错提醒:在虚拟机环境下使用rz命令,出现乱码并卡死

rz命令出错截图

解决:使用xshell工具连接并使用该命令
解决

结果截图

3. 解压、编译和安装

(1)解压:tar -xvjf Python-3.7.0.tar.xz
(2)编译:

  • 进入解压后的python3.7目录下:cd Python-3.7.0/
    截图
  • 将python3.7环境安装到usr/local下。名称叫python3
    ./configure prefix=/usr/local/python3
    (3)安装:make && make install
4. 创建软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
5. 运行python3.7环境

python3

运行python3环境

二、在linux下运行项目

1. 安装flask项目运行的模块

(1)windows下导出flask项目下载安装的模块
pip freeze > package_flask.txt(文件名自己命名)

导出模块

(2)linux环境下安装模块
pip3 install -r package_flask.txt

image.png

2. 将项目导入到linux

(1)删除没有用的文件,如.idea、pycache
(2)修改端口号和主机,debug改为false

修改

(3)将项目压缩,导入到linux
(4)解压:unzip flask_OAsystem.zip
(5)启动项目: python3 main.py run
启动项目命令截图

(6)Windows下访问测试
访问测试

注意:关闭linux系统的防火墙:

  1. 查看防火墙的状态:systemctl status firewalld
  2. 关闭防火墙:systemctl stop firewalld
  3. 开启防火墙:systemctl start firewalld
  4. 关闭开机启动:systemctl disable firewalld
  5. 启用开机启动:systemctl enable firewalld

三、安装uwsgi模块

网站通常要运行在web服务器上,来接受浏览器的访问。python有自己的轻量级web服务器,就像上面测试一样,可以进行访问。但是这个服务器只适合在本地开发的时候使用,但是线上运行时要保证更高的性能和稳定性,所以需要使用uwsgi部署。
简单了解:uWSGI是一个web服务器,它实现了WSGI协议、uwsgi、http等协议。uwsgi协议是一个uWSGI服务器自有的协议,用于定义传输信息的类型。WSGI(Web Server Gateway Interface),是为python语言定义的Web服务器和Web应用程序框架之间的一种简单而通用的接口。是一个网关,在协议之间进行转换。


摘自-摩力克《uWSGI详解》
1. 下载uwsgi 模块替换自带的服务模块

pip3 install uwsgi

2. 创建软连接

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

四、Nginx

前面已经用uwsgi服务器了来部署了,为什么还要再使用nginx呢?

  1. 安全:不管什么请求都要经过代理服务器,这样就避免了外部程序直接攻击web服务器
  2. 负载均衡:根据请求情况和服务器负载情况,将请求分配给不同的web服务器,保证服务器性能。
  3. 提高web服务器的IO性能:nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,可以达到很好的客户端响应。
1. 下载nginx压缩包

wget -c https://nginx.org/download/nginx-1.12.2.tar.gz

2. 解压、编译和安装

(1)解压:tar -zxvf nginx-1.12.2
(2)编译:./cnfigure
(3)安装:make && make install

3. 创建软连接

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

4. 启动:

nginx:回车后没有任何反应,去windows下访问测试

5. 访问测试
启动成功
6. 停止nginx:

nginx -s stop

五、uwsgi+nginx启动项目

1. 创建uwsgi.ini配置文件

opt目录下创建scripts目录mkdir scripts
在scripts目录下创建uwsgi.ini文件: vim uwsgi.ini

[uwsgi]

socket=127.0.0.1:5000
pythonpath=/opt/final_lt_03
module=main
wsgi-file=/opt/final_lt_03/main.py
callable=app
processes=4
threading=2
daemonize=/opt/scripts/uwsgi.log

注意:pythonpath写的自己的项目名称

2. 变量nginx配置文件

(1)cd /usr/local/nginx/conf进入到nginx配置文件的目录
(2)修改配置文件。注意先对nginx.conf进行备份:cp nginx.conf nginx.conf.bak

配置修改

3. 启动

(1)启动uwsgi
cd /opt/script/
uwsgi --ini uwsgi.ini

启动nginx

(2)启动nginx
nginx

4. 访问测试

直接在windows系统的浏览器地址栏输入linux系统的IP地址。不带端口号,可以直接访问到项目。
--------------------成功-------------------------------


如有不妥,欢迎指正

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容