在你的服务器安装宝塔面板
宝塔面板是服务器运维管理系统
使用宝塔前: 手工输入命令安装各类软件,操作起来费时费力并且容易出错,而且需要记住很多Linux的命令,非常复杂。
使用宝塔后: 2分钟装好面板,一键管理服务器,鼠标点几下就能替代以前的复杂繁多命令,操作简单,看一眼就会使用。
https://www.bt.cn/new/download.html
用FTP工具FileZilla进行传输Flask项目
![在这里插入图片描述](https://img-blog.csdnimg.cn/7f75ab9be3a94b49a707a46a62e07480.png)
设置启动文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/052f0e3d99514b32bc50a1f73e30c7a8.png)
公网ip访问会报错
* Serving Flask app 'run'
* Debug mode: on
Cannot assign requested address
Nginx 反向代理 Flask实现公网可访问
用宝塔面板安装Nginx
如果服务器的公网 IP 地址与你在 Flask 应用中设置的 IP 地址不一致,有可能是因为服务器处在一个局域网内,而公网 IP 地址是由路由器或防火墙分配的。在这种情况下,你需要设置端口转发或使用反向代理等方式来实现公网访问。
cd www/server/panel/vhost/nginx
一种常见的方式是使用 Nginx 反向代理 Flask 应用。反向代理可以将客户端的请求转发到 Flask 应用所在的服务器,然后将应用的响应返回给客户端,从而实现公网访问。
具体来说,你需要在服务器上安装并配置 Nginx,然后在 Nginx 的配置文件中添加反向代理规则,将客户端的请求转发到 Flask 应用所在的端口。
![在这里插入图片描述](https://img-blog.csdnimg.cn/4475691813314a59b46a8d3da623ede1.png)
那么需要将 Flask 应用监听的地址改为公网 IP 地址,而不是使用 Nginx 反向代理到本地 IP 地址。
具体来说,你需要将 Flask 应用的监听地址修改为 0.0.0.0,这样 Flask 应用就会监听所有可用的网络接口,包括公网 IP 地址。例如,你可以在 Flask 应用中加入以下代码:
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
其中,host=‘0.0.0.0’ 表示 Flask 应用会监听所有可用的网络接口,包括公网 IP 地址。port=5000 表示 Flask 应用会监听 5000 端口。
然后,在 Nginx 配置文件中,你可以使用以下规则将公网流量反向代理到 Flask 应用:
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
其中,proxy_pass http://localhost:5000 表示将所有请求转发到本地的 5000 端口,也就是 Flask 应用所在的端口。proxy_set_header Host $host 和 proxy_set_header X-Real-IP $remote_addr 则是设置请求头信息,保证 Flask 应用能够正确获取请求的主机名和 IP 地址。
需要注意的是,如果你想要将网站部署到公网上,需要确保服务器的网络环境和安全环境都得到了充分的保护,以避免出现安全问题。建议在部署前先进行充分的安全评估和测试。
例如,假设 Flask 应用监听在 127.0.0.1:5000,你可以在 Nginx 的配置文件中添加以下规则:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
以上配置将客户端的请求转发到 127.0.0.1:5000,并设置了 Host 和 X-Real-IP 头信息,以便 Flask 应用正确处理请求。
需要注意的是,Nginx 的配置文件可能因版本和系统的不同而有所差异,具体配置方式可以参考 Nginx 的官方文档或者其他相关资料。