安装 Anaconda 3
下载并尝试第一次安装 Anaconda3
在 Anaconda installer archive 中找到自己想要安装的版本地址。
在 home 文件夹下新建 download 文件夹,并下载 Anaconda。
下载完成后用 bash 命令安装。
确认同意协议,并接受默认安装位置 /root/anaconda3。
出错:bzip2 命令未安装
提示 Anaconda3-5.3.1-Linux-x86\_64.sh: line 353: bunzip2: command not found。
用 yum 安装:yum -y install bzip2.x86\_64。
重启安装
安装未完成,重新开始前删除之前生成的文件夹:rm -rf \root\andaconda3。
等待安装完成。
允许安装程序将自启动命令添加到 .bashrc,并允许安装自带的 VSCode,安装位置在/usr/share/code。
若之后更改使用其他 shell,记得添加环境变量export PATH=/你的安装路径/anaconda3/bin:$PATH。
重新加载 bashrc:source ~/.bashrc。
配置 Jupyter Notebook
参考这篇文章 VPS上搭建Python3+Jupyter Notebook 进行配置。
生成 notebook 密码
ipython
from notebook.auth import passwd
passwd()
输入并确认密码,则生成了一串加密码sha1:......。
生成 Jupyter Notebook 配置并修改
配置位置:Writing default config to: /root/.jupyter/jupyter\_notebook\_config.py
需要修改的配置如下:
c.NotebookApp.allow_origin = '*'
# 仅仅是域名之后添加一个字段,和具体的文件夹无关
c.NotebookApp.base_url = '/jupyter'
c.NotebookApp.certfile = '/加密文件地址/cert.pem' # 另外,后续配置 Juno 需要使用 Juno 生成的私钥,而不是网站的。
c.NotebookApp.ip = '127.0.0.1'
c.NotebookApp.keyfile = '/加密文件地址/cert.key' # 另外,需要使用 Juno 生成的服务器证书。
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:aa93……'
c.NotebookApp.allow_remote_access = True
c.NotebookApp.trust_xheaders = True
配置 Apache 服务器
参考这篇文章 Install a Jupyter Notebook Server on a Linode Behind an Apache Reverse Proxy 进行配置。
配置 Jupyter Notebook 的端口(反向代理)
安装 lsof
查询端口占用情况:lsof -i:80
在Apache服务器上安装SSL证书
可以将从阿里云SSL证书控制台下载的证书安装到您的Apache服务器上,使Apache服务器支持HTTPS安全访问。
发现阿里云已经自动配置好了。
开启 Apache 必要的模块
找到本机的 Apache 位置,并打印版本信息。
cd /usr/local/apache/bin
./apachectl -V
Server version: Apache/2.4.27 (Unix)
Server built: Aug 4 2017 01:09:19
Server loaded: APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: worker
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT= "该处是默认路径"
-D SUEXEC_BIN="---"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="该处是相对路径,指示配置文件地址"
我在 ~/.zshrc 中定义了一个别名,alias apa="\some\dir\httpd"。
a2enmod/a2dismod允许你配置apache的一个模块,启用或者禁用。a2enmod是一个方便的工具,a2enmod是属于apache2.2-common包下的一个工具。但是 Debian 系的命令,CentOS 下没有。手动修改配置文件开启模块。
- mod_proxy
- mod_proxy_http
- mod_proxy_wstunnel
- mod_ssl
- mod_headers
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
列出 Apache 现在开启的模块:apa -t -D DUMP\_MODULES。多出了两个模块:
proxy_http_module (shared)
proxy_wstunnel_module (shared)
配置 Apache Virtual Host 虚拟机
参考这篇文章 CentOS7配置Apache Virtual Host虚拟机 进行配置。
CentOS 7 要设置 Apache Virture Host 首先要创建 sites-available 文件夹保存虚拟机的配置文件,同时创建 sites-enabled 文件夹启用配置的虚拟机,在 sites-enabled 中启用的虚拟机的配置文件是 sites-available 文件夹中虚拟机配置文件的符号链接。
1)创建保存虚拟机配置文件的文件夹:
sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled
2)使 Apache 加载 sites-enabled 中配置的 Apache 虚拟机
在 /usr/local/apache/conf/extra 中的 httpd-vhosts.conf 中,已定义了 WordPress 的服务器,我的 Jupyter 还是定义在刚刚新建的文件夹里,需要 Include 一下。
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
在 sites-available 中创建配置文件:
<VirtualHost *:443>
ServerAdmin admin@localhost
DocumentRoot "/home/jupyter"
SSLCertificateFile /加密文件地址/cert.pem # 另外,后续配置 Juno 需要使用 Juno 生成的私钥,而不是网站的。
SSLCertificateKeyFile /加密文件地址/cert.key # 另外,需要使用 Juno 生成的服务器证书。
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ServerName localhost
ProxyPreserveHost On
ProxyRequests Off
LogLevel debug
ProxyPass /jupyter https://localhost:8888/jupyter
ProxyPassReverse /jupyter https://localhost:8888/jupyter
RequestHeader set Origin "https://localhost:8888"
Redirect permanent / https://your-domain-name/jupyter
<Location "/jupyter/api/kernels">
ProxyPass wss://localhost:8888/jupyter/api/kernels
ProxyPassReverse wss://localhost:8888/jupyter/api/kernels
</Location>
</VirtualHost>
建立软连接 ln -s /etc/httpd/sites-available/jupyter.conf /etc/httpd/sites-enabled/jupyter.conf
重启 Apache 服务器 apa -k restart
提示错误 Invalid command 'Redirect', perhaps misspelled or defined by a module not included in the server configuration
原因是未启用 alias 模块。
编辑配置文件 httpd.conf:
LoadModule alias\_module modules/mod\_alias.so
访问域名 https://myip/jupyter,被拒绝访问:
Blocking request with non-local 'Host' myip.
If the notebook should be accessible at that name, set NotebookApp.allow_remote_access to disable the check.
更改配置文件:
再次访问,成功连接,到达输入密码的界面。
最后用nohup命令启动notebook,确保ssh关闭后服务在后台继续运行。
创建 alias :alias jn="nohup jupyter notebook --allow-root &"
其他
用详尽格式查看所有进程,并用关键词筛选:ps -ef | grep keyword
强制杀死进程:kill -9 PID
几个配置文件的位置:
jupyter notebook: ~/.jupyter
reverse proxy: /etc/httpd/sites-enabled
apache: /usr/local/apache/conf
为 Jupyter Notebook 安装插件
conda install -c conda-forge jupyter_contrib_nbextensions
conda install -c conda-forge jupyter_nbextensions_configurator
UPDATE: 2019-04-20 00:37:33
配置 iPad 上的 Juno,以及为 Chrome 添加证书
生成自签名证书
参考 Juno 官方文档 Running a notebook server with SSL 。
保存 CA 证书到云端,并在 iPad 上安装并信任。
在 Chrome 设置中导入此证书,重启之后可信任。
更改 Jupyter Notebook 和 Apache 的配置
之前,SSL 连接使用的是阿里云生成的网站私钥及证书。为 Jupyter Notebook 建立的 Virtual Host 虚拟服务器不必要使用网站的私钥,若需要,可另外生成,即 Juno 的私钥及证书。
首先,编辑 Apache 的虚拟服务器设置,监听端口 443 以及设置了反向代理。
其次,编辑 Jupyter Notebook 的配置,使其启动时使用 Juno 的私钥及证书。
到此,浏览器可以信任方式访问,并且,iPad 上的 Juno 亦可建立信任连接访问服务器上的 Notebook。
注意,在设置证书的时候出过错,csr 文件只是中间文件,keyfile 才是那个有用的文件。
CA 证书相关知识
此图片来自于上面第三篇文章。

