【深度学习】Ubuntu18.04+GPU驱动安装+Anaconda安装+Notebook远程访问+FRP内网穿透+公网访问Jupyter+TensorFlowGPU+Pycharm同步服务器代码环境

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

1. nvidia驱动安装

1.1下载

nvidia驱动下载地址

选择自己对应型号的驱动安装:

服务器端可以使用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安装

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设置

-w807

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

猜你喜欢

转载自blog.csdn.net/luojie140/article/details/115534638