服务器管理(一)—— 安装系统后的初始化配置

安装系统后的初始化配置

  • SSH禁用密码登陆,使用密钥登录
  • 命令行美化
  • 必装软件
    • Anaconda安装
    • gcc、make、g++
    • 英伟达显卡驱动安装
    • Matlab
    • cuda、cudnn
      • 方法一
      • 方法二
    • Samba:Windows共享Linux文件夹
    • Netdata:状态监控软件
    • opencv
  • 可选软件
    • 下载工具
    • s
    • 自动纠正错误软件The fuch
    • 查看电脑配置软件hwinfo
    • 小火车
    • 查看网速
      • nethogs
      • slurm


    写在开始:
    此系列博客是为了方便自己管理手下的服务器而写的。
    我希望这个系列可以囊括所有一切关于服务器管理的内容。
    我的目的是不参考其他的资料,完全按照这几篇博客里的内容操作一遍(命令可以直接拷贝而不用修改:),我就可以将一台刚刚重装完系统的服务器管理得井井有条。
    毕竟什么都靠脑子记住和谷歌查资料也太累了!
    虽然这些博客是写给我自己看的,但是也希望对你有帮助!

SSH禁用密码登陆,使用密钥登录

准备:用xshell远程连接,然后切换到root账户

编辑/etc/ssh/sshd_config文件

#启用密钥登陆
RSAAuthentication yes
PubkeyAuthentication yes
#禁止root远程登陆
PermitRootLogin no
#禁止密码登陆
PasswordAuthentication no

然后登录到打算使用私钥登录的账户(接下来就不要换到root了),执行命令

ssh-keygen

选择路径(按 Enter)。
然后输入密钥锁码,或直接按 Enter 留空(建议留空,实现无密码登录)。
接着在服务器上安装公钥。然后进入前面保存密钥的路径。

cat id_rsa.pub >> authorized_keys
#赋予文件权限
chmod 600 authorized_keys
chmod 700 ~/.ssh
#将私钥导出到本地(就是使用xshell的电脑)
#格式为:sz 文件名
sz id_rsa

弄好以后长这样
在这里插入图片描述
私钥、公钥可以导出来后重命名也可也在里面重命名

参考教程
设置 SSH 通过密钥登录
ssh修改登录端口禁止密码登录并免密登录


命令行美化

vim ~/.bashrc
#在最后添加如下代码
#To beautify the bash.
#Added by xzf
#2019.1.31
export PS1="\[\e[36;1m\]\u\[\e[0m\]@\[\e[33;1m\]\h\[\e[0m\]:\[\e[31;1m\]\w\[\e[0m\]\$ " #如果要加换行的话加转义字符\n,其他一样
#添加好后重新注入环境变量
source ~/.bashrc

建议谁要用给谁弄,不要添加到系统环境变量

参考教程:Bash美化、Linux终端bash美化教程


必装软件

Anaconda安装

安装+系统环境配置参考这个教程
更改源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

然后将现有的python的版本改成3.6(因为3.7太新了!!!)

conda install python=3.6

gcc、make、g++

各个版本的gcc和g++都安装一遍,需要啥版本就把软连接指向啥版本!

apt install make g++-4.8 g++-5 g++-6 g++-7 gcc-4.8 gcc-5 gcc-6 gcc-7

英伟达显卡驱动安装

推荐博客:How to install Nvidia drivers and cuda-10.0 for RTX 2080 Ti GPU on Ubuntu-16.04/18.04

  1. 先禁用Nouveau的驱动
sudo vim /etc/modprobe.d/blacklist.conf

在文本最后添加如下代码。(禁用nouveau第三方驱动,之后也不需要改回来)

blacklist nouveau
options nouveau modeset=0

然后执行

sudo update-initramfs -u

重启后,执行以下代码,若没有显示则禁用成功

lsmod | grep nouveau
  1. 遇到问题
    遇到这个问题 (perl: warning: Falling back to a fallback locale (“en_US.UTF-8”))[]
apt install locales-all
  1. 检测NVIDIA显卡型号:三种方法
//`方法一:使用ubuntu-drivers-common这个软件`
sudo apt install ubuntu-drivers-common
ubuntu-drivers devices
//`方法二`
lshw -numeric -C display //最好用sudo
//`方法三`
lspci -vnn | grep VGA
  1. 然后下载官方驱动。例如
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/410.93/NVIDIA-Linux-x86_64-410.93.run

然后给驱动run文件赋予执行权限

sudo chmod +x NVIDIA-Linux-x86_64-410.93.run

安装,可以加参数(安装驱动前可能需要先安装gcc和make)

sudo ./NVIDIA-Linux-x86_64-410.93.run 
//教程中加了很多参数,但是我把参数都去掉了

参数有
–no-opengl-files:表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环,英语一般称为”login loop”或者”stuck in login”。
–no-x-check:表示安装驱动时不检查X服务,非必需。
–no-nouveau-check:表示安装驱动时不检查nouveau,非必需。
-Z, --disable-nouveau:禁用nouveau。此参数非必需,因为之前已经手动禁用了nouveau。
-A:查看更多高级选项。

安装过程中遇到的选择如下:
选择continue
选择No
只能选OK
选择Yes


Matlab

参考我的另一篇教程:Ubuntu server 18.04 Matlab 命令行安装教程

cuda、cudnn

方法一

用conda在指定环境下安装。可以直接安装cudnn,这样可以自动安装cuda。
例如

#python2.7, cudnn=7.0.5, cuda=8.0
conda install cudnn=7.0.5

方法二

考虑到方法一使用的cuda针对的是python,并且用conda安装的cuda在/usr/local下没有cuda的文件夹,对于一些c++的代码或者需要cuda路径的代码,方法一就不行了。
接下来关于cuda和cudnn的内容是我在一台已经安装了nvidia-driver=410、cuda9.0、cudnn的ubuntu 18.04 server 服务器上安装cuda=8.0、cudnn=7.1.3后写下的,可能并不适用于你的情况,但我希望能提供一些参考的价值。步骤如下:

  1. 准备
    更换gcc和g++版本到4.8,没有4.8版本的话安装一下
cd /usr/bin/
rm gcc
ln -s gcc-4.8 gcc
rm g++
ln -s g++-4.8 g++
  1. 安装cuda8.0
    到cuda官网上下载.deb格式安装包。
    最好选择“local”而不是"network",因为我在用服务器安装的时候死活连不上nvidia的服务器!推荐在windows上用IDM下载好了传过去。(这句话是对我自己说的:)
    服务器管理(一)—— 安装系统后的初始化配置_第1张图片
    服务器管理(一)—— 安装系统后的初始化配置_第2张图片
    执行
dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
apt update
apt install cuda

之所以选择.deb格式而不是.run,是因为我在用.run格式安装的时候一直遇到"error: cannot find toolkit in /usr/local/cuda-8.0"的错误,怎么也解决不了。

  1. 安装cudnn7.1.3
    从cudnn官网上下载cudnn的时候选择library for linux,如下图
    服务器管理(一)—— 安装系统后的初始化配置_第3张图片
    执行
tar -xzvf cudnn-8.0-linux-x64-v7.1.tgz
cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64
chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*
  1. 后续问题
    安装完后,我发现驱动好像崩了;(
    在这里插入图片描述
    重启一下,发现不行
    在这里插入图片描述
    重新安装一遍驱动就好了
    服务器管理(一)—— 安装系统后的初始化配置_第4张图片
    如果需要测试cuda是否安装成功,可以跑一下示例代码。
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
./deviceQuery

出现如下文字表示成功
服务器管理(一)—— 安装系统后的初始化配置_第5张图片
有一些垃圾教程说可以使用nvcc -V来测试,但这个命令是用来测试cuda的编译器是否安装成功。如果你运行不了这个命令可以运行如下命令:

#其实安装了nvidia-cuda-toolkit就可以运行nvcc -V了
apt install nvidia-cuda-dev nvidia-cuda-toolkit nvidia-cuda-gdb

由于我手里的服务器同时使用了方法一和方法二,用anaconda跑代码(比如pytroch)使用的是用anaconda安装的cudatoolkit,见下图,所以我不知道只用方法二的话,anaconda能不能用cuda,有兴趣的话你可以试一下,反正我是不敢试的,毕竟搞崩了我可承受不起:)
在这里插入图片描述
服务器管理(一)—— 安装系统后的初始化配置_第6张图片
看了很多的教程(官方的和个人的、中文的和英文的),cuda、cudatoolkit、toolkit这些的名词的区别我还是不知道。

安装的时候可以参考英伟达官网上给出的cuda文档和cudnn文档

cuda和cudnn的版本关系可以参考这篇博客:TensorFlow版本配套关系表(cudnn、cuda、Python的配套关系,包含所有操作系统)
参考博客


Samba:Windows共享Linux文件夹

安装:官网

apt install smaba
#不知道为什么,在16.04下使用上面的命令搜不到,只能用apt-get了
apt-get install samba

官网给出的教程还要安装attr winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user,但是ta好像是为了进行域管理,我们暂时不需要,就不用安装。

配置:在/etc/samba/smb.conf末尾添加

[xzf]
path = /home/xzf
valid users = xzf
force user = xzf
create mask = 0755
browseable = yes
available = yes
read only = no
writeable = yes
public = yes

参数说明:
[xzf]:共享目录的名称
path:共享的目录
force user:使得操作的时候和服务端用户一样
create mask:创建文件属性
browseable:在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
read only:加上只是为了以防万一
writeable:不以只读方式共享当与read only发生冲突时,无视read only
public:公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)

添加一个普通账户,用于访问这个目录

#需要root权限
smbpasswd -a xzf

重启

#我在ubuntu 18.04和16.04测试的都是smbd,根网上的教程中用的smb或samba都不一样,可能是软件更新后命令不一样了吧
service smbd restart

Windows端,进入文件资源管理器,左侧列表里,对”网络“右键,添加”映射网络驱动器“,输入"\\192.168.1.102\xzf",输入前面用smbpasswd创建的用户名和密码。


Netdata:状态监控软件

前提:终端访问外网
脚本安装Netdata

bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)

不要使用sudo!!!脚本里用到的时候会让你输入密码的
安装路径为/opt/netdata/

安装第三方Nvidia GPU插件

#首先安装所需软件
#英伟达驱动和这个
pip install nvidia-ml-py	#最好在root下安装

#然后安装插件
git clone https://github.com/Splo0sh/netdata_nv_plugin --depth 1
sudo cp netdata_nv_plugin/nv.chart.py /opt/netdata/usr/libexec/netdata/python.d/
sudo cp netdata_nv_plugin/python_modules/pynvml.py /opt/netdata/usr/libexec/netdata/python.d/python_modules/
sudo cp netdata_nv_plugin/nv.conf /opt/netdata/etc/netdata/python.d/

因为安装的是static版本的,所以复制过去的路径和github中的不一样

重启Netdata

sudo service netdata restart

opencv

#安装各种所需的软件和依赖项。
#如果出现“Uable to locate package libjasper-dev", 删除之,否则编译报错。然后运行下面的代码。其他的找不到也一样的。
apt install build-essential libgtk2.0-dev libtbb-dev libvtk5-dev libjpeg-dev libopenexr-dev cmake git pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libpng-dev libtiff-dev libdc1394-22-dev

#
cd opencv-2.4.9/
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=OFF ..  
make -j4
make install

可选软件

下载工具

#BT下载工具(可能默认安装好了)
apt install transmission-cli
#aria2
apt install aria2

参考教程
transmission命令行工具集中文使用说明
aria2.conf配置文件

s

安装

#安装pip
sudo apt install python3-pip
#执行
pip3 install https://github.com/s/s/archive/master.zip
#安装完后检查是否为3.0.0版本,若显示Shadowsocks 3.0.0则进行下一步
ssserver --version

配置:创建s.json,然后复制粘贴一下内容并适当修改:

{
    "server":"服务器ip",
    "server_port":6666,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"连接密码",
    "timeout":300,
    "method":"aes-256-cfb"
}

启动Shadowsocks

ssserver -c /etc/s.json -d start

参考教程


自动纠正错误软件The fuch

参考这个教程


查看电脑配置软件hwinfo

//安装
sudo apt-get install hwinfo
//启动
hwinfo 
//或 
hwinfo --short

小火车

sudo apt install sl
LS

查看网速

nethogs

sudo apt install nethogs

slurm

sudo apt install slurm

你可能感兴趣的:(服务器管理(一)—— 安装系统后的初始化配置)