跳转至

公网暴露服务

如何把自己的项目或者服务暴露到公网进行访问

自定义服务是平台提供的一个给用户暴露服务到公网访问的功能,可以暴露任何端口到公网进行访问,在启动需暴露服务时指定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.通过公网访问项目 通过控制台我的实例中的【自定义服务】来访问您所需要暴露到公网的项目。