将Flask项目发布到公网,部署到云服务器

使用的是阿里云的学生机
简要说明一下针对本文的环境情况:
系统:Ubuntu18.04 Server
Python:Python3.6.7
pip:pip 19.1.1
uwsgi:2.0.18
Flask:1.0.3

1.安装nginx和uwsgi

安装uwsgi

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi

uwsgi通过uwsgi --version输出相应版本号则安装成功

uwsgi --version

安装nginx

apt install nginx

启动nginx

service nginx start

然后再浏览器地址栏输入IP:80
然后显示Welcome to nginx!,代表成功。

2.安装Flask

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask

创建测试项目及文件

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return "<h1 style='color:red'>hello world!</h1>"

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True)

测试运行demo

python3 main.py

文件结构:

root@ltmshing:~# cd /root/flaskdemo/
root@ltmshing:~/flaskdemo# ls
main.py     myapp.log  restart  templates  uwsgi.ini
main.py.cp  nohup.out  static   top
root@ltmshing:~/flaskdemo#

3.配置uwsgi和nginx

创建一个uwsgi.ini文件

	cd /root/flaskdemo/
	vim uwsgi.ini

写入以下信息

[uwsgi]
master = true
wsgi-file = main.py
callable = app
socket = 127.0.0.1:8001
processes = 4
threads = 2
buffer-size = 32768

wsgi-file = xxx.pyxxx对应flask项目的启动文件。

配置Nginx
修改nginx的配置文件/etc/nginx/sites-available/default

server {
        listen 80;  # 监听端口,http默认80
        server_name _; # 因为我是在本地虚拟机的测试所以这样写,如果是远程服务则填写域名或者公网IP
        location / {
                include uwsgi_params;   # 使用nginx内置的uwsgi配置参数文件
                uwsgi_pass 127.0.0.1:8001;   # 转发请求到该地址端口
                uwsgi_param UWSGI_SCRIPT main:app;   # 调用的脚本名称和application变量名
        }
        # 如果网站有静态文件夹,则放在这里。
        # location /static {
          # alias /static; # 项目的static文件夹
        # }
}

ps:注意更改静态文件路径
还有一种配置如下图:
在这里插入图片描述
检查nginx配置文件是否有错误nginx -t
结束uwsgi服务sudo pkill -f uwsgi -9
重启nginx服务service nginx restart
重新启动uwsgi服务uwsgi uwsgi.ini
在浏览器输入IP:80IP即可访问到之前的helloworld页面

4.遇到的问题

nginx静态资源文件无法访问,403 forbidden错误
解决办法:
网上查询后说是权限问题,更改nginx.conf的第一行
#user nobody;改为 user root;
保存,再次重启 nginx 服务,访问成功
ps:nginx.conf的地址为

	vim /etc/nginx/nginx.conf

在这里插入图片描述
修改为重启nginx即可。

发布了51 篇原创文章 · 获赞 44 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/vpqtxzmzezeqjj9977/article/details/104271997