小言_互联网的博客

centos7部署flask项目(uwsgi+nginx+flask)

372人阅读  评论(0)

1. 环境说明

  • 服务器Centos7
  • python 3.6
  • flask项目

2. 环境准备

3. 搭建虚拟环境

# 下载虚拟环境包
pip3 install virtualenv
 
# 使用命令新建虚拟环境,我的目录是/usr
# 创建虚拟环境名叫 venv ,如果你是参考我的文章安装的python 
# 那么和我的路径保持一致即可,如果在这一步提示bash: virtualenv: 未找到命令...
# 那么参考错误解决链接: https://www.cnblogs.com/hszstudypy/p/11511228.htm
# 指定虚拟环境的python版本 这里指定3.6
virtualenv -p /usr/local/bin/python3 venv
 
# 激活虚拟环境 source后加你自己的venv目录路径 /bin/activate
source venv/bin/activate
 
# 查看当前虚拟环境的python版本
python -V

# 在虚拟环境中安装flask、uwsgi库
pip install uwsgi
pip install flask
 

4. 创建uwsgi配置文件

  • 在激活的虚拟环境中/usr/venv 目录下创建 uwsgi.ini 配置文件
# 此时的目录为 /usr/venv 当然你在哪创建都行
touch uwsgiconfig.ini
 
# 编辑配置文件 添加以下内容
vim uwsgiconfig.ini
  • 配置文件内容,记得删除注释
[uwsgi]
# uwsgi 启动时所使用的IP地址与端口,0.0.0.0表示所有IP地址都行
socket = 127.0.0.1:5000

# 指向网站目录,也就是你项目根目录
chdir= /usr/flask

# python 你的程序启动文件,如果是app.py那么这里就写app.py
wsgi-file = app.py

# 你的运行程序省略.py后缀的名字
module = app
# 你的启动程序中的 app = Flask(__name__) 变量名,如果是app 那么这里就写app
callable = app

# 进程数量
processes = 5

# 线程数量
threads = 2

#状态检测地址
stats = 127.0.0.1:9191

# 日志输出目录
daemonize = /usr/venv/flask.log

5. 安装nginx

# 添加nginx的yum源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装nginx 命令安装比较简单,也可以选择源码安装
sudo yum install -y nginx
  • 我的安装后nginx目录在 /etc/nginx ,找到配置文件/etc/nginx/nginx.conf配置
  • 我这里配置 /etc/nginx/nginx.conf 不生效,配置好几遍访问还是nginx欢迎页面,如果你和我的情况一样,那么看看nginx配置文件的引入路径对应哪个配置文件

  • 添加如下内容
# default.conf全部内容都在这里 ,我把注释掉的内容都删掉了,一切从简
server {
    listen       80;
    # 这里改成你自己的IP,如果是域名那么写域名,如果配置成域名,你通过浏览器访问域名的80端口
    # 那么就可以转到uwsgi的服务上 127.0.0.1:5000 
    server_name  localhost; 

    

    location / {
    	# 这里是引入的uwsgi_params 注意路径一定要正确,你可以自己找一下
        include /etc/nginx/uwsgi_params; 
       # 前面是固定写法 后面IP+端口号是你自己服务的端口号 只需要和uwsgi的socket保持一致即可
       # 记得你主程序中运行需要设置host="0.0.0.0" 
       # 一定要和uwsgi中的socket保持一致 !!!!!!
        uwsgi_pass 127.0.0.1:5000;
        
        # 这里是之前默认的页面 欢迎页面我就没改 ,不需要可以删除
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

  	# default.conf自带的 错误页面和欢迎页面 不需要可以删除
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}


  • 配置完毕后启动nginx systemctl start nginx
  • 启动uwsgi项目进入文件目录执行 , uwsgi uwsgiconfig.ini
  • 我测试的这个没添加日志路径,都输出在终端了这样就是启动成功了

  • 访问你自己服务器的IP地址 http://xxx.xxx.xxx.xxx

6. 配置常用命令

# 查看端口占用 :
netstat -lnp | grep 端口号

#启动 nginx
systemctl start nginx

#重新启动 nginx
systemctl restart nginx

#关闭 nginx
systemctl stop nginx

#关闭所属所有进程 适用于所有,只需要更改 -9 后面的名字即可
killall -9 nginx 

7. 502访问不到页面

如果你都配置的好好的,但是就是访问的时候提示页面出错,访问不到页面,或者一系列的错误问题,那么你就要考虑端口是否开放的问题了,Centos7有两个安全机制,一个防火墙,一个seLinux,这两个如果你不会调的话,那么直接关闭,只限于测试阶段,如果正式还是要请运维开放服务端口的

# 查看seLinux状态, enforcing为开启、disable为关闭
getenforce 

# 临时关闭selinux
setenforce 0

# 永久关闭selinux 
vim /etc/selinux/config 
把SELINUX=enforcing改为SELINUX=disabled,保存文件重启即可

# 查看防火墙状态
systemctl status firewalld.service

# 关闭防火墙状态
systemctl stop firewalld.service

# 禁止防火墙开机启动
systemctl disable firewalld.service 

# 开放5000端口 --zone是作用于 --permanent永久生效
firewall-cmd --zone=public --add-port=5000/tcp --permanent  

# 关闭5000端口
firewall-cmd --zone=public --remove-port=5000/tcp --permanent  

# 重新加载配置 刷新
firewall-cmd --reload   

# 查看所有开放的端口
firewall-cmd --zone=public --list-ports

转载:https://blog.csdn.net/weixin_44232093/article/details/105270317
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场