在服务器端升级python并安装Jupyter

最近突发奇想,想在腾讯云上安装Jupyter,看了看过程还是比较麻烦的,因为服务器用的centos版本比较老,现在Jupyter支持的python版本都比较新,所以首先要做的就是升级python。

升级python

首先要在服务器上准备编译环境,大概也就是gcc之类的,然后服务器上下载python源码:

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

下载完成之后就可以对论文进行解压。

1
2
tar -vxf Python-3.6.1.tgz
cd Python-3.6.1

在解压完成之后先不要着急进入目录进行编译,因为我在解压后就直接进行编译安装,结果后来出现了错误,又重新返工,得不偿失。
先安装如下内容,否则python一些包无法使用。

1
yum install zlib-devel openssl-devel sqlite-devel

还需要修改一个文件:

1
vi ./Modules/Setup

找到#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz这一行,去掉前面的注释,保存退出。
之后执行:

1
./configure --prefix=/opt/python3.6.1

程序检查完成后,就可以编译安装了。

1
make && make install

安装完之后python命令还是不可用的,需要将原先的软连接替换掉。

1
2
mv /usr/bin/python /usr/bin/python2
ln -s /opt/python3.6.1/bin/python3 /usr/bin/python

执行完之后,输入python应该就可以正常使用了。但是现在yum命令应该失效了。

1
vi /usr/bin/yum

需要修改头部的#!/usr/bin/python为:#!/usr/bin/python2就可以使用yum命令了。
现在就需要对pipeasy_install的软连接进行修改,如果没有安装pip命令的,可以使用下面的命令进行安装:

1
2
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

安装完成之后可以使用whereis pip查找pip的安装位置。
之后进行pip软连接的替换。

1
ln -s /opt/python3.6.1/bin/pip3 /usr/bin/pip

easy_install也是相同的原理。

安装anaconda

anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,现在Jupyter官方文档中写明推荐使用anaconda进行Jupyter的安装。
首先在anaconda的下载页面
下载anaconda的安装脚本。这个文件有点大,下载起来需要较长的时间。在选择下载文件的时候注意区分操作系统的位数。
下载完成之后执行bash Anaconda3-4.3.1-Linux-x86_64.sh就可以自动进行安装了。

在服务器端安装Jupyter

在这一部分我主要是参考的Jupyter的官方参考文档
首先在装完anaconda应该会自动安装了Jupyter,可以使用jupyter notebook看看Jupyter能不能正常运行,如果不能运行的话可以使用conda install jupyter进行安装,确保Jupyter能够正常运行后可以进行下面的步骤。

生成Jupyter的配置文件

在启动Jupyter的时候需要配置文件启动,所以首先要生成配置文件。使用命令jupyter notebook --generate-config自动生成配置文件,配置文件的目录应该是~/.jupyter

自动生成密码

因为是放在服务器上运行,所以不能被任意的人登录,所以需要配置密码。

1
2
from notebook.auth import passwd
passwd()

使用上面的函数可以自动生成密码,需要将生成的密码序列复制下来,进入到配置文件中修改。

1
c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'

生成ssl证书

因为Jupyter必须要用https进行登录,所以需要生成ssl证书。

1
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem

上面的命令可以自动生成证书,但是这个证书是不安全的,只能在测试过程中使用。
更改Jupyter的配置文件中的相关字段。

1
2
c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'

其他设置

1
2
3
4
5
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False

# It is a good idea to set a known, fixed port for server access
c.NotebookApp.port = 9999

设置运行的端口号还有ip地址。

安装Jupyter插件管理器

Jupyter中邮许多插件,有个插件管理器可以统一管理这些插件jupyter_contrib_nbextensions
安装也非常简单,使用命令conda install -c conda-forge jupyter_contrib_nbextensions就可以自动安装了,安装完成之后重启Jupyter就可以在浏览器中看到效果。

安装jupyterlab

目前这个项目还在测试过程中,它的目的是增强jupyter的编辑能力,使jupyter如IDE一般强大。
安装:conda install -c conda-forge jupyterlab
运行:jupyter lab

持久化运行

在网上看到很多教程是把Jupyter加入到Nginx服务器程序里面转发的,但是有点复杂,所以打算以后再弄,现在用个临时的持久化运行的方法来跑:

1
nohup jupyter notebook &

jupyter

Jupyter安装成功

jupyter

Jupyter插件管理器页面

一些常用的命令和内核网址

将命令行中运行的python改为2.7版本

1
source activate py27

MATLAB内核:https://github.com/calysto/matlab_kernel
Bash内核:https://github.com/takluyver/bash_kernel
查找jupyter进程

1
ps -ef|grep jupyter

杀死进程

1
kill -9 +进程号

本文作者:Qiu Qingyu
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 CN许可协议。转载请注明出处!
本文永久链接:http://qiuqingyu.cn/2017/05/15/在服务器端升级python并安装Jupyter/