服务器Jupyter Notebook和Samba的安装及部署

——by不是杀杀
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成(来自百度百科),简单来说它可以实现服务器端(Linux)与Windows端之间的文件共享。而Jupyter Notebook是大家熟悉的交互式笔记本,我认为是一个非常方便的开发工具。通过Samba将Jupyter的工作目录设置为Windows可访问的共享目录,将大大提高工作效率。正如如下图所示,可以在Windows中非常方便地读取、上传已经修改Jupyter工作目录下的文件。


image.png

image.png

一、Samba

其安装及部署需要root权限

1. 准备工作

### 关闭防火墙
systemctl stop firewalld.service
### 关闭SeLinux
#### 查看SeLinux状态
sestatus
setenforce 0
sestatus

2. 安装

### 安装samba
yum install samba
### 查看安装状态
rpm -qa|grep samba

Samba服务器安装完毕,会生成配置文件目录/etc/samba,/etc/samba/smb.conf是samba的核心配置文件

### 查看SMB服务状态
service smb status
### 启动SMB服务
systemctl start smb
### 设置开机自启
systemctl enable smb

3. samba配置

cd /etc/samba/  ##切换到Samba配置文件目录
mv smb.conf smb.conf.bak  ##备份
grep -v "#" smb.conf.bak > smb.conf  ##重新创建一个配置文件(除去注释的)
vim smb.conf  ##修改配置文件
[global]                   ##全局
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        map to guest = Bad User   ##添加此项,开启匿名用户访问
[HLABshare]                   ##添加的share文件
        path=/home/share            ##路径
        public=yes              ##公共访问
        browseable=yes          ##能够访问
        writable=yes             ##写权限
        create mask=0644        ##设置权限
        directory mask=0755

path=/home/share需要共享的目录路径
samba可以用testparm命令来测试smb.conf配置档的合法性

mkdir /home/share   ##创建目录
chmod 755 /home/share  ##设置权限
systemctl restart smb.service  ##重启Samba服务

修改文件创建的默认权限

### 在[HLABshare]中加入以下配置
create mode = 0644
force create mode = 0644
directory mode = 0755
force directory mode = 0755

权限冲突问题
因为Jupyter是由A账户安装的,因此会发现在share文件夹中通过Jupyter生成的文件其权限是属于账户A的,而通过Samba访问的Windows用户在该文件夹下创建文件,由于配置文件中的map to guest = Bad User 设置,导致创建的文件是属于nobody账户的,因此会出现权限冲突的问题,当然这个问题如果严谨一些应该通过为每个Windows客户端访问的人创建账户等方法来解决,但是我还是选择了比较简单但是不够安全的做法:(其他解决方法欢迎评论区留言)

## 在配置中加入
# 在 [global] 放入以下内容
force user = 帐号
force group = 群组

其中账号和群组与安装Jupyter的账号一致。

二、Jupyter

1. 安装miniconda

# 创建一个目录用于放miniconda安装包
mkdir miniconda
# 下载miniconda
wget  https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh --no-check-certificate
# 安装
bash Miniconda3-latest-Linux-x86_64.sh
# 有提示选择输入yes
# 安装完之后需要重启客户端(把连接服务器的窗口关掉再打开)
# 换成清华源
conda  config  --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda  config  --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
conda config --set show_channel_urls yes
 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

2. 为jupyter创建一个conda的环境

# jupyter 是创建的环境名称
conda create -n jupyter
# 激活(进入)创建的环境
conda activate jupyter
# 退出当前环境
conda deactivate

3. 安装R内核及jupyter

# 安装R内核
conda install r-recommended r-irkernel
# 安装jupyter
conda install Jupyter
# 在R中连接jupyter
R -e 'IRkernel::installspec()'

4. 启动jupyter

# 指定IP和端口,其中IP为服务器的IP,端口为服务器开放的端口
jupyter notebook --no-browser --port 8888 --ip=172.16.0.xxx

以上运行方式,当断开端口时jupyter会被杀死,因此平常采用如下运行方式:

# 方法一:在tmux中启动
tmux 
# 进如不间断连接的端口
conda activate jupyter
jupyter notebook  /home/share --no-browser --port 8888 --ip=172.16.0.xxx
# 方法二:通过nohup &来后台运行
nohup jupyter notebook  /home/share --no-browser --port 8888 --ip=172.16.0.xxx &

Jupyter的其他配置

修改jupyter密码

# 生成jupyter配置文件
jupyter notebook --generate-config
# 将固定的密码转换成sha1加密
jupyter notebook password
# 两次输入要设置的密码
image.png

将sha1写到配置文件中

cat jupyter_notebook_config.json
# 复制password部分
# 修改配置文件
vim jupyter_notebook_config.py
# 在vim中搜索passwd
/password
image.png

将c.NotebookApp.password的注释去掉,保存配置文件后重启jupyter

指定工作目录

这里指定为上一步Samba设置的共享目录。

# 启动时指定目录
jupyter notebook [dir] --no-browser --port 8888 --ip=172.16.0.xxx
#如
jupyter notebook  /home/share --no-browser --port 8888 --ip=172.16.0.123

你可能感兴趣的:(服务器Jupyter Notebook和Samba的安装及部署)