当先锋百科网

首页 1 2 3 4 5 6 7

部署环境:

    1.腾讯云服务器(Ubuntu)
    2.Python 3.8.10
    3.nginx/1.18.0 (Ubuntu)

一、项目准备

  准备一个最简单的Flask项目文件并上传到服务器的/Projects/hello目录下。

import flask

app = flask.Flask(__name__)

@app.route("/hello")
def hello():
    return "hello world!"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

  为了避免后续权限不足,在这里先为hello文件夹提供777权限。

ubuntu@host:/Projects/hello$ cd ..
ubuntu@host:/Projects$ sudo chmod -R 777 hello

二、环境搭建

1.安装Nginx

sudo apt-get update           # 更新安装源
sudo apt install nginx        # 安装Nginx

2.安装第三方库Flask

pip3 install --upgrade pip    # 更新pip
pip install flask

3.安装uWSGI

sudo apt-get install python3-dev
pip install uwsgi                 # 安装uwsgi

三、配置uWSGI

1.编辑配置文件

  在/Projects/hello的目录下创建uwsgi.ini文件。

[uwsgi]
# 用于启动程序名
module = hello:app
# 子进程数量
master = true
processes = 4
# 程序目录
chdir = /Projects/hello
# 配置uWSGI与Nginx通信
socket = /Projects/hello/uwsgi.sock
# 赋予.sock文件权限
chmod-socket = 660
# http地址和端口
vacuum = true
http = 0.0.0.0:8000
# 允许数据包大小
buffer-size = 65536
# 配置pidfile文件
pidfile = /Projects/hello/uwsgi.pid

2.启动uWSGI

3.其他命令

uwsgi --reload uwsgi.ini     # 重载uWSGI服务
uwsgi --stop uwsgi.pid       # 关闭uWSGI服务

4.查看结果

  使用浏览器查看8000端口是否返回预期结果。
查看8000端口详情

注:如果拒绝访问,可在腾讯云控制台的防火墙查看是否打开了8000端口。

查看控制台详情

四、配置Nginx

1.备份配置文件

  由于配置Nginx会多次修改配置文件,所以一定要备份好初始的配置文件。

sudo cp /etc/nginx/sites-enabled/default ~/nginx.backup

2.编辑配置文件

  删除default文件,创建新的配置文件hello。并向其中添加如下内容:

server {
        listen 80;
        server_name _;

        location / {
                include uwsgi_params;
                uwsgi_connect_timeout 30;
                uwsgi_pass unix:/Projects/hello/uwsgi.sock;
        }
}

  注释掉/etc/nginx/nginx.conf的第一行——user www-data;并换成user root;

#user www-data;      # 注释掉此行
user root;           # 换成此行
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

3.重新启动Nginx

  因为我们修改了配置文件,所以必须要重新启动Nginx服务。

sudo nginx -t                 # 检查语法是否有错
sudo service nginx restart    # 重新启动Nginx

4.其他命令

nginx                 # 启动Nginx服务
nginx -s stop         # 停止Nginx服务
ps -ef | grep nginx   # 查看Nginx的运行状态
ps -aux | grep nginx  # 查看Nginx的运行状态

5.查看结果

  此时就可以在80端口查看到/hello路由下的结果,这与8000端口的结果是一致的。
查看80端口详情

五、参考文献

1.nginx+uwsgi+django部署(动静分离)
2.uWSGi配置使用
3.uWSGI和Gunicorn对比实践笔记
4.uwsgi出现invalid request block size: 21573 (max 4096)
5.nginx权限问题failed(13:Permission denied)
6.详解Nginx 13: Permission denied 解决方案
7.django生产环境搭建(uWSGI+django+nginx+python+MySQL)
8.flask使用80端口
9.Flask部署
10.flask部署