上一篇post从全局角度讲解了做视觉开发、研究的服务器基础环境配置问题,本文是对上篇文章的深入,讲解实施细节。具体来说,当 Ubuntu 系统装好以后,
- 如何为新用户创建友好的、易用的Shell —— 用户在Ubuntu服务器上操作,Shell是用户和系统最主要的交互工具
- 有人可能好奇,Shell都是命令行操作,还有友好、易用之分?根据新用户指南配置完成,你就切身体会到了:原生的Shell只是让你能够使用系统,并不能让你高效方便的使用系统
- 在多用户使用的情况下,如何共享数据资源 —— 节省时间、提高效率,比如常用的miniconda3安装包,下载一份多人使用即可
- 服务器数据共享的方式有很多种,我们采用文件夹权限共享的方式
写在前面
实验室公共设施,请大家按照要求操作,便利自己便利他人
- 实验室服务器是一台硬件配置较高的机器,常用软件已经下载或配置好,并由专门的人员运维,满足不同项目需求和环境配置,为同学们科研和开发提供便利。
- 查看已安装软件列表
- 使用范围:做课程、项目、论文
- 运维服务器的人员可能牺牲了他的休息时间、写论文时间、思考问题时间无偿为同学们提供服务,请大家遵循 “便利自己也便利他人” 原则,严格按照要求操作:
- 新用户默认是普通用户,没有管理员权限,如果有机器使用问题:
- 请在“服务器”群说明问题和需求,由管理员处理;
不要单独私信管理员
,“服务器”群就是让大家都了解服务器相关信息,提高沟通覆盖面,避免相同的问题重复回答 - 管理员会尽可能在短期内查看并解决问题,但大不可能立马停下手头的事情帮你解决问题,因为他要做的事情也很多 (:
- 为保证机器长期稳定有序运行,谢绝向管理员索要管理员权限(受老师委托)
- 请在“服务器”群说明问题和需求,由管理员处理;
- 欢迎你~ 祝你机器用得顺、实验做得好,论文发得早!
新用户指南
管理员创建好一个用户,系统会给用户配置默认的Shell ——
bash
,它对用户并不很友好;用户需要切换到对 ta 更好的zsh
- 【忽略这一步,已由管理员完成】首先需要安装
zsh
,因为它没有内置在 Ubuntu 系统;确保有管理员权限,然后执行如下命令sudo apt install zsh
- 把Shell切换成
zsh
,执行如下命令chsh -s $(which zsh)
- 进入目录
/mnt/sdb/public/software
,执行如下命令cd /mnt/sdb/public/software
- 用
zsh
安装ohmyzsh
,执行如下命令sh ohmyzsh-install.sh
NOTE:
安装过程中,需要确认的地方输入y
;默认安装在了用户主目录下的这个位置~/.oh-my-zsh
Shell
里几乎都是用命令操作,zsh 提供了一些插件方便命令行操作,以下插件建议安装,你会发现这能大大提高工作效率。-
plugins:
git
,tmux
,autojump
,fzf
,zsh-autosuggestions
,zsh-syntax-highlighting
- 以
zsh-autosuggestions
,zsh-syntax-highlighting
,fzf-zsh-plugin
为例介绍安装过程- step 1:下载
zsh-autosuggestions
到指定目录git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting git clone https://github.com/unixorn/fzf-zsh-plugin ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fzf-zsh-plugin
- step 2:打开文件
~/.zshrc
,把zsh-autosuggestions
等添加到 plugins 列表plugins=(fzf-zsh-plugin zsh-autosuggestions zsh-syntax-highlighting)
- NOTE:这里
zsh-syntax-highlighting
要放在 plugins 列表的最后一项,引用自它的官方文档
- step 1:下载
- 这篇文章总结了更多实用的
zsh
插件,建议根据需要安装
-
- 为了使用GPU,需要设置
cuda
环境变量,在~/.zshrc
文件末尾添加如下两行代码export CUDA_HOME=/usr/local/cuda export PATH=$CUDA_HOME/bin:$PATH
- 至此,默认的
bash
已切换成zsh
;以后配置环境变量,在~/.zshrc
配置即可;修改后让变更生效,执行如下命令source ~/.zshrc
- 【$\color{red}{必要操作}$】配置密钥登录。配置好后,用户每次登录服务器无需手动输入密码,解除多次输入密码被封IP的风险,可谓既方便又安全。配置方式如下,用户需要首先在自己电脑安装 Git(如已安装请忽略),然后打开自己电脑安装好的 Git Bash,输入如下命令
ssh-keygen # 生成`公钥-私钥`对 cd /c/Users/Zhangsan/.ssh # 这一步的操作是切换到存放 ssh 公钥文件的目录(该公钥文件以 .pub 后缀结尾),我使用的是 Windows 系统,用户名是 Zhangsan;你需要根据你的系统,切换到对应目录 ssh-copy-id -i id_rsa.pub <username>@<hostname> # <username> 替换成本人用户名,<hostname> 替换成服务器ip地址,这条命令是将公钥写入服务器~/.ssh/authorized_keys文件
- 若使用
Python
开发,请安装miniconda
环境(不推荐安装Anaconda
:miniconda
即轻量又能实现同样的功能)- step 1:切换到共享软件目录
cd /mnt/sdc/public/software
- step 2:安装
miniconda
环境 —— 配置均为默认sh Miniconda3-latest-Linux-x86_64.sh
- step 1:切换到共享软件目录
- 修改自身账户初始密码。管理员为用户设置了初始密码,用户登录后需自行修改
- 修改方法见 账户安全 第
1
条
- 修改方法见 账户安全 第
数据和软件共享
- 服务器单独配备多块数据硬盘,每块容量为4T,专用于存放用户数据(代码/文档/数据集等),挂载到
/mnt
目录,如/mnt/sdb
/mnt/sdc
/mnt/sdd
/mnt/sde
- $\cdots$
- 其子目录
public/
用于服务器多用户共享数据、存放大文件 - 注意: 用户主目录
/home/<username>
下不要存放文件,/home/<username>
占用空间超过15G会被定期清除,数据文件存放于数据盘下,如/mnt/sdc/public/data/<username>
- 如果不清楚如何挂载机械硬盘到
Ubuntu
系统,参考这篇 blog;用户不需要做这一步,已由管理员完成
- 共享文件夹目录结构:
public/
-
— data/
: 共享常用数据集、大的数据文件 -
— software/
: 共享常用软件、安装包 -
— 操作指南.txt
-
-
事先确认要存放的文件是常用的、有必要共享的,再放入对应的文件夹
- 常用数据集已经下载好,例如
- COCO
- ImageNet
- KITTI
- MondelNet / SUN RGBD / S3DIS
- $\cdots$
- $\color{red}{NOTE}$ 用户应下载数据集前应查看各块硬盘下的
common-datasets
目录,若目标已存在不要重复下载
- 对于用户自己的大数据文件
- 每个用户主目录下不要存放 大数据文件,因为“根目录/”只剩400G+空间,这部分要留给一些重要的程序和软件用
- 大的数据文件存放于
/mnt/sdc/public/data/<username>/
目录下,将<username>
替换成自己的用户名,建立目录mkdir /mnt/sdc/public/data/hs
- 修改刚才建立的文件夹的权限,共享给其他用户
chmod o+rx /mnt/sdc/public/data/hs
- 用户将文件拷贝到
/mnt/sdc/public/data/
、/mnt/sdc/public/software/
或者/mnt/sdc/public/data/<username>/
,务必修改文件权限,这样其他用户才能使用,修改命令如下chmod o+rx <filename>
e.g. chmod o+rx Miniconda3-latest-Linux-x86_64.sh
- 用户对共享目录有读、写、执行权限,【请勿删除、修改】
public/
目录下的任何文件
账户安全
互联网上时时刻刻都存在着安全风险和恶意程序,各位同学$\color{red}{务必重视自身账户安全}$,防止个人账户被攻破,导致服务器中毒,丢失资料,影响科研进展
下面这张图是本服务器真实记录的非法用户尝试登录信息,每天都有大量这样的日志,不可不防!
- 用户层面
- $\color{red}{修改密码,提升强度}$:至少12位,包含数字、大写、小写、特殊符号四类字符。命令行输入
passwd
- 之后根据提示完成修改密码操作
- 在自己笔记本电脑上生成
公钥-私钥
对,配置ssh密钥登录,优点在于每次登录时无需手动输密码,操作参见第5条,这样每次登录既方便又安全
- $\color{red}{修改密码,提升强度}$:至少12位,包含数字、大写、小写、特殊符号四类字符。命令行输入
- 系统层面
- 【已由管理员完成】,详细操作参见 some measures to secure a linux server
公共帐户
为了满足用户临时(短期)使用服务器的需求,管理员建立了
test
公共用户,该用户与其他用户的唯一区别是:可由多个不同人员同时登陆并使用。
test
用户登陆密码请向管理员咨询,但需遵循以下原则:- 用户登录后,务必
在主目录下
创建以自己姓名全拼命名的文件夹,杜绝直接在主目录下操作,例如一个人员名叫张三,他需要创建mkdir zhangsan
- 使用服务器时,张三 用户需要切换到
第2步
创建的文件夹——相当于自己的工作区,以后都在自己的工作区操作,其他用户道理类似cd zhangsan
- 用户登录后,务必
test
用户同样能够查看和使用公共数据区/mnt/sdc/public/data/
、/mnt/sdc/public/software/
,更多说明见上文数据和软件共享test
用户短期内使用完服务器,备份好数据资料后,务必清除创建的文件夹- 例如,张三清除自己的工作区,执行
cd ~/home/test rm -rf ~/home/test/zhangsan
- 如果
/mnt/sdc/public/data/
、/mnt/sdc/public/software/
存放有自己的数据,进行类似的清除操作 - 使用完毕服务器,如果用户不自行清除数据资料,系统会定期清除,丢失不负责
- 例如,张三清除自己的工作区,执行
已安装软件列表
- CUDA Toolkit
- 包含使用GPU的一套工具
- 现有版本:10.0、10.2、11.6
- GPU配置的CUDA 11.6
- shell
- zsh
- 终端分屏/后台运行
- tmux、screen
- ROS、SLAM学习
- ros、eigen、sophus、g2o、ceres
- 容器/独立环境
- docker, nvidia-docker
- 编程工具
- MATLAB、C++ suites (CMake/GCC/g++)
相关文档
- 上一篇:视觉项目研发环境配置
- 下一篇:服务器GPU配置