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设置
点赞订阅加关注,变帅变强不变秃~