终于“打造”出了一个可以随时随地编程的工具
这是老表 1 月的第 1 篇更文分享~记得关注我,坚持分享编程开发、数据分析、机器学习等学习笔记。
跟老表一起学云服务器开发相关文章(如果是第一次阅读该系列文章, 强烈建议先学习下面文章):
和不安全访问 Say goodbye,手把手教大家如何给域名申请免费 SSL 证书
一、前情回顾
上周开启了一个新的专栏(视频教程):跟老表学 Python,主要针对零基础小白,在第一集里包含了 6 个部分,从 Python 入门学习思路到环境、工具安装使用,其中最后一节讲了如何开启 jupyter 远程连接功能,实现随时随地编程。
视频教程是使用 windwos 系统演示的,本问将图文分享如何将自己的 Linux 服务器打造成一个随时随地可以访问和编程的平台。
本质过程是差不多的,使用 windows 的读者可以直接看视频教程(点击阅读原文直达/复制链接浏览器访问):点击观看
二、分享概要
系统:阿里云 ECS 共享型 n4 服务器 1 核 2g 存储 50g(双十一便宜买的,180 元/3 年)
环境:自带 python3.6.8 方便演示,直接使用它
三、开始动手动脑
首先我们需要连接上服务器,我直接使用宝塔面板登录,如果还不知道如何安装使用宝塔的读者可以看Linux里的宝塔,真正的宝塔!详细教程,直接通过宝塔连接上服务器后,点击终端
,即可进入服务器命令模式,进行操作。
3.1 安装 jupyter
3.2 生成 jupyter 配置文件
如上图显示,我的配置文件目录为:/root/.jupyter/jupyter_notebook_config.py
3.3 进入配置文件,修改配置
这里给大家推荐一个 Linux 下比 vim 更适合初学者的文件编辑工具:nano。
直接输入 nano + 需要修改的文件路径即可进入对应文件的编辑模式。
修改 host,设置为*,表示允许所有 ip 进行访问
修改远程访问设置,改为 True,表示允许远程连接访问
这时我们可以先进行保存文件,按ctrl+o
保存文件,然后按ctrl+x
退出编辑模式。
设置连接登录密码(远程连接需要 token,设置密码更简单)
终端输入下面指令进行设置密码:
设置好密码后,jupyter 会对密码进行 hash 加密,然后会以 json 格式存储到本地,我们需要打开密码文件,复制出密码对应的 hash 值,然后配置到 jupyter 的配置文件中。
复制出密码 hash 值后,我们再次打开 jupyter 配置文件,
按住ctrl+w
进入搜索模式,输入notebookapp.password
进行搜索,然后将复制好的密码 hash 值粘贴到对应位置即可,然后按ctrl+o
保存文件,然后按ctrl+x
退出编辑模式。
总共修改了三个配置,如下:
3.4 进入服务器后台,允许外部通过 8888 端口访问服务器
阿里云服务器是安全策略组,腾讯云服务器是防火墙,到对应位置添加端口即可。
进入服务器后台(以阿里云为例子),点击实例
->安全组
->配置规则
,即可进入。
入方向,点击手动添加,其他不管,主要输入端口范围:8888/8888
,授权对象:0.0.0.0
,然后保存即可。
3.5 终端启动 jupyter,尝试远程连接
如果出现下面错误,不慌。
第一个关于 ip 的警告我们不用管,主要是第二个不能使用 root 权限运行,我们可以按提示直接输入:
或者修改下 jupyter 的配置文件中的allow_root
为 True 即可。
再次输入jupyter notebool
即可成功启动 jupyter 服务,默认开启在 8888 端口。
我们本地可以通过:服务器公网ip:8888
进行访问,首先进入输入密码界面。
密码输入成后,即可进入到 jupyter 的首页(home 页面),默认是根目录(可以改)。
新建一个 ipynb 文件,随便输入点代码,nice。
电脑显示
ipad 横屏显示
手机横屏显示
3.6 后台设置守护进程,避免关闭终端后杀死进程
以我自己为例,我们登录宝塔面板后,进入/etc/systemd/system
文件夹下,新建一个jupyter_me.service
文件,并写入下面内容:
简单解释下Service
里设置的含义,Type=forking
表示程序启动后,会放到后台运行;ExecStart
服务的具体执行指令(执行 scheduler.py 文件即可);KillMode=process
表示服务停止的同时也会杀死程序主进程;Restart=on-failure
表示系统发生意外导致程序退出时,程序自动重启。
保存好文件后,我们直接终端内执行下面指令即可开启进程守护,运行后会进入守护进程状态,我们可以按 ctrl+c 退出,不会影响守护进程:
如果不确定是否启动成功,可以通过下面命令查看对应进程状态。
如果不想设置这个守护进程了,执行 stop 指令可以停止该 service(程序也会停止),指令如下:
3.7 关于 jupyter 的其他配置修改
jupyter 首(Home)页对应的目录(默认为用户根目录)
启动 jupyter 的同时是否自动浏览器打开(默认开启),我们在 linux 下使用,就可以设置为 False。
jupyter 默认启动在哪个端口(默认 8888),可以修改成自己想要的,默认值大家都知道,容易被攻击。
使用 SSL 进行加密通信,更安全
另外,为了更安全的进行远程连接访问、使用 jupyter,我们可以给其使用 SSL 进行加密通信,确保数据传输更安全。
我们需要先生成证书(和给服务器配置证书一样),你可以看看
和不安全访问 Say goodbye,手把手教大家如何给域名申请免费 SSL 证书
按官网提示,我们也可以直接使用 openssl 去创建自签名 SSL 证书。
我这边 Linux 下是自带 openssl 的,如果没有,你可以直接使用yum install openssl
进行安装。
创建一个目录存放证书,然后输入创建自签名 SSL 证书的指令,按要求输入国家、省、城市、公司、部门、常用名、邮箱即可。
生成好证书后,我们需要修改下 jupyter 配置文件,首先进入:
找到certfile
和keyfile
,写入对应文件的路径即可。
理论上,我们再重启下 jupyter 守护进程(重启服务),就可以了。
但是我本地访问https://公网ip地址:8888
,却显示不是私密连接。。。
然后关了守护进程,直接服务器启动 jupyter,再访问,看日志显示SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN
,查了下,说是证书问题?改成之前申请的证书也不行,我再研究研究,下次聊!
欢迎大家有了解的读者进行学习交流,一起进步。
下期预告
之前说的钉钉企业机器人自动回复配置,也有读者在催稿了,最近两天安排上哦~
好的,那么下期见,我是爱猫爱技术,更爱思思的老表⁽⁽ଘ( ˙꒳˙ )ଓ⁾⁾
版权声明: 本文为 InfoQ 作者【老表】的原创文章。
原文链接:【http://xie.infoq.cn/article/193b7b25c76e5f3126b2447cb】。文章转载请联系作者。
评论