华为云服务器如何开放端口允许外部访问_华为云服务器端口开放访问不了-CSDN博客

华为云开启5000端口,供外部访问

添加完毕!

可以去跑flask文件啦

进入对应路径运行 python app.py

运行成功

外网就可以访问了  http://公网ip:5000/

关于  Gunicorn 和  Nginx之间数据怎么流通的,了解可以看这个:

Gunicorn 和 Nginx之间数据流通-CSDN博客

下面开始正式部署:

代码部分:

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

配置服务器

选择 WSGI 服务器Gunicorn

虽然 Flask 内置了一个开发服务器,但不建议在生产环境中使用。选择一个生产就绪的 WSGI 服务器,如 Gunicorn 或 uWSGI。安装你选择的服务器:

这里选择 gunicorn,独角兽

# 安装 Gunicorn

pip install gunicorn

Gunicorn 有许多配置选项,可以通过命令行参数或配置文件进行设置。一些常见的配置选项包括:

workers:工作进程的数量,可以根据 CPU 核心数进行调整。bind:绑定地址和端口,默认为 127.0.0.1:8000。logfile:日志文件的路径。loglevel:日志级别(debug, info, warning, error, critical)

例如,要指定 4 个工作进程并在 8001 端口上监听,你可以运行:

gunicorn -w 4 -b 0.0.0.0:8001 app:app

注意这里的正确拼写 app:app注意端口号(有必要的话同时设置华为云服务器的安全组)

可能出现的问题: Gunicorn正常运行但是外部不能正常访问。

注意如果直接运行:gunicorn app:app   这是运行默认配置

Gunicorn 可能只监听在 127.0.0.1(localhost)上,而不是 0.0.0.0(所有可用接口)。

那外网是无法访问的,没有正确配置来接受来自你外部IP 地址的连接。

Gunicorn绑定到0.0.0.0,而不是127.0.0.1,这样它就可以接受来自任何IP地址的连接。

可能出现的问题:Gunicorn运行报错: [INFO] Starting gunicorn 21.2.0                                                               [ERROR] Connection in use: (‘0.0.0.0’, 8000)

这个错误说明 端口 8000 正在被其他进程使用。由于端口是唯一的,一个时间点上只能有一个进程监听特定端口。

查找正在使用端口的进程:

sudo lsof -i :8000

sudo netstat -tuln | grep 8000

杀死正在使用端口的进程:将  替换为实际的进程ID。

sudo kill -9

另外还可以再看看确保没有其他 Gunicorn 实例在运行:

ps aux | grep gunicorn

杀死正在运行的Gunicorn 实例的进程

sudo kill -9

重新启动 Gunicorn

gunicorn -w 2 -b 0.0.0.0:8000 app:app

可以正常运行了,外部可以正常访问到。

关闭gunicorn:

ctrl+c 关掉,顺便杀死刚才运行的gunicorn,即上面的步骤

使用系统服务管理 Gunicorn

对于生产环境,你可能希望使用系统服务(如 systemd 或 supervisor)来管理 Gunicorn 进程。这样可以在服务器启动时自动启动 Gunicorn,并在其崩溃时自动重启。

使用 systemd 创建一个服务单元文件(例如 /etc/systemd/system/gunicorn.service),内容如下:Linux 系统使用 systemd 把Flask 项目注册为系统服务

gunicorn.service的名字自己定义可以是myflaskapp.service等

创建命令:vim /etc/systemd/system/gunicorn.service  输入i进行编辑

[Unit]

Description=Gunicorn service for my Flask app

After=network.target

[Service]

User=your_username

Group=your_groupname

WorkingDirectory=/path/to/your/app

ExecStart=/usr/local/bin/gunicorn -w 4 -b unix:/path/to/your/app/gunicorn.sock 'app:app'

[Install]

WantedBy=multi-user.target

替换 your_username、your_groupname、/path/to/your/app 和其他路径为实际的值。

whoami # 获取当前用户名 结果替换your_username

groups # 获取当前用户所在的组 结果替换your_groupname

设置正确的工作目录

WorkingDirectory=/path/to/your/app

这个就是你flask项目的文件夹,

比如我的是 /root/TensorFlow_to_Android/Flower_APP

我的app.py 就在这文件夹下面,填到文件夹就可以了。

确保 Gunicorn 可执行文件路径正确

ExecStart=/usr/local/bin/gunicorn -w 4 -b unix:/path/to/your/app/gunicorn.sock 'app:app'

这句因人而异,

如果gunicorn 不是安装在虚拟环境(flask项目没有创建虚拟环境)则: 可通过 which gunicorn 或 find / -name gunicorn(可能需要 sudo)来查找 gunicorn 的实际安装位置。得到真实路径就替换掉  /usr/local/bin/gunicorn

unix:/path/to/your/app/gunicorn.sock这个替换成0.0.0.0:8000    注意端口号

完整的一句比如:

ExecStart=/usr/bin/gunicorn -w 4 -b 0.0.0.0:5500 app:app

如果 Gunicorn 安装在一个虚拟环境中,确保虚拟环境被激活,并且 ExecStart 指令指向了虚拟环境中正确的 Gunicorn 可执行文件路径

下面是我的设置

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)

1712720411721)] [外链图片转存中…(img-kduZJYZ9-1712720411721)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取) [外链图片转存中…(img-hQWRVOpX-1712720411721)]

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。