Flask 部署,域名部署+Docker自启动

在部署 Flask 服务时,您可以使用 反向代理 来隐藏服务器的域名。反向代理可以将外部请求路由到内部的 Flask 服务,而用户只会看到代理服务器的域名或 IP,而不会直接访问您的 Flask 服务所在的服务器。

1.使用Nginx做反向代理

1.安装 Nginx:

sudo apt update
sudo apt install nginx

2.配置 Nginx 作为反向代理:

sudo vim /etc/nginx/sites-available/default

添加以下配置,将请求转发到 Flask 应用所在的服务器:

server {
    listen 80;  # 监听80端口,处理HTTP请求
    server_name yourdomain.com;  # 您的域名

    location / {
        proxy_pass http://localhost:5000;  # Flask 应用运行在本地的5000端口
        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;
    }
}
  • proxy_pass http://localhost:5000;:Nginx 将所有请求转发到运行在 localhost:5000 的 Flask 应用。
  • server_name yourdomain.com;:指定您希望用户访问的域名。

3.测试 Nginx 配置并重启:

测试 Nginx 配置文件是否正确:

sudo nginx -t

如果配置正确,重启 Nginx:

sudo systemctl restart nginx
或者:
service nginx restart

启动 Flask 应用:

使用 gunicorn 或其他 WSGI 服务器启动 Flask 应用,而不是直接用 Flask 的内置开发服务器。

gunicorn --bind 0.0.0.0:5000 app:app

**如果你的 Flask 文件是 ****flask_server_app.py**,并且应用实例的名称还是 app,命令应修改为:

gunicorn --bind 127.0.0.1:5000 flask_server_app:app

后台启动:

nohup gunicorn --bind 0.0.0.0:5000 flask_server_app:app &
nohup gunicorn --bind 0.0.0.0:5000 flask_server_app:app >nohup.out 2>&1 &
server_url = 'http://yourdomain.com:5000/api'

2. 使用 Apache 作为反向代理

步骤:

  1. 安装 Apache:
sudo apt update
sudo apt install apache2

2.启用必要的模块:

sudo a2enmod proxy
sudo a2enmod proxy_http

3.配置 Apache 虚拟主机:

sudo vim /etc/apache2/sites-available/000-default.conf

配置反向代理:

<VirtualHost *:80>
    ServerName yourdomain.com  # 你的域名

    ProxyPreserveHost On
    ProxyPass / http://localhost:5000/
    ProxyPassReverse / http://localhost:5000/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

4.重启 Apache:

sudo systemctl restart apache2

Docker

在 Docker 容器中后台启动 Flask 服务并确保容器可以自动重启 ,结合nohup命令和docker自启动策略

比如程序启动命令为

nohup gunicorn --bind 0.0.0.0:5000 flask_server_app:app &

然后 在 Docker 中设置自动重启

  1. 编辑 Dockerfile
FROM python:3.10-slim

WORKDIR /app

# 复制项目文件
COPY . .

# 安装依赖
RUN pip install -r requirements.txt

# 启动 Flask 应用的命令
CMD ["nohup", "gunicorn", "--bind", "0.0.0.0:5000", "flask_server_app:app", "&"]

CMD是docker启动后程序执行的命令,如果直接启动python程序,就是

CMD [“python3”,“app.py”]

  1. docker-build将镜像打出来,
docker build -f Dockerfile -t 镜像名:tag .

**-f Dockerfile**

  • -f 参数指定 Dockerfile 的路径。

-t 参数用于为构建的 Docker 镜像打标签(Tag)。

**.**(当前目录):

  1. 镜像打出来之后,就可以运行容器,docker部署了
docker run -d --restart always -p 5000:5000 镜像名:tag
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值