3. 将U盘插到服务器上,开机按del键(具体什么键跟主板型号有关)选择启动项进入临时的Ubuntu系统,在图形界面中选择Install Ubuntu,所有配置都可以使用默认的,改一下用户名和密码即可。这里建议使用英文作为默认语言,省得给自己日后开发找麻烦哈。
安装过程中会联网下载一些软件包更新,可以直接点skip掉,在安装好系统之后再手动更新也是一样的。
4. 进入系统后设置一下root账户密码:
sudo passwd root
5. 同时为了避免每次sudo都要输入密码,这里配置一下visudo:
sudo visudo
在文件最后加上一句(改为自己的用户名):
pengzhihui ALL=(ALL) NOPASSWD: ALL
2.2 配置国内镜像软件源
为了提升后续安装软件时的幸福感,第一步当然先要替换一下软件源。
1. 备份原来的源:
cp /etc/apt/sources.list /etc/apt/sources.list.bak
2. 将源的内容设置为阿里云镜像:
sudo vim /etc/apt/sources.list
内容改为:
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
3. 更新软件列表:
sudo apt update
sudo apt upgrade
也可以去网上搜其他镜像,在我这边经测试阿里云是最快的。另外也可以在图形桌面环境下打开Software & Updates软件,在里面也有网速测试并选择最佳源的功能。
2.3 安装Python和pip1. Ubuntu系统默认自带python,有版本需求的话也可以自己安装一下(不安装也行因为后面会安装conda环境):
sudo apt install python3
sudo apt install python3-pip
2. 不管是不是自己安装的python,替换python的pip源建议是一定操作一下的,pip安装速度会快很多:
cd ~
mkdir .pip
直接新建并编辑pip.conf:
sudo vim ~/.pip/pip.conf
改为以下内容(这里用的清华源,也可以试一下阿里、豆瓣等源):
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn
3. 更改默认python版本,python目录默认链接的是python2,而现在基本都是用python3开发了,每次都输入python3很麻烦所以这里直接更换默认的python命令链接。
把原来的python软链接删掉:
sudo rm /usr/bin/python
新建一个软链接:
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo ln -s /usr/bin/pip3 /usr/bin/pip
现在输入python就会进入python3环境了。
2.4 配置SSH & 远程桌面纯净安装的系统里面默认没有开启SSH,我们手动安装一下。
1. 安装ssh:
sudo apt install ssh
会自动安装好很多依赖包并启动服务,完成之后用XShell等软件就可以SSH登录服务器了。
2. 安装xrdp
Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许我们通过图形界面控制远程系统。这里使用RDP而不是VNC作为远程桌面,是因为Windows自带的远程桌面连接软件就可以连接很方便,另外RDP在Windows下的体验非常好,包括速度很快(因为压缩方案做得比较好),可以直接在主机和远程桌面之间复制粘贴等等。
有的Xwindow软件是不太兼容xrdp的(比如ubuntu 18.04的默认桌面),但是ubuntu 20.04使用的Gnome是完全ok的
安装过程如下:
sudo apt install xrdp
安装完成xrdp 服务将会自动启动,可以输入下面的命令验证它:
sudo systemctl status xrdp
默认情况下,xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key,它仅仅对ssl-cert用户组成语可读,所以需要运行下面的命令,将xrdp用户添加到这个用户组:
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp
然后使用Windows自带的远程桌面软件连接服务器IP地址或者域名就行了。
2.5 安装frp进行内网穿透前面介绍的SSH和远程桌面都是需要在局域网下通过IP地址进行连接的,而我们配置一台服务器最重要的诉求,应该是可以随时随地去访问服务器。
那在家里面,网络运营商提供的网络服务通过路由器路由到各个设备,此时路由器会同时具备内网地址(路由器之内,局域网,LAN,也就是192.168.x.x)和外网地址(路由器之外,互联网,WAN)。但是其实这个WAN口的IP并不是真正的“公网ip”,而时经过了多层的NAT转换之后的地址,外网的设备是不能通过这个地址访问到路由器的。这个问题的原因是ipv4地址池紧张,如果运营商给每家的路由器都安排一个公网ip的话,那ip地址早就不够用了呀。
因此为了能让外网访问到我们局域网内的设备,就需要跟中国电信等运营商申请公网ip(现在能申请到的概率也已经不大了,而且即使申请到也不是所有端口都可以使用的),或者我们自己动手做一些操作来达到同样的目的。
有几种方法:
- 可以直接用类似花生壳https://hsk.oray.com/这样的DDNS服务平台做转发实现内网穿透,优点是比较简单稳定,缺点是需要持续付费,而且速度和延迟效果一般,而且每加一个端口都要额外付费。
- 也可以像我一样使用frp之类的软件做反向代理来实现内网穿透,这个方案也是需要你有一台带公网IP的云服务器的,优点就是完全可控,自己想配置多少个端口的穿透都可以,速度跟你的云服务器带宽有关。
为什么需要多个端口?是因为不同应用占用的端口不同,比如我们的SSH走的是22号端口,而远程桌面的rdp走的是3389号端口,如果需要自建Web服务的话则是走80/443端口、想把工作站作为上外网的代理服务器的话会需要1080端口等等...所以用上面第二个方案显然会方便很多,而且云服务器也不贵,我在腾讯云上购买一年只要200左右。
下面介绍如何安装配置frp:
frp分为frps(server)和frpc(client)两个包 ,其中前者安装到我们的云服务器上,后者安装在需要被外网访问到的各个设备上,这里就是指我们的深度学习工作站。
云服务器端:
去这里https://github.com/fatedier/frp/releases下载适合你服务器系统的frp软件,我这里是用的是腾讯云64位Ubuntu16.04所以选择frp_0.34.3_linux_amd64.tar.gz(https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz),下好之后解压:
tar -zxvf frp_0.34.3_linux_amd64.tar.gz
我们需要编辑的文件是frps.ini :
内容改为:
[common]
bind_port = 7000 # frp服务的端口号,可以自己定
dashboard_port = 7500 # frp的web界面的端口号
dashboard_user = user # web界面的登陆账户,自己修改
dashboard_pwd = pass # web界面的登陆密码,自己修改
authentication_method = token
token = xxxxx # frp客户端连接时的密码,自己修改
保存配置后,使用该命令启动:
./frps -c ./frps.ini
在浏览器输入 [云服务器的公网ip]:7500 即可访问到 frp的web管理界面。
注意,可能需要去云服务器控制台配置安全组规则 开放以上涉及到的端口,否则无法访问。
本地的深度学习服务器端:
1. 下载相应版本的frpc软件包(跟刚刚一样的):Releases · fatedier/frp (github.com)https://github.com/fatedier/frp/releases,这里选amd64的,下好之后解压到一个临时文件夹。
2. 修改frpc.ini配置文件,内容如下:
[common]
server_addr = xx.xx.xx.xx # 你的云服务器的公网ip
authentication_method = token
token = xxxxx # 刚刚配置的frp连接密码
server_port = 7000 # 刚刚配置的frp服务端口
[Fusion-ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 20022
[Fusion-rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 23389
通过上面的脚本就可以把对于云服务器特定端口的访问给重定向到本地服务器的某个端口了,简单地讲就是:假如我用SSH客户端访问 [云服务器ip]:20022,就可以经过反向代理直接访问到[本地的训练服务器ip]:22;同理需要连接远程桌面的话,只需要访问[云服务器ip]:23389就可以了。
当然你也可以修改脚本添加更多映射~
3. 添加开机自动启动的脚本,新建一个文件内容如下:
文件名/etc/systemd/system/frpc.service,注意修改其中的路径:
[Fusion]
Description=Frp Server Daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/frp/frpc -c /usr/local/bin/frp/frpc.ini # 修改为你的frp实际安装目录
ExecStop=/usr/bin/killall frpc
#启动失败1分钟后再次启动
RestartSec=1min
KillMode=control-group
#重启控制:总是重启
Restart=always
[Install]
WantedBy=multi-user.target
然后执行以下命令启用脚本:
sudo systemctl enable frpc.service
sudo systemctl start frpc.service
通过下面的命令查看服务状态,如果是running的话就说明可以了:
sudo systemctl status frpc.service
这里顺便提一下,按照习惯一般把上面的frp软件解压防止在/usr/local/bin目录下。Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的
- /usr:系统级的目录,可以理解为C:/Windows/
- /usr/lib:可以理解为C:/Windows/System32
- /usr/local:用户级的程序目录,可以理解为C:/Progrem Files/,用户自己编译的软件默认会安装到这个目录下
- /opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用
源码放哪里?
- /usr/src:系统级的源码目录
- /usr/local/src:用户级的源码目录。
如果能把服务器上的磁盘直接挂载到我们使用的Windows个人PC上是不是很爽?
如开头的视频里面演示的,可以通过建立局域网SAMBA服务来实现这个效果:
1. 安装samba 和samba-common-bin
sudo apt-get install samba samba-common-bin
2. 配置/etc/samba/smb.conf文件
sudo nano /etc/samba/smb.conf
在最后一行后面加入:
# 共享文件夹显示的名称
[home]
# 说明信息
comment = Fusion WorkStation Storage
# 可以访问的用户
valid users = pengzhihui,root
# 共享文件的路径
path = /home/pengzhihui/
# 可被其他人看到资源名称(非内容)
browseable = yes
# 可写
writable = yes
# 新建文件的权限为 664
create mask = 0664
# 新建目录的权限为 775
directory mask = 0775
可以把配置文件中你不需要的分享名称删除,例如 [homes], [printers] 等。
运行这个命令测试一下配置文件是否有错误,根据提示做相应修改:testparm
3. 添加登陆账户并创建密码
必须是 linux 已存在的用户:
sudo smbpasswd -a pi
然后重启服务即可:
sudo /etc/init.d/samba-ad-dc restart
接下来可以在Windows的网络中发现设备了:
但是可能会出现无法点开的情况,这里需要在Windows的凭据管理器中添加账户信息(开始菜单里搜索凭据管理器即可打开),点击添加Windows凭据,输入你的服务器名称和账户密码: