flask部署阿里云服务器,公网ip访问不了(新手踩坑之路)
好朋友,你是不是一个后端初学者?相信到目前为止,你已经拥有一定的后端基础,在发现单机本地的后端开发已经无法满足你,于是你刚买一个云服务器。尽管你对云服务器一窍不通,但是你相信这个万能的互联网,相信这博学的csdn,相信各位热心的技术大佬,于是你对着网上教程准备大展身手,自学成才,一鸣惊人。
从选择云服务器系统开始,一步步跟着教程安装宝塔,接着uwsgi,又ngnix,虽然你不知道这些是啥,但是技术大佬的教程就是这样一条龙安排的,你觉得肯定是有用的东西,于是你全装完了,兴高采烈。然后打开pycharm,把文件传上云服务器,配置好pycharm上使用云服务器上的python解释器,一点运行。生成代码运行结果,点击网址,出现下图,然后你的噩梦就开始了。
你一开始不以为然,区区一个小bug,热茶解bug不在话下。但渐渐地你发现事情不太简单,一个上午过去,网上教程花里胡哨,都是看不懂的东西,照做了却话没有解决你的问题。你,使出浑身解数,看遍csdn所有高浏览量文章,查遍所有关键词,为此烦恼一两天,困苦连天,怀疑人生时,希望这篇文章额可以帮助到你。–《作者自述及寄语》
新手角度看问题:(我用的是flask框架。)
问题一:编写好flask代码在服务器跑成功却访问不了就如图:
解决方法:
- 确保flask代码在服务器中运行成功,出现如下界面:
- 代码中需要写成
app.run(host=’0.0.0.0’,port = 端口号)
这样跑出来的是服务器私有ip的网址。
-
不能直接点击该地址,直接点击该地址就是出现问题的关键,我应该就是在这里卡两天。正确方法是,在浏览器网址输入栏输入你云服务器的 公网ip:端口号(注意:英文的:)
-
此时如果云服务器安全组的端口已经设置打开的话,应该就可以正常打开你flask配置好的首页了。 否则请去打开服务器安全组端口设置。我的是主页是hello world。
!!!一定要记得在阿里云服务器安全组把所用端口添加上,保证端口通道开了,同时,如果使用宝塔面板的话,也需要去宝塔面板把端口放行,二者缺一不可。
还有小技巧是,宝塔上可以看到端口状态:
状态正常,表示端口已被占用,你搭建的flask服务器在使用的端口在生效,可以被用户访问;
(一些特殊的端口号是服务器自动执行运行,是通用协议端口,不要乱改)
未使用,就是还没开放,用户不可以访问。
问题二·:配置了nginx,出现端口占用
解决方法:
1)在服务器连接软件(我用的xshell)命令行查看端口信息
指令:lsof -i:端口号
2)可以看到是nginx在代理,就是这个端口号被nginx一直接管运行,你没有办法抢用。(这个特性应该可以用在以后完成开发,保证端口运行状态)。
要想使用编辑该端口号,需要关闭nginx进程,释放端口号,或者直接暂停nginx运行。
一些指令:
启动nginx:
/usr/local/nginx/sbin/nginx
停止:
/usr/local/nginx/sbin/nginx –s stop
强行关闭:
pkill nginx
指令操作详情:
【Python】Flask阿里云部署填坑记(Centos 7)_YzzHA 的博客
- 注:也有可能是其他在代理,如python,用指令直接关闭python进程就好。
- 结束端口占用进程方法:
使用指令 lsof -i:端口号 查询进程信息
使用 kill (PID) 指令结束进程
再用lsof -i指令查一下,发现进程消失。
另:
不能在本地电脑,妄图直接
app.run(host='服务器ip',port=端口号)
实践说明这个不可行。如下
结果:
目前是我遇到的一些问题解决,供大家参考学习,希望对你有帮助。如有错误之处,敬请指正。