centos,nginx搭建flask快速实现教程

目录

                1. 安装nginx,虚拟环境,flask

2. 创建和配置 Flask 应用

3. 使用 Gunicorn 部署 Flask

4. 配置 Nginx

5. 启动和启用 Nginx

6. 配置防火墙

7. 测试你的应用程序

 8.检查 Gunicorn 是否在监听正确的端口(失败的解决方案)

9.测试直接访问 Gunicorn

10.使用 Systemd 管理 Gunicorn

1. 安装nginx,虚拟环境,flask

提前准备,安装好nginx,并能运行,centos建议安装最新版

如果没有装nginx可通过一下命令行安装

sudo yum update -y
sudo yum install epel-release -y
sudo yum install python3 python3-pip nginx -y

 安装nginx,

安装python

2. 创建和配置 Flask 应用

创建一个新的目录来存放你的 Flask 项目,并在其中初始化 Flask 应用程序。

mkdir ~/my_flask_app
cd ~/my_flask_app

 创建一个虚拟环境,并激活它

python3 -m venv venv
source venv/bin/activate

安装 Flask:

pip3 install flask gunicorn

创建一个简单的 Flask 应用程序。新建文件 app.py,内容如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

3. 使用 Gunicorn 部署 Flask

在 Flask 项目目录下,使用 Gunicorn 启动你的 Flask 应用程序:

gunicorn --workers 3 --bind 127.0.0.1:8000 wsgi:app

在此之前,请确保你创建了一个 wsgi.py 文件,它将导入你的 Flask 应用:

from app import app

if __name__ == "__main__":
    app.run()

4. 配置 Nginx

编辑 Nginx 配置文件以反向代理到 Gunicorn。打开 Nginx 配置文件:

sudo nano /etc/nginx/nginx.conf

或者你可以为你的 Flask 应用创建单独的配置文件:

sudo nano /etc/nginx/conf.d/my_flask_app.conf

在配置文件中添加如下内容:

server {
    listen 80;
    server_name your_domain_or_ip;你的IP或域名

    location / {
        proxy_pass http://localhost:8000; 改为本地会好一些
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

5. 启动和启用 Nginx

启动 Nginx 服务并将其设置为开机自启动:

sudo systemctl start nginx
sudo systemctl enable nginx

6. 配置防火墙,检查 SELinux 配置

如果你启用了防火墙,需要允许 HTTP 流量通过:

sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload

检查 SELinux 配置

检查SELinux配置

如果你的 CentOS 系统启用了 SELinux,可能会阻止 Nginx 访问 Gunicorn 的 socket。可以临时禁用 SELinux 进行测试:

sudo setenforce 0

7. 测试你的应用程序

现在,访问你服务器的 IP 地址或域名:

http://your_domain_or_ip

你应该会看到 "Hello, World!" 消息,表示你的 Flask 应用运行成功。

 8.检查 Gunicorn 是否在监听正确的端口(失败的解决方案)

确认 Gunicorn 正在监听 127.0.0.1:8000。你可以使用以下命令查看是否有应用在监听该端口:

为了确保 Gunicorn 在服务器重启时自动启动,创建一个 Systemd 服务文件:

sudo netstat -plnt | grep 8000

这条命令应该显示类如下的输出:

tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      12345/gunicorn

 如果没有显示任何内容,可能是 Gunicorn 没有启动或者绑定了错误的地址和端口。

9.测试直接访问 Gunicorn

为了排除 Nginx 配置问题,尝试直接访问 Gunicorn 服务。因为 Gunicorn 默认绑定的是 127.0.0.1,你不能直接从外部访问它。所以你可以使用 curl 命令在服务器上直接测试:

curl http://127.0.0.1:8000/

测试直接访问 Gunicorn

如果 Gunicorn 正常工作,你应该看到 Hello, World!

. 10.使用 Systemd 管理 Gunicorn
sudo vi /etc/systemd/system/my_flask_app.service

添加以下内容:

[Unit]
Description=Gunicorn instance to serve my_flask_app
After=network.target

[Service]
User=your_username
Group=nginx
WorkingDirectory=/home/your_username/my_flask_app
Environment="PATH=/home/your_username/my_flask_app/venv/bin"
ExecStart=/home/your_username/my_flask_app/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 wsgi:app

[Install]
WantedBy=multi-user.target

注意:将 your_username 替换为你的系统用户名。

保存并退出文件后,重新加载 Systemd 并启动服务:

sudo systemctl daemon-reload
sudo systemctl start my_flask_app
sudo systemctl enable my_flask_app

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值