- 安装Jupyter 包:
conda install jupyter
- 由于ipython Notebook要求https连接,因此我们需要创建一个ssl证书(该证书没有认证):
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
- 命令执行后根据提示输入信息就好,接下来我们创建一个密文的密码(官网提供了一个产生密码的函数:notebook.auth.security.passwd):
python -c "import IPython; print(IPython.lib.passwd())"
#原文是Python3以前的语法
- 运行之后进入一个创建密码hash 值的小程序,根据提示输入你想用的安全口令:
Enter password:
Verify password:
sha1:.. # 保存下来,下面有用
- 获取默认配置地址(如果没有则创建配置文件):
jupyter notebook --generate-config
- 进入上面的地址,修改文件jupyter_notebook_config.py ,添加内容:
c = get_config()
# 所有matplotlib的图像都通过iline的方式显示
c.IPKernelApp.pylab = 'inline'
# 这一行指向我们刚刚创建的ssl证书
c.NotebookApp.certfile = u'/home/..../mycert.pem'
# 给出刚刚创建的密码的哈希值
c.NotebookApp.password = u'sha1:....... '
c.NotebookApp.ip = '*'
# 给出运行的端口,ipython默认为8888
c.NotebookApp.port = 8888
# 禁止在运行ipython的同时弹出浏览器
c.NotebookApp.open_browser = False
( 有问题,手动修改.py配置文件来配置密码不会修改jupyter_notebook_config.json配置文件,而.json的优先级高于.py配置文件,因此不能达到更改密码的目的 ,会造成登陆密码错误的问题。解决办法在下面)
配置完毕以后就可以运行ipython Notebook的服务端了:
jupyter notebook
通过提示,在浏览器中输入黄色的地址(注意更改IP),访问服务器端,输入密码即可登陆。
密码没有修改的问题解决
运行下面命令,重新设置密码(该方法会修改.json和.py配置文件, 以后想更改jupyter notebook的密码也可以使用该命令。)
jupyter notebook password
在运行时指定配置文件(只需运行一次即可更新.json配置文件,后面再运行时不用添加路径信息)
jupyter notebook --config = /home.../ipython_notebook_config.py
# .py配置文件的路径
后台运行
在云服务器中搭建好jupyter并运行后, 发现它会占用当前终端, 于是研究了一下怎么让它在后台运行.
- 入门级
jupyter notebook --allow-root > jupyter.log 2>&1 &
- 进阶版
nohup jupyter notebook --allow-root > jupyter.log 2>&1 &
解释
用&让命令后台运行, 并把标准输出写入jupyter.log中
nohup表示no hang up, 就是不挂起, 于是这个命令执行后即使终端退出, 也不会停止运行
后台运行程序
- command & 直接在后台运行程序
- ctrl+c 退出前台的命令,不再执行
- ctrl+z 挂起前台命令暂停执行,回到shell命令行环境中
- bg 将刚挂起的命令放到后台运行
- bg %3 将第三个job放到后台运行
- kill %3 杀死第三个job,不再执行
- fg 将刚挂起的命令返回前台运行
- fg %3 将第三个job返回前台运行
- jobs 察看当前shell下运行的所有程序;带+表示最新的jobs;带-表示次新的jobs;其他jobs不带符号
- nohup=no hang up,不挂断,如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程.长命令必须写在shell文件中,否则nohup不起作用
- nohup command & //该命令的一般形式
- nohup command > myout.file 2>&1 & //log输出到myout.file,并将标准错误输出重定向到标准输出,再被重定向到myout.file