华为云服务器如何开放端口允许外部访问_华为云服务器端口开放访问不了-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
杀死正在使用端口的进程:将
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)]
好文推荐
发表评论