(这是一篇面向零基础读者的教程)

0.前言

毋容置疑,Jupyter Notebook是统计、数据分析和机器学习的利器,使用起来非常方便和高效。

在上一讲中,我们讨论了如何安装和使用Jupyter Notebook。但有个细节需要注意,那就是这个Jupyter都是运行在本地(localhost)的,如图1所示。图1 在本地运行的Jupyter

在本地机器上,可以通过在浏览器地址栏输入 http://localhost:8888,或http://127.0.0.1:8888,来获取Jupyter Notebook提供的服务,所见即所得,方便且酷。

在图1中,地址栏中的“localhost”是本地主机的域名,其对应的IP地址就是“127.0.0.1”,冒号(:)后面的8888为端口号。对这个端口号的理解还是挺重要的,后面我们还会提及这个概念。

或许,你会遭遇这样的应用场景。假设你是某高校的老师或某公司的培训师,你可能希望自己搭建一个Jupyter Notebook服务器,比如说在阿里或亚马逊的云平台租用了一台性能较好的服务器,以获得较高计算能力(比如GPU)或大内存。

然后,在这样的公共云平台配置了各种环境,如安装了Python、TensorFlow、Keras等各种软件或计算框架。然后,你想让你的受众(授权用户),可以远程访问并共享这个开发环境,而不想再让可能『相隔万里』的他们,每个人都独立配置一套和你一样的开发环境,因为这可能会浪费大量精力和物力。

那么,处于这么一个应用场景的你,可能就需要这个系列的知识:如何搭建一个好用的Jupyter Notebook服务器。

在搭建Jupyter Notebook服务器之前,可能还可需要储备部分基础知识,这样才能让你『知其然,还知其所以然』。

那么第一个需要你掌握的知识,就是什么是端口号。

1 预备知识:什么是端口号?

由于配置Jupyter服务器需要用到“端口号”这个概念,而不少初学者对这个概念并不了然,下面我们简单介绍一下这个概念。(对这部分知识熟悉的读者,可以跳过本小节)

我们知道,所有混迹于互联网江湖的机器,都必须有唯一的“身份证号码”,那就是IP地址。而所谓的域名(如www.google.com等),就好比我们是我们的“姓名”,他们不过是IP地址的一种外在的、便于记忆的映射而已,并不是必需的。

每个IP地址对应的机器里,都会安装若干应用程序(如迅雷、Foxmail、Jupyter等),或提供各种服务(如TCP/IP、UDP、SSH等)。我们知道,在本质上,服务的载体还是程序,不过是通常运行在后台罢了。

在网络中,机器之间免不了要打交道,也就是相互通信。倘若不能,孤立的节点不能成为网络节点的一员,那它的作用就大打折扣。在现代社会,一台『自娱自乐』的计算机,基本上毫无价值。

从表面上看,我们是在不同机器之间进行通信。而实际上,具体来说,是机器间不同应用程序或服务在相互通信。于是,问题来了,机器中安装这么多程序或提供这么服务,机器彼此之间是如何来区分这些程序或服务呢?

这就用到前面提到的端口号。

如果我们把IP理解为机器的“身份证号码”的话,那么端口号(port number),就是机器中某个应用程序或服务(application/service)的“二级身份证号”。

这就好比,如果邮差想把信件发送给某个大学的某位学生,如果仅仅提供这个大学的地址(如:AAA大学)是不够的。虽然,理论上,邮差自然可以把这个大学的所有大学生都轮询一遍,找到这位学生是没有问题,但大学生人太多,这种方法就太低效了。那能不能有更加便捷的方法,快速找到这位学生呢?

办法是有的。那就是给学生分配一个信箱,其号码比如说为8888。于是,邮差每次送信时,直接把信件送到“AAA大学:8888”对应的信箱就好,这个学生可以“适时(也就是说,不要求一定同步)”来取这个信就好。

当然,并不是每个学生都会有自己的信箱号的。

同样,计算机中也不是每个程序或服务都需要一个端口号。通常,专注于为本地服务,并不需要外界提供协助的程序,如Word,Excel,Vim等应用,就不必给他们分配一个端口号,而提供网络服务的程序,通常分配有一个端口号。图2 端口号示意图

通常来说,一些流行的网络服务或应用,早都有了“约定俗成”的端口号。

例如,HTTP服务的端口号为80。访问网站时,虽然我们并没有在URL地址上显式添加这个端口,但协议中已经隐含了默认的端口80,如图2所示。

还例如,HTTPS服务默认的端口号为443/TCP, 443/UDP,Telnet端口号为23。SSH(安全登录)、SCP(文件传输)默认端口号为22/TCP。FTP端口号为21,SMTP端口号为25。数据库SQL Server默认端口为1433,MySQL默认端口3306,TOMCAT,默认端口号为8080,诸如此类。

2.设置端口号的原则

端口号的设置的规则通常是这样的:其他应用程序(特别是主流的协议)已经占用的端口号,我们就不要『鸠占鹊巢』了,以免发生冲突。这就好比,你用了别人的信箱号,难免就会把别人的信送到你的信箱之中。

有时候,我们并知道其他应用程序开启了什么端口号,为了避免冲突,『后起之秀』的应用程序(如Jupyter)通常采用比较不常见的4位长度编号,如图1所示的『8888』。当然,我们也可以利用『9999』之类的4位编号,只要尽量不和其他程序冲突就好。

有了端口号,外部机器就能『有的放矢』的精准地找到通信载体(各类通信软件或服务协议)。这为网络通信打下了坚实基础。

掌握了这个预备知识,为搭建Jupyter服务器,迈进了坚实一步。

接下来,我们将讨论一下,如何远程登录服务器,并如何在一台Linux裸机上创建Jupyter服务器专用的账号。

使用域名访问远程jupyter_如何设置远程访问的Jupyter Notebook服务器-01(之预备知识:什么是端口号?)...相关推荐

  1. python远程创建linux用户_如何设置远程访问的Jupyter Notebook服务器-02:如何创建Linux用户?...

    (这是一篇面向零基础读者的教程) 在铺垫了端口号的预备知识之后,下面我们讲讲搭建Jupyter服务器的另外一个前置工作--如何创建Linux用户. 下面我们的实验环境默认为CentOS 7.事实上,即 ...

  2. Windows配置远程访问的Jupyter Notebook服务器

    Windows配置远程访问的Jupyter Notebook服务器 jupyter notebook --generate-config jupyter notebook jupyter notebo ...

  3. 使用域名访问远程jupyter_使用域名访问远程jupyter_使用金万维宽带通动态域名服务实现速达3000异地访问......

    这两天,有一个之前使用金万维异速联的客户,需要实现异地访问速达3000软件,本来是准备用异速联加用户的方法,但是基于考虑到速达软件没法通过远程桌面多开的情况,我们建议客户使用金万维宽带通动态域名解析服 ...

  4. mysql5.7.6允许远程_mysql5.7 设置远程访问

    mysql5.7设置远程访问不是和网上说的一样建个用户赋个权限就可以访问的.比如下边这个就是建用户赋权限,可能在之前的版本可以,但是我在我的mysql上一直不行.为此烦了好久!!!项目都耽误了!! 一 ...

  5. nginx必须使用域名访问的两种设置方法

    nginx默认允许使用IP直接访问http服务. 如果没有指明,切nginx设置了多个站点,会自动指向第一个加载的server. 如果需要限制必须使用域名访问可以按如下方法设置. 方法1: 在第一个加 ...

  6. 搭建3款远程开发环境:Pycharm、Jupyter notebook以及code-server

    由于疫情人们对远程办公的渴望达到了巅峰.但在经历了多次试错与崩溃后,才发现能有一款与自己合拍的远程编程工具是多么的重要啊! 很多花费半天时间的事情,也许10分钟就能轻松搞定.本文就为大家介绍3个能在1 ...

  7. python 访问sas 逻辑库_SAS岩论 | 在Jupyter Notebook中使用SAS

    原标题:SAS岩论 | 在Jupyter Notebook中使用SAS 在Jupyter Notebook中使用SAS Jupyter Notebook目前已成为绝大多数编程人员首选的工具.尤其是学习 ...

  8. linux如何查看jupyter日志_Mac如何远程连接上Linux下的jupyter notebook

    1.安装anaconda--准备开始工作: 1)在本机上下载anaconda,官网地址:https://www.anaconda.com/down... 选择Linux版本进行下载 2)打开Final ...

  9. 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2 更改端口 连接字符串 IP+逗号+端口号...

    1.先修改 sql server 2008R2的端口号吧,1433经常成为别人入侵的端口,在sql server 配置管理器 -->sql server 网络配置-->MSSQLSERVE ...

最新文章

  1. Ubuntu安装 到移动硬盘--操作系统随身携带
  2. python中的引用_Python中的引用
  3. python读文件代码-简单了解Python读取大文件代码实例
  4. 原码、补码、反码详解
  5. 在win8下安装使用java及在win8下部署java环境变量-图文
  6. 【java笔记】成员内部类 局部内部类 匿名内部类
  7. python怎么用pandas查找指定字符串_Python Pandas:通过搜索子字符串查找表
  8. php合并两个有序链表,合并两个排序的链表
  9. 基于感知器准则的线性分类器设计
  10. (译)Xposed Helpers
  11. 笔记本计算机怎么进入安全模式启动,笔记本电脑如何进入安全模式
  12. 关于idea无法使用搜狗输入法打出汉字的解决方案(转)
  13. 自成一派的风格楷体字体
  14. 如何用zbrush雕刻布料和褶皱
  15. 第六周作业--需求建模
  16. 【2019-游记】中山纪念中学暑期游Day5
  17. matlab复杂函数多元函数拟合
  18. 四面阿里Java高级研发岗,定级P7:数据结构+分布式+JVM+线程
  19. 大b和小b的区别是什么
  20. UVM virtual interface errors

热门文章

  1. python入门指南by许半仙-Python入门指南 作者:许半仙(4)
  2. 执行rm -rf /效果
  3. android设置图片 透明度渐变效果,android 自定义属性实现 ImageView 透明度渐变效果...
  4. 计算机毕设Python+Vue医疗健康查询系统(程序+LW+部署)
  5. 【Linux】/etc/issue、/etc/issue.net和/etc/motd的区别
  6. 痞子衡嵌入式:串口调试工具pzh-com诞生记(6)- 打包发布(PyInstaller3.3.1)
  7. [渝粤教育] 西南科技大学 建筑工程定额与预算 在线考试复习资料2021版(2)
  8. Spark学习-DAY2
  9. 前端学习------眼球跟踪效果
  10. 【笔记】理解黑天鹅,应对不可预知的未来