Ubuntu Server 18.04 部署

本文总结了在配置实验室新入的基于Ubuntu Server 18.04操作系统工作站过程中遇到相应问题时的解决方法,旨在为后续配置基于ubuntu 操作系统的服务器平台提供参考。

Ubuntu Server 18.04安装

下载Ubuntu Server 18.04的ios镜像文件

下载链接:https://ubuntu.com/download/server/thank-you?version=18.04.3&architecture=amd64

下载ultraiso

下载链接:http://cn.ultraiso.net/xiazai.html

通过ultraiso将iso镜像文件 写入U盘

详细步骤参见:ultraiso刻录U盘启动盘下载安装Ubuntu18.04系统

内外网卡配置

Ubuntu Server18.4的网关配置不同于以往版本,18.04的网卡配置在/etc/netplan/50-cloud-ini.yaml中进行,配置过程如下:

1
2
#打开netpaln配置文件
$ sudo vim /etc/netplan/50-cloud-ini.yaml

文件内容修改为:

1
2
3
4
5
6
7
8
9
10
11
network:
Version: 2
ethernets:
enp0s31f6:
dhcp4: true
enp4s0:
Addresses: [192.168.3.233/24]
dhcp4: no
optional: true
Nameservers:
Addresses: [8.8.8.8,8.8.4.4]

配置参数解释:

  • enp0s31f6enp4s0 为需要配置网卡的实际名称,本例中 enp0s31f6外网网卡名称, enp4s0内网网卡名称。
  • dhcp4 : true/no 代表IPv4是否启用。
  • dhcp6 : true/no 代表IPv6是否启用。
  • Addresses : 设备的IP地址和IP地址对应的子网掩码,[192.168.3.233/24]表示IP地址为192.168.3.233,24表示子网掩码为255.255.255.0。
  • Nameservers : 表示由逗号隔开的DNS服务器列表。

外网网卡设置动态IP,只需要配置dhcp4为 true;内网网卡设置固定静态IP,需将IP固定为分配的内网IP,同时配置dhcp为 no,并配置对应的Nameservers的DNS服务器列表。

配置完成后,使用测试命令查看是否配置成功:

1
$ sudo netplan try

配置准确无误后,应用新的配置:

1
$ sudo netpaln apply
1
2
# 查看更新后的网络信息
$ ifconfig

远程连接

ubuntu操作系统上进行远程连接主要通过 SSH 执行,SSH 是一个远程访问和数据传输的安全协议,能够加密用户密码和数据,保证安全传输。

OpenSSH 是基于 SSH 协议实现的开源软件,包括了ssh (远程连接)、scp (远程传输)等工具。

安装

查看当前是否已安装ssh

1
$ ps -aux | grep ssh

本地安装客 client 端

1
$ sudo apt-get install openssh-client

服务器安装 server 端

1
$ sudo apt-get install openssh-server

配置文件

SSH配置文件在/etc/ssh文件夹下,客户端配置文件为ssh_config,服务器端配置文件为sshd_config

按需求对上述文件进行相应修改,比如端口号为 22

修改完成后,重启 SSH服务:

1
2
3
$ sudo service ssh restart
# 或者
$ sudo systemctl restart ssh

修改SSH登录密码

登录ssh后,通过passwd命令,两次输入新密码。

服务器公钥查看和删除

known_hosts存放在~/.ssh文件夹内,用于保存已连接过的服务器公钥,其目的是确保服务器连接的安全性,第一次连接时需要会询问你是否添加。

搜索已连接过服务器的公钥:

1
2
3
4
# 命令形如
$ ssh-keygen -F hostname [-f known_hosts_file] [-l]
# 比如寻找 IP为192.168.3.233的服务器的公钥
$ ssh-keygen -F 192.168.3.233

当服务器重装后,会生成新的服务器公钥,需要删除客户端当前公钥,然后重新设置。

删除特定服务器(IP为192.168.3.233)的本地存储公钥

1
2
3
4
$ ssh-keygen -f "/home/wzj/.ssh/known_hosts" -R 192.168.3.233
# Host 132.232.142.219 found: line 10
/home/wzj/.ssh/known_hosts updated.
Original contents retained as /home/wzj/.ssh/known_hosts.old

用户添加与权限设置

用户添加删除修改

创建用户:

1
2
3
adduser web                             #新建web用户
useradd web #添加web 用户
passwd web #给web用户设置密码
1
2
3
4
5
6
7
8
#新建web用户并指定用户组为 admin用户组,并自动建立登录目录
useradd web -g admin -n -m

#给web 用户设置密码
passwd web

#创建admin用户,并指定属组为admin 用户id为10000
useradd -r -m -s /bin/bash -g admin -u 10000 admin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
useradd(选项)(参数)
-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s:指定用户登入后所使用的shell;
-u:指定用户id。

给已有的用户增加工作组

1
2
3
4
5
6
7
8
#给web用户设置admin附属用户组
usermod -G admin web

#给用户设置添加多个用户组
usermod -g web -G admin,www web #给web用户设置主用户组web组,admin,www附属用户组

#给web用户设置admin用户组
gpasswd -a web admin

新建用户同时增加工作组

1
useradd -g admin web                      #新建web用户并增加到admin工作组

注:
-g 所属组
-d 家目录
-s 所用的SHELL

临时关闭

方法一 /etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上 就可以了。想恢复该用户,去掉即可。 方法二 使用命令关闭用户账号:

1
passwd web –l

重新释放:

1
passwd web –u

永久性删除用户账号

1
2
3
userdel web
groupdel web
usermod –G web web #(强制删除该用户的主目录和主目录下的所有文件和子目录)

从组中删除用户

编辑/etc/group 找到用户组admin那一行,删除用户名web 或者用命令

1
gpasswd -d web A

显示用户信息

1
2
id user
cat /etc/passwd

用户组添加删除修改

建工作组

1
groupadd admin                          #新建admin工作组

修改用户组

1
groupmod -n newadmin admin              #修改admin用户组名称改为newadmin

删除用户组

1
groupdel admin                          #删除admin用户组

查看用户的用户组信息

1
groups web                              #==查看web所有用户组==

挂载硬盘或磁盘

因fdisk分区最大只能2T,当硬盘容量大于2T时,就需要使用parted来分区。

挂载小于2T硬盘或磁盘

参考博客:ubuntu下添加硬盘,分区以及自动挂载

挂载大于2T硬盘或磁盘

参考博客:Ubuntu挂载3T硬盘或大于2T磁盘

更改apt源

进行备份

编辑文件前先备份

1
2
# 备份
$ cp /etc/apt/sources.list /etc/apt/sources.list.bak

添加阿里源

/etc/apt/sources.list文件中清空原有信息,并添加以下条目

1
2
3
4
5
6
7
8
9
10
11
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

更新源

1
2
3
# 更新
$ sudo apt-get update
$ sudo apt-get upgrade

诸如163源、清华源、中科大源等参见参考链接。

参考链接

国内使用Ubuntu 18.04更新缓慢,更换apt源为国内源

Ubuntu Server 18.04 更改软件源到国内镜像

显卡配置

安装显卡驱动

禁用 nouveau驱动

/etc/modprobe.d/blacklist.conf 里添加如下内容,

1
2
blacklist nouveau
options nouveau modeset=0

并执行 sudo update-initramfs -u 命令,

重启 reboot 后用 lsmod | grep nouveau, 如果没有任何输出说明禁用成功。

安装 NVIDIA显卡驱动

ubuntu 18.04 直接使用sudo ubuntu-drivers autoinstall安装的是390的驱动,cuda 10 显卡必须是410以上,所以要安装新一点的驱动

安装更新版本的驱动可以先添加源:

1
2
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update

然后执行:

1
2
3
4
5
6
7
8
9
10
11
$ ubuntu-drivers devices
==/sys/devices/pci0000:64/0000:64:00.0/0000:65:00.0/0000:66:10.0/0000:67:00.0 ==
modalias : pci:v000010DEd00001B00sv000010DEsd0000119Abc03sc00i00
vendor : NVIDIA Corporation
model : GP102 [TITAN X]
driver : nvidia-driver-415 - third-party free
driver : nvidia-driver-435 - third-party free recommended
driver : nvidia-driver-430 - third-party free
driver : nvidia-driver-410 - third-party free
driver : nvidia-driver-390 - third-party free
driver : xserver-xorg-video-nouveau - distro free builtin

命令输出driver : nvidia-driver-435 - third-party free recommended推荐安装的驱动nvidia-driver-435 。这里我选择了安装 nvidia-driver-430

安装命令

1
$ sudo apt install nvidia-driver-430

安装 CUDA

下载cuda安装包

下载地址:https://developer.nvidia.com/cuda-toolkit-archive

这里下载:cuda_10.1.243_418.87.00_linux.run

下载cuda版本选择平台如下

安装

安装命令与上图Base Installer介绍的一致:

1
2
$ wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
$ sudo sh cuda_10.1.243_418.87.00_linux.run

注意:第一项显卡驱动不要装,之前已经安装过驱动 nvidia-driver-430 ,剩下的都安装。

配置环境变量

考虑到环境变量要多用户共享,需要将其写入到/etc/profile ,如果环境变量不进行共享,只是本用户可用,则需将其写入到~/.bashrc

输入内容为:

1
2
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH

保存退出,并输入下面命令使环境配置生效:

1
2
3
4
# 多用户
$ source /etc/profile
# 单用户
$ source ~/.bashrc

测试 cuda 是否安装成功

切换到 CUDA 9.1 Samples 默认安装路径(即在/home/用户/ NVIDIA_CUDA-10.1_Samples 目录下), 终端下输入

1
2
3
4
$ cd ~/NVIDIA_CUDA-10.1_Samples
$ sudo make all -j8
$ cd bin/x86_64/linux/release
$ ./deviceQuery

如果CUDA安装成功,则显示相关信息 Result=PASS,具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$ ./deviceQuery
./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 1050 Ti"
CUDA Driver Version / Runtime Version 10.2 / 10.1
CUDA Capability Major/Minor version number: 6.1
Total amount of global memory: 4039 MBytes (4234936320 bytes)
( 6) Multiprocessors, (128) CUDA Cores/MP: 768 CUDA Cores
GPU Max Clock rate: 1392 MHz (1.39 GHz)
Memory Clock rate: 3504 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 1048576 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 2 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device supports Compute Preemption: Yes
Supports Cooperative Kernel Launch: Yes
Supports MultiDevice Co-op Kernel Launch: Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 5 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.2, CUDA Runtime Version = 10.1, NumDevs = 1
Result = PASS

查看 cuda 版本

1
cat /usr/local/cuda/version.txt

安装 cudnn

下载cudnn

下载地址:https://developer.nvidia.com/rdp/cudnn-archive

安装 cudnn

1
2
3
$ sudo dpkg -i libcudnn7_7.6.1.34-1+cuda10.1_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.6.1.34-1+cuda10.1_amd64.deb
$ sudo dpkg -i libcudnn7-doc_7.6.1.34-1+cuda10.1_amd64.deb

测试 cudnn

参考博客:https://blog.csdn.net/u014754541/article/details/97108282

查看 cudnn 版本

1
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

局域网下网络磁盘共享

设置 Windows共享文件夹 供 Ubuntu 访问

ubuntu 安装 cifs-utils

1
$ sudo apt-get install cifs-utils

创建 Windows 共享文件夹

参考 ubuntu-server 与 windows 共享文件夹

查看 Windows 局域网 ip

1
$ ipconfig

ubuntu 挂载 Windows 共享文件夹

创建一个文件夹来挂载共享文件夹

1
$ sudo mkdir share_wzj

挂载

1
$ sudo mount -t cifs //192.168.3.233/data -o username=wangzj,password=123456

设置 Ubuntu共享文件夹 供 Windows 访问

参考 ubuntu-server 与 windows 共享文件夹 设置 ubuntu 共享文件夹供 windows 访问 部分。

anaconda 多用户共享安装

多用户共享安装主要需要将 anaconda安装到/usr/local路径下,并在/etc/profile文件中添加以下语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/usr/local/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/usr/local/anaconda3/etc/profile.d/conda.sh" ]; then
. "/usr/local/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/usr/local/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<

最后,在终端输入:

1
$ source /etc/profile

修改conda源为清华源

清华大学开源软件镜像站:https://mirror.tuna.tsinghua.edu.cn/

修改conda源为清华源通过修改用户目录下的.condarc文件执行,每个用户都需要自行修改

1
2
3
4
5
6
7
8
9
10
11
12
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

vim相关配置

打开用户目录下的.vimrc文件,按需求进行简单配置

1
$ sudo vim ~/.vimrc

打开文件后,输入

1
2
3
4
5
6
set nu "显示行号
:set tabstop=4 "tab 空格数设为4
set laststatus=2 "底部显示打开文件名
syntax on "自动语法高亮
set cursorline "突出显示当前行
set hlsearch "搜索时高亮显示被找到文本

修改时区和时间

查看当前系统时间

1
2
$ date -R
Wed, 11 Sep 2019 15:51:52 +0800

北京地处东八区,如果显示的不是 0800,则需要对时区进行修改

1.运行 tzselect

1
2
#这里选择Asia,确认之后选择China,最后选择Beijing
$ tezselect

2.复制到 \etc 目录下

1
$ cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

3.再次查看时间,已修改为北京时间

1
$ date -R

Some say the world will end in fire,

Some say in ice.

From what I’ve tasted of desire

I hold with those who favor fire.

But if it had to perish twice,

I think I know enough of hate

To say that for destruction ice

Is also great

And would suffice.

-------------本文结束感谢阅读-------------
Thanks for your rewarding ~
0%