Ubuntu与windows下配置安装jupyter-notebook以及其开机自启、后台运行与远程访问

阎功
2023-12-01

一、简单介绍

Jupyter Notebook是一个开源Web应用程序,允许您创建和共享包含实时代码,方程式,可视化和叙述文本的文档。用途包括:数据清理和转换,数值模拟,统计建模,数据可视化,机器学习等等。支持python C java Go等多种编程语言。同时支持markdown编辑器。

二、安装

首先确保系统已经安装python,推荐python3

python3 -V
pip3 -V

安装jupyter

pip3 install jupyter

设置登录密码

# 首先进入python命令行
python3 
# 在命令行下输入
from notebook.auth import passwd;passwd()
# 按照提示输入密码,这是jupyter的登陆密码

设置成功会出现形如下面的哈希(hash)密码, 保存好,下面会用到

'sha1:1f058372c7df:8e41e88ca42eebf80be6ff26b473cabb13f3e5aa'

生成配置文件 jupyter_notebook_config.py
linux普通用户在/home/$USER/.jupyter目录下,root用户在/root/.jupyter下(建议采用普通用户安装)
windows在C:\Users\username下,username为你电脑用户名

jupyter notebook --generate-config

编辑 jupyter_notebook_config.py,在开头加入以下代码

#设置可访问的ip为任意。
c.NotebookApp.ip = '*'  #某些版本为c.NotebookApp.ip = '0.0.0.0',都表示任意ip

#不打开浏览器。推荐谷歌,火狐等访问登录jupyter
c.NotebookApp.open_browser = False

#这里填上面设置密码时生成的hash密码
c.NotebookApp.password = 'sha1:1f058372c7df:8e41e88ca42eebf80be6ff26b473cabb13f3e5aa'

#允许使用root用户开启jupyter,windows忽略这条
c.NotebookApp.allow_remote_access = True

#设置登陆端口,一般为8888
c.NotebookApp.port = 8888

#设置jupyter-notebook的工作空间,注意linux与windows的路径表示方式
c.NotebookApp.notebook_dir = 'F:\Jupyter_workspace'

## 其他配置项根据自己需要修改

保存后在终端或者命令行输入

jupyter-notebook

终端或者命令行不要关闭,在浏览器地址栏输入http://localhost:8888或者http://127.0.0.1:8888

出现jupyter登陆页面则初步安装成功,输入设置的登陆密码,新建一个python3文件,即.ipynb文件
输入

print("Hello Jupyter") # 按shift+enter运行

正常输出说明安装成功

三、开机自启与后台运行

1. Ubuntu下配置jupyter开机自启与后台运行

查看jupyter-notebook安装位置

whereis jupyter-notebook

推荐采用用户目录,最好不要采用root目录,root用户为 /usr/local/bin/jupyter-notebook 普通用户为/home/$USER/.local/bin/jupyter-notebook

#新建服务文件
sudo vim /lib/systemd/system/jupyter.service

加入以下代码

[Unit]
Description=jupyter notebook
After=network.target
[Service]
Type=simple
# 这里填用户名,下同
User=starfish
EnvironmentFile=/home/starfish/.local/bin/jupyter-notebook
ExecStart=/home/starfish/.local/bin/jupyter-notebook
ExecStop=/usr/bin/pkill /home/starfish/.local/bin/jupyter-notebook
KillMode=process
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target

保存后终端依次输入以下代码

sudo systemctl daemon-reload
sudo systemctl enable jupyter.service
sudo systemctl start jupyter.service

输入以下代码观察有无报错信息

systemctl status jupyter

配置成功的话jupyter-notebook已经添加进系统服务,同时满足开机自启与后台运行
进入http://localhost:8888或者http://127.0.0.1:8888验证

其他常用控制jupyter命令

#移除jupyter服务
sudo systemctl disable jupyter.service
#重启jupyter服务
sudo systemctl restart jupyter.service
#停止jupyter服务
sudo systemctl stop jupyter.service

注意 ubuntu如果开启防火墙的话须开启8888端口

sudo ufw status # 查看防火墙状态
sudo ufw allow 8888 # 开启8888端口

2. Windows下配置jupyter开机自启与后台运行

首先确保能在命令提示符CMD下正常开启jupyter-notebook

jupyter-notebook

浏览器能正常访问http://localhost:8888或者http://127.0.0.1:8888

在非系统目录下新建文本文档,修改文件名为jupyter.bat,需要设置文件显示后缀名
用记事本打开,输入以下代码

start /b jupyter-notebook >nul 2>nul

保存后可以双击jupyter.bat测试能否正常开启jupyter

再次新建文本文档,修改文件名为jupyter.vbs
用记事本打开,输入以下代码

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c D:\Python-3.7.2\jupyter.bat",vbhide

上面的路径改为自己的jupyter.bat所在路径,注意不能是系统目录

保存后移动jupyter.vbs到windows启动文件夹
win7 在C:\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup下,admin为自己电脑用户名
win10在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

重启电脑,浏览器进入http://localhost:8888或者http://127.0.0.1:8888验证

四、配置jupyter-notebook远程访问

经过以上几步配置,jupyter-notebook已经可以在局域网中远程访问
linux下输入以下命令查看IP

ifconfig

Windows下输入以下命令查看IP

ipconfig

局域网中输入IP:8888就访问

如果想配置局域网中的jupyter-notebook在何时何地都可以访问,需要具有公网IP地址的服务器与内网穿透工具

这里内网穿透工具推荐frp,功能强大,免费开源

1.下载

首先在官方网站下载最新版安装包,根据系统下载,64位为amd64版本,32为386版本

在服务器端和客户端把相对应的frp软件包下载解压后,把文件夹移到自己的软件安装目录

2.软件配置

服务器端配置,编辑frps.ini

# frps.ini 
[common] 
bind_port = 7000

客户端配置,编辑frpc.ini

# frpc.ini 
[common] 
server_addr = xxxx
server_port = 7000


[jupyter] 
type = http
local_port = 8888
custom_domains = xxxx

xxxx为公网服务器ip,8888为jupyter服务端口

3.配置frp自启

①ubuntu下配置frp开机自启与后台运行

以ubuntu服务器端frp配置为例,和上面类似

#新建服务文件
sudo vim /lib/systemd/system/frp.service

加入以下代码

[Unit]
Description=frp service
Wants=network.target
After=multi-user.target

[Service]

TimeoutStartSec=30
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini

[Install]
WantedBy=multi-user.target                             

ExecStart中填frp服务器端的配置文件的绝对路径
linux客户端配置类似的只需要把ExecStart中的frps改成frpc

保存后终端依次输入以下代码

sudo systemctl daemon-reload
sudo systemctl enable frp.service
sudo systemctl start frp.service

②windows下配置frp开机自启与后台运行

类似地,在frp配置文件目录新建frp.bat,输入以下命令

D:\frp_0.27.1_windows_amd64\frpc -c D:\frp_0.27.1_windows_amd64\frpc.ini

D:\frp_0.27.1_windows_amd64为我的frp解压安装目录,这里必须输入frp配置文件的绝对路径

新建frp.vbs,输入以下命令

Set ws1 = CreateObject("Wscript.Shell")
ws1.run "cmd /c D:\frp_0.27.1_windows_amd64\frp.bat",vbhide

上面路径改为自己的frp.bat路径

将frp.vbs移动到系统启动目录
win7 在C:\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup下,admin为自己电脑用户名
win10在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

最后,在Ubuntu下,保证防火墙开启所用到的端口

# 开启防火墙
sudo ufw enable

# 关闭防火墙
sudo ufw disable

# 查看防火墙状态
sudo ufw status

# 开启所有用得到的端口
sudo ufw allow 8888
sudo ufw allow 22
## 下面两个端口是frp配置时的端口
sudo ufw allow 7000
sudo ufw allow 6000

测试:重启所有服务端与客户端主机,任意网络访问 (公网IP:8888) 就可以进入jupyter-notebook页面

至此 jupyter-notebook的安装配置,开机自启、后台运行与远程访问设置完成

 类似资料: