2年前写的,从零安装一台实验室内网环境下的V100服务器,利用FRP和阿里云公网EOS进行内网穿透,随时随地访问实验室内网GPU环境,在服务器上启动Jupyter外网访问服务+ssh映射,实现随时随地远程同步调用实验室GPU资源,运行本地Pycharm编写的代码。mac敲代码+调用V100服务器跑model,实现高效快速的开会环境,目前看来还有一定的借鉴意义,所以翻出来,有需要的同学可以参考一下哈~
1. nvidia驱动安装
1.1下载
选择自己对应型号的驱动安装:

服务器端可以使用wget命令下载:

1.2 安装
1.2.1赋予驱动脚本运行权限:
chmod 777 NVIDIA-Linux-x86_64-440.44.run
777后跟自己的驱动脚本名字
1.2.2 运行安装脚本:

1.2.3 安装出错:

1.2.4 进入文本模式:
init 3

1.2.5 再次安装:
./NVIDIA-Linux-x86_64-440.44.run

1.2.6 安装完成

1.2.7 检查驱动信息
nvidia-smi

2. Anaconda安装

2.1 安装脚本下载:

2.2 赋予脚本运行权限
chmod 777 Anaconda3-2019.10-Linux-x86_64.sh
2.3 运行安装脚本
./Anaconda3-2019.10-Linux-x86_64.sh

2.4 狂点回车,输入yes

2.5 设置安装路径:
/root/ide/anaconda3
根据自己的喜好修改,我安装在了/root/ide/anaconda3路径下

2.6是否要写入环境变量
yes

2.7 安装完成

2.8 关闭控制台,重新打开:
命令行前方已经出现base,则意味着已经在使用anaconda中的python环境

2.9 测试conda是否可用:
conda --version

3. jupyter设置
3.1 生成一个配置文件
jupyter notebook --generate-config
3.2 修改jupyter配置文件
cat jupyter_notebook_config.py
c = get_config()
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = u'sha1:09a6121216a3:146ccafcfbb6288143cf4fba2ef7e29ff79d7ccc'
c.NotebookApp.notebook_dir = '/root/project/'
c.NotebookApp.port = 9999
3.3 编写jupyter后台运行启动脚本
cat jupyter
#!/bin/sh
nohup sudo /root/ide/anaconda3/bin/jupyter-notebook --ip="0.0.0.0" --config /root/ide/sh/jupyter_config.py --allow-root &
3.4 jupyter局域网访问
此时 便可通过内外的ip和自定义的9999端口访问到服务器上的jupyter,但如果我们想要在家直接访问公司内网的服务器,我们还需要进行下面第四部操作,完成frp穿透。

4. FRP内网穿透
如果公司内部使用主机,可以访问外网,但是没有公网ip,如果在家可以访问呢,购买一台有公网ip的主机,比如阿里云9.9/月,再使用frp做内网穿透即可实现公网访问。
4.1 下载frp到客户端和服务端
注意客户端服务端使用同一个版本的压缩包,避免各种版本错误。
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz

4.2 解压工具包
tar -zxvf frp_0.29.0_linux_amd64.tar.gz

4.3 服务端配置:
我们需要配置两个frp穿透,一个用于ssh访问,一个用于jupyter访问,所以我这里定义两个配置文件,frps.ini用于ssh访问,frps_jupyter用于jupyter访问。
vim ./frps.ini
[common]
bind_port = 20014 #与客户端绑定的进行通信的端口
vhost_http_port = 20013 #:访问客户端web服务自定义的端口号
vim ./frps_jupyter.ini
[common]
bind_port = 20009 #与客户端绑定的进行通信的端口
vhost_http_port = 20008 #:访问客户端web服务自定义的端口号
4.3.1 服务端frp简单测试
frp的运行方法很简单,通过下面这条命令即可完成运行:
./frps -c ./frps.ini,其中-c后面跟配置文件名字。

不报错则运行良好。
4.4 客户端配置:
同样,客户端也需要定义两个配置文件,一个用于ssh访问,一个用于jupyter访问。
vim ./frpc.ini
[common]
server_addr = 39.108.65.236 #公网服务器ip
server_port = 20014 #与服务端bind_port一致
#公网通过ssh访问内部服务器
[ssh]
type = tcp #连接协议
local_ip = 127.0.0.1 #内网服务器ip
local_port = 22 #ssh默认端口号
remote_port = 20015 #自定义的访问内部ssh端口号:
vim ./frpc_jupyter.ini
[common]
server_addr = 39.108.65.236
server_port = 20009
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 9999
remote_port = 20010
4.4.1 客户端frp简单测试
./frpc -c ./frpc.ini,其中-c后面跟配置文件名字。

4.5 客户端与服务端连接
如果你,服务端运行了./frps -c ./frps.ini,客户端运行了./frpc -c ./frpc.ini.
注意,先运行服务端
打开服务端后台:

发现客户端服务端会有连接信息,且不报错。这时候就可以通过公网39.108.65.236通过20015端口,通过ssh连接上内网的服务器。

4.6 启动脚本编写
由于涉及多个配置文件,jupyte配置,启动,frp的配置,启动,为了方便后期使用,一劳永逸,我们将所有启动命令脚本化。然后配置开机自启动。
4.6.1 服务端脚本编写:
cat run_frp.sh
#!/bin/sh
nohup /root/tool/frp_0.29.0_linux_amd64/frps -c /root/tool/frp_0.29.0_linux_amd64/frps.ini &
nohup /root/tool/frp_0.29.0_linux_amd64/frps -c /root/tool/frp_0.29.0_linux_amd64/frps_jupyter.ini &
服务端只做端口映射,所以只有两个后台运行的frps.
4.6.2 测试下服务端脚本启动情况:
./run_frp.sh

4.6.3 客户端脚本编写:
客户端涉及jupyter的后台启动,和shh的frpc和jupyter的frpc的启动,
cat run_config_frp_and_jupyter.sh
#!/bin/sh
nohup sudo /root/ide/anaconda3/bin/jupyter-notebook --ip="0.0.0.0" --config /root/ide/sh/jupyter_config.py --allow-root &
nohup sudo /root/ide/download/frp_0.29.0_linux_amd64/frpc -c /root/ide/download/frp_0.29.0_linux_amd64/frpc.ini &
nohup sudo /root/ide/download/frp_0.29.0_linux_amd64/frpc -c /root/ide/download/frp_0.29.0_linux_amd64/frpc_jupyter.ini &
4.6.4 测试下客户端脚本启动情况:

4.7 设置开机启动

4.7.1 服务端添加:
把需要开机启动的脚本程序直接写入/etc/rc.d/rc.local文件中
sudo sh /root/ide/sh/run_frp.sh
4.7.2 客户端添加:
把需要开机启动的脚本程序直接写入/etc/rc.d/rc.local文件中
sudo sh /root/ide/sh/run_config_frp_and_jupyter.sh

4.8 测试连接效果
4.8.1 jupyter可以通过公网访问:

4.8.2 ssh可以通过公网访问:

5. 编码环境搭建
5.1 创建conda虚拟环境
conda create -n tf2 python=3.6

5.2 激活环境
环境会被切换到tf2,这时候安装环境就会安装到tf2中,不会影响其他环境。
conda activate tf2

5.3 环境插入jupyter
pip install ipykernel
python -m ipykernel install --user --name tf2 --display-name "tf2"

jupyter切换kernel

5.4 安装tensorflow-gpu环境
conda install tensorflow-gpu

5.5 jupyter使用tf2环境
tf.__version__

6. pycharm开发配置
6.1 pycharm配置远端环境

6.2 添加ssh interpreter
ip为之前映射出来的公网ip,端口为绑定的端口.内网的话是22.我这里使用我的内网穿透的服务器。

6.3 解释器路径和代码同步路径
这里选择的解释器使用虚拟环境中定义的,可以通过which python3.6来查看路径


6.4 查看当前解释器

6.5 根目录设置

6.6 Mappings设置

点赞订阅加关注,变帅变强不变秃~

分享如何通过FRP和阿里云内网穿透,安装Nvidia驱动与Anaconda,配置Jupyter与SSH,实现在家无缝使用实验室GPU。适合远程工作开发者参考。
5376

被折叠的 条评论
为什么被折叠?



