2018年5月24日

阿里云Centos7下搭建Jupyter Notebook服务(亦可自建外网访问)

网上安装教程鱼龙混杂,多数都有莫名其妙的坑无法走通,因此记录一下配置过程。
Jupyter Notebook仅可同时一人使用,多人使用会同时修改一个文件;多人使用请关注JupyterHub
自建外网访问需要路由支持公网IP+映射端口,否则请使用Holer直接转发

已经过测试的系统有:
CentOS7 64位
Redhat Enterprise Linux6 64位
如果这篇文章能帮您成功完成安装,请您留言告知您的系统环境~
如遇到问题更欢迎留言~


在阿里云购买ECS服务器不多说,设置系统密码,并登陆进系统

第一步:安装SSH(可跳过)

阿里自带的浏览器控制延迟很大,体验极差
我选择使用SSH并用Putty登陆

CentOS中安装并启动SSH

rpm -qa |grep ssh   #查看SSH是否安装
yum install openssh-server  #安装SSH
service sshd start  #启动SSH服务,stop为停止
netstat -antp |grep sshd  #查看是否启动22端口,会显示一条在22端口监听的信息
iptables -nL  #看网络策略是否禁止了22端口,不显示为成功
chkconfig sshd on #设置SSH服务为开机启动

下载Putty并连接CentOS

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

连接并测试

为了安全起见,修改SSH服务端口

vim /etc/ssh/sshd_config 

找到“#Port 22”修改为
Port 22
Port 20000
注意去掉#
即保留22端口,同时增加20000端口

重启服务

service sshd restart

修改安全策略

在阿里云-云服务器 ECS-安全组-配置规则-快速创建规则
自定义端口 TCP 20000
授权 地址段访问 0.0.0.0/0

连接并测试

若成功,则删除安全策略中22端口的配置,删除sshd_config中的22端口

第二步:安装Python3(亦可以安装miniconda)

查看系统信息

查看自带Python版本,得到Python2.7.5

python

查看Python安装路径,得到位于/usr/bin/python目录下

which python

由于centos7原本就安装了Python2,且有很多系统命令使用Python2,因此不删除Python2。
同时为了使用Tensorflow,Jupyter服务基于Python3安装。

安装基础依赖环境

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

下载

浏览器打开 https://www.python.org/ftp/python/ 查看寻找Python版本,由于Tensorflow还不支持Python3.6版本,因此安装Python3.5.4

wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz

创建Python3的目录

mkdir /usr/local/python3 

解压下载文件并进入解压后目录

tar -zxvf Python-3.5.4.tgz
cd Python-3.5.4

执行自定义安装

./configure --prefix=/usr/local/python3
make && make install

创建软链接

ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

测试命令

python3
pip3

第三步:安装Jupyter

更新pip

pip3 install --upgrade pip

安装Jupyter同时会安装IPython和notebook

pip3 install jupyter

查看python3的安装路径,应该在/usr/local/python3

cd /usr/local #跳转目录
ls #查看文件列表

创建软连接,否则会出现juptyer command not found

ln -sv /usr/local/python3/bin/ipython /usr/bin/
ln -sv /usr/local/python3/bin/jupyter /usr/bin/

创建Jupyter配置文件,生成在/root/.jupyter/jupyter_notebook_config.py

jupyter notebook --generate-config

打开配置文件

cd /root/.jupyter/
vim jupyter_notebook_config.py

进行如下修改

注意去掉前面的#
c.NotebookApp.port = 20006
c.NotebookApp.ip = ‘你的服务器公网IP’ #或填”*”允许ip访问
c.NotebookApp.open_browser = False
修改Jupyter文件默认存储路径
c.NotebookApp.notebook_dir = ‘/opt/’

vim操作教程
输入i进入编辑模式,按esc键退出编辑模式
输入:/xxx 查找xxx
输入:wq 保存退出

(非必须)使用Jupyter打印日志较多时会报 IOPub data rate exceeded 错误,因为日志打印太快可能导致客户端崩溃,但很不方便,因此做一下修改:
iopub_data_rate_limit = 100000000 #去掉注释并且将后面的限制值多加几个0

(非必须)当使用conda作为包管理器时,需要notebook支持在多个不同环境间切换。输入命令安装nb_conda,之后启动notebook即可看到kernels的切换功能。

conda install nb_conda_kernels

设置登录密码

jupyter notebook password

后台启动 notebook

(nohup jupyter notebook --allow-root --ip=0.0.0.0 > deep.log &)
按两次回车即可
#"nohup", 即 “nohup ./myjob &”,忽略hangup信号,防止shell关闭时程序停掉

查看Jupyter日志

cat deep.log

修改安全策略

在阿里云-云服务器 ECS-安全组-配置规则-快速创建规则
自定义端口 TCP 20006
授权 地址段访问 0.0.0.0/0

连接并测试

在浏览器输入 公网ip:端口

Share

You may also like...

3 Responses

  1. sherry说道:

    太感谢了,其他的教程好多坑,这是见过最完整的教程了。点赞

  2. zlh说道:

    原先阿里云的centos7.4都是可以正常运行的,可是昨天重置系统之后,jupyter就有异常了,不能执行代码,一直in[*]
    deep.log 日志报错:
    [I 12:25:16.194 NotebookApp] Kernel started: 96e3d41e-3b63-4a56-844c-a1e5d5e63d5e
    Traceback (most recent call last):
    File “/usr/local/python3/lib/python3.6/runpy.py”, line 193, in _run_module_as_main
    “__main__”, mod_spec)
    File “/usr/local/python3/lib/python3.6/runpy.py”, line 85, in _run_code
    exec(code, run_globals)
    File “/usr/local/python3/lib/python3.6/site-packages/ipykernel_launcher.py”, line 15, in
    from ipykernel import kernelapp as app
    File “/usr/local/python3/lib/python3.6/site-packages/ipykernel/__init__.py”, line 2, in

    from .connect import *
    File “/usr/local/python3/lib/python3.6/site-packages/ipykernel/connect.py”, line 13, in

    from IPython.core.profiledir import ProfileDir
    File “/usr/local/python3/lib/python3.6/site-packages/IPython/__init__.py”, line 55, in

    from .terminal.embed import embed
    File “/usr/local/python3/lib/python3.6/site-packages/IPython/terminal/embed.py”, line 16, in

    from IPython.terminal.interactiveshell import TerminalInteractiveShell
    File “/usr/local/python3/lib/python3.6/site-packages/IPython/terminal/interactiveshell.py”, line 20, in

    from prompt_toolkit.formatted_text import PygmentsTokens
    ModuleNotFoundError: No module named ‘prompt_toolkit.formatted_text’
    随后尝试pip3装prompt_toolkit,但是提示已经存在

发表评论

您的电子邮箱地址不会被公开。