服务器使用

Posted 云才哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器使用相关的知识,希望对你有一定的参考价值。


前言

小组服务器供组内多人使用(代代相传),维护困难,望各位遵守使用规则。当前为第一版使用说明:


提示:以下是本篇文章正文内容,下面案例仅供参考

一、服务器配置介绍

1、服务器系统及硬件:

  1. 服务器系统:CentOS7.9
  2. 服务器CPU:Intel® Core™ i7-7800X
  3. 服务器GPU:两张GeForce GTX 1080 Ti
  4. 服务器内存:32G
  5. 服务器硬盘:250G固态(系统盘)+2T机械

2、服务器系统用户

1.root用户:

  1. 家目录:/root
  2. 配额:50G

2.lxp用户:

  1. 家目录:/home/lxp
  2. 配额:176G

3、服务器磁盘挂载情况

  1. 固态硬盘:250G固态作为系统盘,其中50G供root使用,其余用户共用176G(目前只有lxp用户),另外的空间用作临时存储空间。
  2. 机械硬盘:2T的机械硬盘全部挂在/home/lxp/data目录下,供存放数据。

二、服务器使用介绍

1、目录使用:

  1. /home/lxp/software:安装软件路径,所有软件安装到此路径
  2. /home/lxp/data:保存数据路径,所有个人的数据或代码保存在此路径(建议在此目录创建个人数据目录,将个人数据保存至个人数据目录下)
  3. /usr/local/:cuda安装路径(此路径为默认路径,安装时一般不需要修改,在安装时需要注意查看,以方便cuda版本切换)
  4. /home/lxp/data/software_zip:用于存放各种软件或是驱动安装包,安装包下载不易,环境安装完成后就把它丢这个目录下吧

2、数据传输工具使用:

1.火狐浏览器:

使用火狐浏览器下载的文件默认保存在:/home/lxp/下载

2.wget命令:

使用wget命令下载时默认保存至当前命令目录,可以使用-P指定目录
wget -P /home/lxp/data URL路径

3.FTP服务器:

服务器已经开通FTP服务器,学校内网可以直接访问,使用ftp://172.20.(重启后变动,需要提前确定)连接

  1. 用户名:lxp
  2. 密码:123456
  3. 主目录:/home/lxp/data

3、lxp用户下使用yum(权限问题解决):

使用lxp用户直接使用yum时会提示权限不够,可以通过sudo命令解决(无需root用户权限):

#所有提示权限不够的命令,都可以通过加sudo解决(不要随意使用root用户权限)
sudo yum install wget

4、项目环境配置:

1、conda虚拟环境创建:

本系统下安装了Anaconda3,自带Python3.8
创建虚拟环境参考链接: Anaconda使用

2、框架安装:

由于框架的安装时间较长(以Pytorch为例),所以一般不在创建虚拟环境的时候安装Pytorch。而在安装cuda之前,需要根据项目所需的Pytorch框架找到对应的cuda版本。安装Pytorch以及cuda版本匹配可以参考官网链接

3、cuda安装:

cuda下载: 下载链接(可以先下载到/home/lxp/下载,目录下,安装完成后可以将其剪切到/home/lxp/data/software_zip目录下)。
如下以cuda_8.0.61_375.26_linux.run为例:

#首先切换目录之下载目录,并更改文件权限
sudo chmod 777 cuda_8.0.61_375.26_linux.run
sudo ./cuda_8.0.61_375.26_linux.run   #执行文件

按住空格(跳过安装协议文档)直到出现按下面的选项:
在这里插入图片描述
至此安装完成。

4、cudnn安装:

cudnn下载: 下载链接(下载对应已经安装cuda的cudnn版本,下载前需要先登陆)。
如下以cudnn-8.0-linux-x64-v7.1.tgz为例:

#首先切换目录之下载目录,将cudnn中的文件复制到cuda对应的文件中
tar -zxvf cudnn-8.0-linux-x64-v7.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include/ 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64/ 
sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*

5、系统默认cuda切换:(不建议修改,建议在启动虚拟环境时启用相应的cuda驱动,如下步骤6)

可以通过修改系统的环境变量来修改系统默认cuda版本,安装了多个CUDA的版本,那么可以在这些CUDA的版本之间切换(切换后记得安装对应的cudnn的版本)
在安装了多个cuda版本后,可以在/usr/local/目录下查看自己安装的cuda版本
只需要删除cuda软链接,然后重新建立指向另一个版本的软链接即可

#只需要删除原有链接,然后建立新的cuda链接即可
sudo rm -rf /usr/local/cuda
sudo ln -s /usr/local/cuda-10.1 /usr/local/cuda

6、Anaconda虚拟环境自动启用相应的cuda版本:

虚拟环境运⾏时,实际是从动态链接库的地址找需要的cuda动态链接库,所以我们只需要指定 cuda路径 . 即保证该环境启动时,把cuda 8的地址加⼊入到cuda路径 ,关闭该环境时再移除。以下以虚拟环境test_env为例。
激活时(activate)执行脚本:
在脚本文件中$v表示取变量值,变量直接命名

#1、创建环境启动时的脚本
mkdir -p /home/lxp/software/anaconda3/envs/test_env/etc/conda/activate.d
touch /home/lxp/software/anaconda3/envs/test_env/etc/conda/activate.d/activate.sh
#2、编辑脚本执行命令
vim /home/lxp/software/anaconda3/envs/test_env/etc/conda/activate.d/activate.sh
#在命令中加入写入如下命令:(注意替换路径)
#!/bin/sh
ORIGINAL_LD_LIBRARY_PATH_8=$LD_LIBRARY_PATH #取名时添加一个随即数字避免冲突
ORIGINAL_PATH_8=$PATH
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
#3、添加执行权限
chmod +x /home/lxp/software/anaconda3/envs/test_env/etc/conda/activate.d/activate.sh

关闭环境时(deactivate)执行脚本:

#1、创建环境启动时的脚本
mkdir -p /home/lxp/software/anaconda3/envs/test_env/etc/conda/deactivate.d
touch /home/lxp/software/anaconda3/envs/test_env/etc/conda/deactivate.d/deactivate.sh
#2、编辑脚本执行命令
vim /home/lxp/software/anaconda3/envs/test_env/etc/conda/deactivate.d/deactivate.sh
#在命令中加入写入如下命令:(注意替换路径)
#!/bin/sh
export LD_LIBRARY_PATH=$ORIGINAL_LD_LIBRARY_PATH_8
unset ORIGINAL_LD_LIBRARY_PATH_8
export PATH=$ORIGINAL_PATH_8
unset ORIGINAL_PATH_8
#3、添加执行权限
chmod +x /home/lxp/software/anaconda3/envs/test_env/etc/conda/deactivate.d/deactivate.sh

测试:(可以看到打开虚拟环境后切换到了指定的cuda版本,关闭虚拟环境后又还原到了原版本)
在这里插入图片描述

总结

暂时好像是一劳永逸,日后维护还得小心,第一版使用说明就这些吧!!!

参考文档:

1、Linux下CUDA的多版本安装及切换.
2、CentOS7安装NVIDIA显卡驱动.

以上是关于服务器使用的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 - Golang 实现简单的 Web 服务器

在 android 首选项片段中使用 startService()

markdown 在Intel Nuc上设置Ubuntu Web服务器,步骤和代码片段

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

片段中的 Asynctask 未到达 onPostExecute