树莓派闲着也是闲着,现在宿舍不断网了,不如在上面跑个 Jupyter 当演草本。
安装 FRP
首先,在这里获得 frp
的安装包。树莓派对应 -linux_arm
包,而服务器则对应 -linux_amd64
包。
下载完成后解压,得到 frps
和 frpc
以及其对应的 .ini
文件。
配置服务器
服务器使用 frps
. 编辑 frps.ini
, 写入如下内容并保存:
[common]
bind_port = xxxx
dashboard_port = xxxy
dashboard_user = username
dashboard_pwd = password
token = token
vhost_http_port = xxyy
当然等号后面的值是需要自己改的。xxxx
为 frps
监听的端口;xxxy
为控制面板端口;username
为登录控制面板的用户名;password
为登录控制面板的密码;token
则为验证客户端身份的穿透口令;xxyy
则为代理 HTTP 访问端口。
将 frps
复制到 /usr/bin/
并将 frps.ini
复制到 /etc/frp/
(目录不存在则新建),完成后将 systemd/frps.service
复制到 /lib/systemd/system/
下。
文件操作完成后执行命令:
# systemctl daemon-reload
# systemctl enable frps
# systemctl start frps
即可启动 frps
服务。服务启动完成确认无异常后,将服务器的 xxxx
和 xxxy
端口开放。
配置穿透端
树莓派上使用 frpc
. 编辑 frpc.ini
并将如下配置写入并保存:
[common]
server_addr = a.b.c.d
server_port = xxxx
token = token
[web]
type = http
local_port = 8888
custom_domains = jupyter.my.domain
use_compression = true
http_user = user
http_pwd = pwd
其中,a.b.c.d
是服务器的 IP 地址;xxxx
和 token
与上面的值相同;user
和 pwd
为进入该页面的身份(可选);jupyter.my.domain
为访问该页面的域名。
将 frpc
复制到 /usr/bin/
, frpc.ini
复制到 /etc/frp/
, 之后将 systemd/frpc.service
复制到 /lib/systemd/system/
.
之后执行如下命令:
# systemctl daemon-reload
# systemctl enable frpc
# systemctl start frpc
启动 frpc
. 此时登录服务器 a.b.c.d:xxxy
, 可以看见出现了一个活动的 HTTP 穿透连接,表示配置成功。此时配置服务器的域名解析,将 jupyter.my.domain
指向 a.b.c.d
.
安装 Jupyter
在树莓派上安装 Jupyter 是很简单的,一句话安装:
# apt-get update && apt-get install python3-matplotlib python3-spicy && pip3 install --upgrade pip && pip3 install jupyter
如果发现安装不动,考虑换国内镜像(包括 APT 镜像和 PyPI 镜像)。
完成安装后,执行 $ jupyter notebook --generate-config
生成默认配置 ~/.jupyter/jupyter_notebook_config.py
,并作出如下更改(可以手动解除每一项的注释,或者直接追加以下内容到文件尾部):
c.NotebookApp.allow_origin = '*'
c.NotebookApp.allow_remote_access = True
c.NotebookApp.base_url = '/'
c.NotebookApp.ip = 'localhost'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.trust_xheaders = True
完成后执行 $ jupyter notebook password
设置访问密码,之后新建 /lib/systemd/system/jupyter.service
, 写入如下内容:
[Unit]
Description = Jupyter Notebook Service
After = network.target
[Service]
Type = simple
User = <你的用户名>
Restart = on-failure
RestartSec = 1m
ExecStart = /usr/local/bin/jupyter notebook
WorkingDirectory = /home/<你的用户名>
[Install]
WantedBy = multi-user.target
完成后执行以下指令启动 Jupyter:
# systemctl daemon-reload
# systemctl start jupyter
若要使其在开机时自动启动,则额外执行 # systemctl enable jupyter
.
配置服务器转发
以 Apache 为例,在其配置文件追加如下内容:
<VirtualHost *:80>
ServerName jupyter.my.domain
ProxyPreserveHost on
ProxyRequests off
ProxyPass /api/kernels/ ws://localhost:xxyy/api/kernels/
ProxyPassReverse /api/kernels/ ws://localhost:xxyy/api/kernels/
ProxyPass / http://localhost:xxyy/
ProxyPassReverse / http://localhost:xxyy/
</VirtualHost>
注意更改域名和 xxyy
的值。完成后重启 httpd
服务。
测试
以上步骤完成后,访问 http://jupyter.my.domain
. 浏览器会要求你登录(如果配置了),此时使用 user
, pwd
进行登录;而后 Jupyter 也会询问密码,此时使用在 $ jupyter notebook password
设置的密码登录。完成授权后,将可以正常使用 Jupyter Notebook.
后记 - 安装 Wolfram 计算核心
Jupyter Notebook 支持一票的计算核心。既然我们上了树莓派,那么肯定是要好好利用一下系统自带的 Wolfram Mathematica 了!
首先去这里下载最新的 paclet
文件到树莓派,重命名为 WolframJupyter.paclet
, 然后执行 $ wolfram
并输入如下指令:
PacletInstall["WolframJupyter.paclet"]
Needs["WolframLanguageForJupyter`"]
ConfigureJupyter["Add"]
完成之后,执行 $ jupyter kernelspec list
, 应该出现一行包含 wolframlanguage12
的可用内核。此时即可在 Jupyter Notebook 中新建 Wolfram 计算内核的笔记本了。
正在加载评论……