阿里云服务器宝塔面板配置jupyter notebook实现远程运行python程序

用anaconda虚拟环境比较方便

https://www.anaconda.com/download/#linux

先去官网下载linux的安装包,然后用宝塔把安装包移到根目录,我在根目录创建了一个anaconda3的文件夹

然后

1
2
cd anaconda3
bash Anaconda3-5.2.0-Linux-x86_64.sh

一直按回车,要输入yes就输入

安装好之后

1
sudo vim /etc/profile

在最下面输入

1
PATH=/root/anaconda3/bin:$PATH

保存退出后输入

1
source /etc/profil 

输入python出现带有anaconda的字样说明成功

接下来我们需要建立一个虚拟环境

1
conda create -n kr python=3.8

建立一个名为kr的虚拟环境

然后就conda activate kr进入虚拟环境,这里如果报错,那就重新连接服务器,就没事了

然后退出虚拟环境是

1
conda deactivate

接着安装jupyter notebook

在kr环境中

1
pip install jupyter

然后我们需要设置一下jupyter notebook的密码

进入python

1
python

输入以下代码

1
2
from notebook.auth import passwd
passwd()

然后输入两次密码来设置密码

然后会产生私钥,我们一定要记下来

然后退出python

输入

1
jupyter notebook --generate-config

然后会生成一个py文件

就是下图的目录,这是在宝塔中打开的

./root/.jupyter

如图输入内容,password就是刚刚的私钥,端口是9999避免端口冲突

然后还要去阿里云和宝塔放行9999端口,然后就可以了

启动jupyter服务的方法

第一种:

1
jupyter notebook --allow-root

这种会一直占着窗口命令,按ctrl+c才能结束,所以一般不用

第二种:

1
nohup jupyter notebook --allow-root &

可以后台运行

nohup表示no hang up, 就是不挂起, 于是这个命令执行后即使终端退出, 也不会停止运行.

但要手动结束

lsof -i : {端口号}

然后 kill -9 {对应pid} # 9的意思是发送KILL信号,立刻结束,可能会有数据丢失

启动后访问服务器的ip加上:9999即可

扩展:

  1. 代码自动补全插件

    终端输入

    1
    2
    3
    4
    pip install jupyter_contrib_nbextensions
    jupyter contrib nbextension install --user
    pip install jupyter_nbextensions_configurator
    jupyter nbextensions_configurator enable --user

    1. 每次进入服务器默认就是base环境,不好,应该是默认的root环境

      1
      conda config --set auto_activate_base false
    2. 如何关闭后台的jupyter

      查看进程:

      1
      ps -aux | grep jupyter

      第一个就是后台运行,pid就是10100所以就是kill -9 10100(第三个也是,但是我重复开了一次)

      最后三个是jupyter中正在运行的程序

      类似这样,可以手动在jupyter中关闭

      第二行的那个不知道是什么,我把jupyter关了还是有

      把jupyter关了就无法访问端口了

    3. 修改jupyter根目录

      我们发现jupyter的打开路径是在root目录下,导致存文件的时候和找文件的时候太乱了,所以我们修改一下默认的路径

      就是刚刚那个py文件的配置文件

      我们先在home文件夹下面新建一个jupyter_root文件夹

      然后修改配置文件

      这样下次远程打开jupyter显示的目录就是这里我们设定的目录了

      我们拷贝文件到这个目录推荐使用宝塔面板,使用jupyter默认的文件上传不太方便,不能上传文件夹