公网暴露服务¶
如何把自己的项目或者服务暴露到公网进行访问
自定义服务是平台提供的一个给用户暴露服务到公网访问的功能,可以暴露任何端口到公网进行访问,在启动需暴露服务时指定8080
端口以及监听地址为 0.0.0.0
即可。
如下示例简单写了一个 Web 项目页面,然后暴露到公网访问的流程,让大家作为参考示范。
1.首先登录Linux实例。
登录实例过程可以参考:登录Linux实例 相关文章。
2.示例项目代码如下
查看写的代码项目文件
(base) root@I139eda00f900b01e56:~# cat main.py
代码具体内容如下
#!/usr/local/miniconda3/bin/python3
from http.server import SimpleHTTPRequestHandler, HTTPServer
host = '0.0.0.0' #定义web项目的监听地址,必须写为0.0.0.0,否则无法将公网正确转发到该项目中,坚决不能写为127.0.0.1,否则无法转发到实例对应的服务中
port = 8080 #定义web项目的监听端口,必须写为8080,否则无法将公网正确转发到该项目中
class MyRequestHandler(SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/ping':
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
response = f'PONG BY {host}:{port}'
self.wfile.write(response.encode('utf-8'))
else:
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
response = 'HELLO, GPUSHARE!'
self.wfile.write(response.encode('utf-8'))
if __name__ == '__main__':
server_address = (host, port)
httpd = HTTPServer(server_address, MyRequestHandler)
print(f'Starting server on {host}:{port}')
httpd.serve_forever()
提示
如果是您自己写的项目,需要来定义监听地址和监听端口;如果是github或他人的项目,则需要寻找相应项目监听端口以及监听IP地址的代码文件或配置文件进行修改,部分项目可以通过启动项目时传入参数进行指定,例如 python main.py --port 8080 --listen 0.0.0.0
。
3.启动项目
python main.py
4.验证项目是否启动成功
然后使用ss -anplt | grep 8080
命令验证项目端口是否监听,如有监听则会返回如下面代码块中类似,否则无返回,就需要去查看项目启动日志是否出现问题。
ss -anplt | grep 8080
LISTEN 0 5 0.0.0.0:8080 0.0.0.0:* users:(("python",pid=16203,fd=3))
后台启动
上述默认为前台启动的web服务,可以通过tmux命令托管或通过nohup等命令来将visdom放置后台启动,放置后台启动不用担心终端断开而导致visdom服务中断问题。
5.通过公网访问项目 通过控制台我的实例中的【自定义服务】来访问您所需要暴露到公网的项目。