1、前言
笔者上篇介绍内网与外网,内网穿透,即如何实现外网如何访问内网的服务器。我们开发同学经常用到的场景在内网的开发环境,可以在本地/自己的笔记本上进行开发。那如何操作呢,以j安装jupyter为例,笔者将会详细介绍安装jupyter、配置Jupyter以允许外网访问、设置默认工作目录等等。
2、安装Jupyter
以linux ubuntu为例,可以提前在环境中下载minconda3/anaconda3。
-
更新软件包索引
sudo apt update
-
安装Python和pip(若有python环境,可以跳过)
sudo apt install python3-dev python3-pip python3-venv
-
安装Jupyter
pip3 install jupyter
3、配置Jupyter以允许外网访问
-
生成配置文件
jupyter notebook --generate-config
配置文件通常会生成在
~/.jupyter/jupyter_notebook_config.py
。 -
修改配置文件
打开配置文件~/.jupyter/jupyter_notebook_config.py
,进行以下修改:cd ~/.jupyter/ # 到生成配置文件下 vi jupyter_notebook_config.py # 打开配置文件
在配置文件中添加以下代码:
c.NotebookApp.ip = '0.0.0.0' # 设置Jupyter监听所有网络接口,允许外网访问 c.NotebookApp.port = 8888 # 设置端口,默认为8888,可自定义 c.NotebookApp.open_browser = False # 禁止自动打开浏览器 c.NotebookApp.notebook_dir = '/yourpath/workspace/' # 指定目录
-
设置密码(可跳过)
jupyter notebook password
按提示输入并确认密码。
4、后台启动Jupyter
-
使用nohup命令后台启动
这个命令会将Jupyter Notebook启动在后台,并将输出重定向到nohup jupyter notebook --allow-root > jupyter.log 2>&1 &
jupyter.log
文件。
5、外网访问
- 确保服务器的防火墙或安全组设置允许访问你设置的端口(如8888端口)。一定需要检查!一定需要检查!一定需要检查!。
- 在浏览器中输入
http://<服务器公网IP>:8888
访问Jupyter Notebook。
检查防火墙策略
在Linux系统中使用firewall-cmd命令来管理firewalld防火墙
以下显示的命令及其解释:
a. firewall-cmd --list-all
- 这个命令用于显示当前
firewalld
防火墙的配置。输出显示了公共区域(public zone)的详细信息,包括:-
target: default
:默认策略是接受(accept)。 -
icmp-block-inversion: no
:没有启用ICMP阻止反转。 -
interfaces: ens19f1np1 ens12f0np0 ens12f1np1 ens15np0 ens17np0
:列出了属于公共区域的网络接口。 -
services: ssh dhcpv6-client
:允许通过公共区域的服务,包括SSH和DHCPv6客户端。 - 其他如
ports
,protocols
,masquerade
,forward-ports
,source-ports
,icmp-blocks
,rich rules
等均未配置或为空。
-
b. firewall-cmd --zone=public --list-ports
- 用于列出公共区域当前开放的端口。若没有显示输出结果,可能是因为之前没有开放任何端口。所以要执行接下来的步骤。
c. firewall-cmd --zone=public --add-port=8888/tcp --permanent
-将TCP端口8888永久添加到公共区域的防火墙规则中。--permanent
表示这个规则在防火墙重启后仍然有效。命令执行成功,输出显示success
。
d. firewall-cmd --reload
- 重载防火墙规则,若不执行,新添加的规则就不会生效。