Last updated on:February 18, 2023 pm

在自己的云服务器上搭建Jupyter-Notebook服务器有以下几个好处:

  • 充分利用云服务器的计算和存储资源
  • 统一代码环境和数据集(在不同终端机器上构建的环境是可能不一致的)
  • 能够随时随地访问(只要ECS还没过期&你的机器能上网)

1 环境搭建

1.1 安装Python

虽然阿里云的Ubuntu 18.04 云服务器是自带python2.7和python3.6的,但我还是选择**安装miniconda3(官网)**,理由如下:

  • anaconda便于管理多版本且隔离的python环境(除此以外virtualenv和pyvenv也可,但管理方式不如conda)
  • miniconda比anaconda轻量,它仅包含conda和python和少量依赖包与软件包
# 从官方站点下载速度较慢,可从国内镜像站下载miniconda3-py38 64-bit
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh

# 添加当前用户可执行权限
chmod u+x ./Miniconda3-py38_4.9.2-Linux-x86_64.sh

# 执行安装脚本,依照提示完成安装
./Miniconda3-py38_4.9.2-Linux-x86_64.sh

# 添加环境变量(非zsh用户),若你正在使用zsh请将/etc/profile替换为~/.zshrc
sudo echo "export PATH=$PATH:/home/$USER/miniconda3/bin" >> /etc/profile & source /etc/profile

完成miniconda3的安装之后,需要使用update-alternatives配置多版本Python的优先级,将conda的python3.8设为默认python:

# 查看是否已经建立了python的alternative管理,若无则创建
sudo update-alternatives --config python

# 依次创建自带python2,python3以及miniconda3的python3的alternatives管理,最后的数字为优先级,越大越高
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python python /home/$USER/miniconda3/bin/python3 3

1.2 安装Jupyter

在命令行中输入python -Vpip -V 确认能够看到正在使用miniconda3的python和pip

# pip换国内源以提速,在~/.pip/pip.conf中添加以下内容,文件不存在则创建
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

# 安装jupyter
pip install jupyter

2 配置Jupyter-Notebook

2.1 配置登陆密码

为了保障远程访问云服务器Jupyter服务的安全性,我们需要为notebook设定密码。(该密码会在登陆Jupyter服务时要求用户输入,若与服务器上存储的hash值匹配则放行)

以下是借助IPython.lib中的passwd函数来生成密码的sha1 code:

Python 3.8.5 (default, Sep  4 2020, 07:30:14)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from IPython.lib import passwd
>>> passwd()
Enter password:
Verify password:
'sha1:..............YOUR-HASH-CODE....................'
>>>

2.2 生成配置文件

# 生成 /home/$USER/.jupyter/jupyter_notebook_config.py 配置文件
jupyter notebook --generate-config

由于该配置文档的所有内容均默认注释,因此可以把我们自己的配置集中追加到文尾:

#--------------------------------------------------------------------------
# User configuration
#--------------------------------------------------------------------------
c.NotebookApp.ip = '*'                               # notebook监听的IP
c.NotebookApp.port = 8888  							 # notebook监听的端口
c.NotebookApp.notebook_dir = '/path/to/project-dirs' # notebook的工作目录
c.NotebookApp.open_browser = False                   # 运行notebook服务时不打开浏览器
c.NotebookApp.password = u'sha1:c63cf.....45b09bed'  # 密码的hash 值

注意:notebook_dir即为notebook的/,因此为了保证安全性,请将notebook的工作目录设为非重要目录,如你可以创建一个~/jupyter-projects

完成配置之后可以启动notebook并访问啦:

# 使用jupyter-notebook也是一样的
jupyter notebook

# 或者更优雅一点
nohup jupyter notebook >> ~/.notebook.log 2>&1 &

注意:记得在云服务器控制台的安全组中配置规则放行notebook监听的8888端口

2.3 撰写systemd服务脚本

将以下内容写入/usr/lib/systemd/system/notebook.service,若目录不存在则手动创建

[Unit]
Description=My notebook service
After=network.target

[Service]
#Type=simple  # default simple
User=qgrain
Group=qgrain
ExecStart=/home/qgrain/miniconda3/bin/jupyter-notebook
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

然后配置notebook.service自启动

sudo systemctl enable notebook
sudo systemctl [start|stop|restart|status] notebook

3 主题美化⭐

3.1 安装jupyter-themes

参考Git开源项目:jupyter-themes

# 安装jupyter-themes
pip install jupyter-themes

# 更新jupyter-themes至latest
pip install --update jupyter-themes

3.2 配置主题

jupyter-themes有以下几条关键命令,具体Usage请见其git仓库的README:

# 查看所有主题
jt -l

# 将主题配置为monokai
jt -t monokai

# 我的配置命令如下,这样的notebook界面极其舒适 ヾ(´▽`)
jt -t monokai -f roboto -fs 12 -nfs 14 -tfs 13 -ofs 11 -dfs 10 -cellw 66% -T -N -kl

其中参数含义依次为设置主题为monokai,设置代码字体为roboto,设置代码字号为12,设置notebook字号为14,设置文本/Markdown字号为13,设置输出字号为11,设置Pandas Dataframe字号为10,设置cell宽度为屏幕的66%,设置Toolbar可见,设置Name&Logo可见以及设置Kernel Logo可见

具体界面效果如下(当然,passwd我为了测试,输入的是123):

4 参考

[1] Ming’s Blog | 搭建 ipython/jupyter notebook 服务器

[2] Zhiyu’s Blog | 编写systemd服务脚本

[3] 知乎 |【内容引起舒适】让你的Jupyter Notebook不再辣眼睛


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

KVM虚拟机的四种网络模式 Previous
KVM的安装与使用 Next

 TOC

载入天数... 载入时分秒...