阿里云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:端口


本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

Python 使用 SMTP 发送邮件 上一篇
如何学Python 下一篇