(编辑:jimmy 日期: 2024/12/27 浏览:2)
本文示例环境:CentOS 7,远程服务器
可能的依赖:python; pip; python-devel; gcc; gcc-c++;
安装 setuptools
cd /tmp wget https://pypi.python.org/packages/69/56/f0f52281b5175e3d9ca8623dadbc3b684e66350ea9e0006736194b265e99/setuptools-38.2.4.zip#md5=e8e05d4f8162c9341e1089c80f742f64 # 具体下载地址可能变更,请参见官网:https://pypi.python.org/pypi/setuptools#downloads unzip setuptools-38.2.4.zip # 我下载的是 .zip 源码,所以用 unzip 解压 cd setuptools-38.2.4/ python setup.py install
再安装 pip
cd /tmp wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9 # 同样,具体下载地址参考:https://pypi.python.org/pypi/pip#downloads tar zxvf pip-9.0.1.tar.gz # 解压 cd pip-9.0.1/ python setup.py install
如果想用 python2:
python -m pip install --upgrade pip python -m pip install jupyter
如果报错:
………………………………
error: command 'gcc' failed with exit status 1
试试:
sudo yum install gcc gcc-c++ python-devel
再运行
如果想用 python3:
python3 -m pip install --upgrade pip python3 -m pip install jupyter
若jupyter 部署在远程服务器上,服务器防火墙开启时,端口可能不能访问,所以加一步端口开放
firewall-cmd --zone=public --add-port=8888/tcp --permanent success systemctl restart firewalld.service
注意:如果是腾讯云等云服务器,可能需要上官网管理平台,手动配置安全组开放端口才行
然后启动 jupyter
jupyter notebook --ip=* # root下换成:jupyter notebook --ip=* --allow-root
命令行显示:
打开浏览器,输入url: localhost:8888,回车,浏览器显示:
注意:在远程服务器上部署jupyter的要把 localhost 改成对应的 ip 地址
让你用token登录,把上面命令行反馈的 token (倒数第二行)复制过来输入,登录成功:
上述步骤创建的 jupyter notebook 是临时性的,没有配置密码、SSL、工作目录等等,不方便也不安全。下面为需要的用户建立专属的配置。
注意:下文中的例子在 root 账户下进行,建议实际不要用 root 用户。
如果服务器上你的账户下已有默认 jupyter 用户(的配置文件),可以直接拷贝一份,改个名字,比如:
cd /root/.jupyter cp jupyter_notebook_config.py jupyter_my_config.py
或者,直接自己找个任意目录,比如 /root/my_configs,直接创建一个新文件作为配置文件(反正就是个文本文件,放哪里都行):
mkdir /root/my_configs cd /root/my_configs touch jupyter_notebook_config.py
再或者,账户下未建立默认 jupyter 配置文件的情况下,可以自动生成:
jupyter notebook --generate-config
现在假设我们的配置文件是用最后一种方式创建的,我们进入目录看看
[root@VM_157_11_centos ~]# cd /root/.jupyter/ [root@VM_157_11_centos .jupyter]# ls jupyter_notebook_config.py [root@VM_157_11_centos .jupyter]#
打开 jupyter_notebook_config.py 文件:
vim jupyter_notebook_config.py
可以看到全是注释的配置说明,比较复杂,也不是都用得上,这里我们自己写一些重要的配置即可,在文件开头写入:
c = get_config() c.IPKernelApp.pylab = "inline" c.NotebookApp.ip = "*" c.NotebookAPp.open_browser = False c.NotebookApp.password = 'sha1:b39d2445079f:9b9ab99f65150e113265cb99a841a6403aa52647' c.NotebookApp.certfile = u'/root/.jupyter/mycert.pem' c.NotebookApp.port= 8888 c.NotebookApp.notebook_dir = "/root/ipython"
注意1:第五行 password 填入的是<登录密码的 sha1 加密版>,通过以下方式生成:
[root@VM_157_11_centos .jupyter]# python Python 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2 Type "help", "copyright", "credits" or "license" for more information. > from IPython.lib import passwd > passwd() Enter password: Verify password: 'sha1:175e8efe8974:eacef02a2e3f959d6efdf6c93d142c7f4712f5cc' > exit() [root@VM_157_11_centos .jupyter]#
注意2:第六行的 certfile 证书文件可以通过下面这行命令生成(中间的交互信息可以随便填),注意路径要对应上:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
注意3:第七行的 port 应该是一个未被占用的、被防火墙允许的端口(在上面的步骤我们已经打开了 8888 端口),这里再强调一遍(同样的,腾讯云等服务器需要在官网修改安全策略):
firewall-cmd --zone=public --add-port=8888/tcp --permanent success # 系统反馈信息 systemctl restart firewalld.service
注意4:第八行的 notebook_dir 是你的文档目录,需要自行选择并创建(否则运行时会报错):
mkdir /root/ipython
运行
[root@VM_157_11_centos .jupyter]# jupyter notebook --config jupyter_notebook_config.py --allow-root [I 19:58:54.278 NotebookApp] Serving notebooks from local directory: /root/ipython [I 19:58:54.279 NotebookApp] 0 active kernels [I 19:58:54.279 NotebookApp] The Jupyter Notebook is running at: [I 19:58:54.279 NotebookApp] https://[all ip addresses on your system]:8888/ [I 19:58:54.279 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 19:58:54.279 NotebookApp] No web browser found: could not locate runnable browser.
关于参数:–config 是可选的,默认会用 jupyter_notebook_config.py 文件,如果有多个用户配置文件(给多个用户分别提供 jupyter notebook),就必须要用这个命令了。–allow-root 是 root 用户启动 jupyter notebook 时的必须参数,实际上不建议使用 root 启动 jupyter notebook,最好还是用其他用户启动,这样在 浏览器端 cmd 窗口就不至于直接暴露 root 权限。
后台运行: 实际使用的时候我们当然会让 jupyter notebook 在后台一直运行着,即使我断开 ssh 连接之后也要可以通过浏览器访问。那也简单,用 nohup 命令就可以了:
nohup jupyter notebook --config jupyter_notebook_config.py --allow-root 2>&1 > my.log &
用该命令启动 jupyter notebook 之后,原先打印在屏幕上行的日志会写入到 my.log 文本文件中(该文件路径可以替换,当然完全不想要日志的话也可以重定向到 /dev/null)。
浏览器端的 url:https://localhost:8888
注意:localhost 可以替换成 ip/域名; https:// 不能丢,否则你会在服务器日志上看到下面的错误:
[W 20:39:48.439 NotebookApp] SSL Error on 10 ('58.59.67.94', 61845): [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:579)
[W 20:39:49.869 NotebookApp] SSL Error on 10 ('58.59.67.94', 61849): [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:579)
再注意:由于我们生成的 SSL 证书是非正式签发的,所以Chrome等浏览器可能会提示“您的连接不是私密连接”之类的风险问题,这里选“高级” – “继续前往”就好了。
正常进入主页
点击右上角的 New 就可以创建 notebook 文件,然后交互式的写程序了~
在主页中,我们可以 单击 New 然后创建 python 2 和 python 3 的 notebook 文件,但是实际上默认只有一个 python 2 的内核(上面用 python 2 安装的 jupyter),New 出来的 python 3 notebook 实际上还是 python 2 的,运行一下 “print 123”,不会报错(python 3 需要 print(123) )。
已有 python 2,安装 python 3内核:
python -m ipykernel install --user python3 -m pip install -U ipykernel python3 -m ipykernel install --user
这个时候再去主页,选择 python 3 时就可以用 python 3 的 kernel 了。
这里不定时记录一些用的时候遇到的问题,以及解决方法。
环境变量问题:如果在代码内修改了环境变量,需要重启 kernel 才能生效;
常驻内存既是优点也是缺点,长期不用的话要自己主动去把 Running 中的项 Shutdown;
待续。