云服务器 Linux 起手式,为什么你的 shell 这么好看?
开发运维人员经常与黑乎乎的终端打交道,使用体验差、效率低。一些用户了解可使用各类软件如oh-my-zsh等来优化用户体验,但在云服务器配置过程中面临的网络访问困难、重复配置效率低下等痛点。本文介绍 Linux 环境起手式,安装必备的软件,包括 zsh、oh-my-zsh、git、docker 等。
关键词:云服务器配置、国内网络优化、oh-my-zsh、Docker、系统镜像
面向云服务器环境,开发、运维工程师,特别适用于国内网络。
注:本文所有的命令都是在 Ubuntu 22.04 LTS 上测试通过的,基于腾讯云服务器。
操作系统 Ubuntu 22.04 LTS
在国内的开发环境中,Ubuntu 是非常流行的,可与之相提并论的 Debian。Ubuntu 更注重用户体验,而 Debian 更注重稳定性。
LTS 版本是 Long Term Support 的缩写,意思是长期支持版本。
推荐选择20.04或22.04等LTS版本,不太推荐24.04是因为新版本配套软件可能不完善,容易出现难以解决的问题。
初始化服务器系统时,支持多种类型:使用应用模板、基于操作系统镜像、使用容器镜像、使用自定义镜像,可根据实际情况选择。

启动后可以首先执行基本的系统初始化配置,比如更新软件包列表、升级系统软件等。
# 更新软件包列表
sudo apt update && sudo apt upgrade -y国内云服务厂商的都默认了依赖包安装源,无需修改。如果是在 VMWare 上安装 Ubuntu 22.04 LTS,需要注意的是,默认的安装源是 Ubuntu 官方的源,而不是国内的源,需要手动修改为国内的源。
Git 配置
git 是版本控制工具,用于管理代码的版本,Linux 操作系统发行版本一般都默认安装,直接进行配置即可。
git --version # 先查看下 git 版本,验证是否安装
git config --global user.name "your_name"
git config --global user.email "your_email@example.com"
git config --global init.defaultBranch main # 设置默认分支为 mainGithub、Gitee、Gitlab 等代码托管平台都支持 SSH 协议,你可以在本地生成 SSH 密钥对,然后将公钥添加到代码托管平台的账户中。
# 生成SSH密钥
ssh-keygen -t ed25519 -C "your_email@example.com"
# 私钥文件:~/.ssh/id_ed25519
chmod 700 ~/.ssh/id_ed25519 # 设置低权限建议一次生成密钥对后,自行保存管理(比如放到密码管理工具),可以重复使用,分发到其他服务器。
注:Ed25519 是一种 SSH 密钥算法,它比传统的 RSA 算法更安全,也更快速,已经基本取代 RSA 和 ECDSA。
主机名称更换
默认名为VM-XXX,可以根据偏好更换,尤其是需要在多台服务器之间切换时。
hostnamectl set-hostname <新主机名>默认 SHELL:zsh
Linux 操作系统中默认的 SHELL 是 bash,但是 bash 比较旧,功能也比较有限。macOS 从版本10.15 Catalina(2019年)开始,默认的 SHELL 由Bash 切换到 zsh。
zsh 确实更强大,功能丰富,支持更好的自动补全和主题定制。
sudo apt install zsh
# 设置为默认shell
chsh -s /bin/zsh检查当前 SHELL 是否为 zsh:
echo $SHELLzsh 增强,oh-my-zsh
oh-my-zsh 是一个社区驱动的 zsh 配置框架,它提供了很多有用的功能,比如插件、主题等。

安装 oh-my-zsh
国内云服务器网络访问 GitHub 可能会比较慢,我基于GitHub官方安装脚本和国内清华源镜像,使用大模型生成的安装脚本
#!/bin/bash
#
# Oh My Zsh 一键安装脚本 - 清华源版本
# 解决国内网络访问GitHub困难的问题
#
# 设置清华源镜像
OHMYZSH_REPO="https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git"
ZSH_SYNTAX_HIGHLIGHTING_REPO="https://mirrors.tuna.tsinghua.edu.cn/github/zsh-users/zsh-syntax-highlighting.git"
ZSH_AUTOSUGGESTIONS_REPO="https://mirrors.tuna.tsinghua.edu.cn/github/zsh-users/zsh-autosuggestions.git"
ZSH_COMPLETIONS_REPO="https://mirrors.tuna.tsinghua.edu.cn/github/zsh-users/zsh-completions.git"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查命令是否存在
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# 检查是否已安装zsh
check_zsh_installed() {
if ! command_exists zsh; then
log_error "zsh 未安装,请先安装 zsh"
echo "安装命令:sudo apt install zsh"
exit 1
fi
}
# 检查当前shell
check_current_shell() {
local current_shell=$(basename "$SHELL")
if [ "$current_shell" = "zsh" ]; then
log_success "当前shell已经是 zsh"
return 0
else
log_warning "当前shell是 $current_shell,建议切换为 zsh"
return 1
fi
}
# 安装 Oh My Zsh
install_ohmyzsh() {
log_info "开始安装 Oh My Zsh..."
# 备份现有的 .zshrc 文件
if [ -f "$HOME/.zshrc" ]; then
log_info "备份现有的 .zshrc 文件"
cp "$HOME/.zshrc" "$HOME/.zshrc.backup.$(date +%Y%m%d%H%M%S)"
fi
# 克隆 Oh My Zsh 仓库
if git clone --depth=1 "$OHMYZSH_REPO" "$HOME/.oh-my-zsh"; then
log_success "Oh My Zsh 克隆成功"
else
log_error "Oh My Zsh 克隆失败"
exit 1
fi
# 复制模板配置文件
if [ -f "$HOME/.oh-my-zsh/templates/zshrc.zsh-template" ]; then
cp "$HOME/.oh-my-zsh/templates/zshrc.zsh-template" "$HOME/.zshrc"
log_success "配置文件已创建"
else
log_error "找不到模板配置文件"
exit 1
fi
}
# 显示安装完成信息
show_completion_info() {
echo
log_success "Oh My Zsh 安装完成!"
}
# 主函数
main() {
echo "=========================================="
echo " Oh My Zsh 一键安装脚本 - 清华源版本"
echo "=========================================="
echo
# 检查前置条件
check_zsh_installed
check_current_shell
# 安装过程
install_ohmyzsh
show_completion_info
}
# 执行主函数
main "$@"将上述脚本保存为 install-oh-my-zsh.sh,然后执行:
chmod u+x install-oh-my-zsh.sh
./install-oh-my-zsh.shGitHub 官方安装脚本:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"其他第三方提供的安装方式:
sh -c "$(curl -fsSL https://gitee.com/shmhlsy/oh-my-zsh-install.sh/raw/master/install.sh)"oh-my-zsh 配置
oh-my-zsh 提供了很多插件,可以根据自己的需求安装,这里介绍几个常用的插件。
主题 Theme
默认主题是 robbyrussell,可以变更为 agnoster 主题,需要修改 ~/.zshrc 文件:
ZSH_THEME="agnoster"也需要安装字体:
sudo apt-get install fonts-powerline这两个均是最经典的主题,可以根据自己的偏好选择。
插件 Plugins
使用 Gitee 资源安装插件
# zsh-syntax-highlighting 插件
git clone https://gitee.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# zsh-autosuggestions:自动建议
git clone https://gitee.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# zsh-completions:命令补全
git clone https://gitee.com/wangnd/zsh-completions.git ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions
# autojump 自动跳转插件
sudo apt-get install autojump需要编辑 ~/.zshrc 文件以使得插件生效:
# 找到plugins=(...) 并修改
plugins=(
git
zsh-syntax-highlighting
zsh-autosuggestions
zsh-completions
docker
)
# 初始化自动补全系统
autoload -U compinit && compinit
# 最后一行添加
. /usr/share/autojump/autojump.sh最后,执行 source ~/.zshrc 使配置生效。
容器支持,Docker 刚好
Docker 是现代应用部署的标准方式,学习曲线平缓,功能强大。
安装 Docker
容器技术已经成为现代应用部署的标准方式,Docker 和 Kubernetes 是两个主要的容器编排工具。一句话论述:单机环境下,Docker 足够,并且是最佳的。
推荐使用云服务厂商提供的安装文档,本文使用的是腾讯云,可能无法跨云服务器使用,可自行搜索。
推荐查看腾讯云安装文档,因为本文并不能保证是最新的,安装步骤可能会有变化。
腾讯云安装 Docker https://cloud.tencent.com/document/product/1207/45596
添加 Docker 软件源
sudo apt-get update
sudo apt-get install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/ \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update安装 Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin检查 Docker
# 检查 Docker 服务状态
systemctl status docker
# 检查 Docker 信息
docker info给普通用户增加权限
默认情况下,执行 docker 命令需要 sudo 权限,可以通过将用户添加到 docker 组来解决:
# 将当前用户添加到docker组
sudo usermod -aG docker $USER
# 重新登录或重新加载组权限
newgrp docker
# 验证权限
docker ps配置国内镜像源
Docker 默认的镜像源是DockerHub,由于网络原因,建议配置国内镜像加速器。
# 创建Docker配置目录
sudo mkdir -p /etc/docker
# 配置镜像加速器(腾讯云、阿里云)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://registry.cn-hangzhou.aliyuncs.com"
]
}
EOF
# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker使用 docker info | grep "Registry Mirrors" && echo "镜像源配置成功" 查看镜像源是否配置成功。
系统镜像
系统镜像(快照)是将系统当前状态保存为一个文件,后续可以直接使用这个镜像创建新的虚拟机,而不需要重复配置。无论是VMWare、阿里云还是腾讯云,均支持该服务。
上述章节中安装的基础软件,除了 ssh 私钥 id_ed25519 以及 git 基础配置,其余内容均是用户无关的,这也是可以轻松更新的。
因此,可以将系统当前状态保存为一个镜像,后续可以直接使用这个镜像创建新的虚拟机,作为开发环境的起点。

腾讯云提供5个自定义镜像免费额度:

总结
本文是给国内开发运维人员用的云服务器配置指南,以Ubuntu 22.04系统为例。主要介绍了服务器环境下的必备软件,以及如何安装,内容包括:Git、zsh、oh-my-zsh、Docker,以及将系统制作为镜像(快照,或时间机器),便于迁移和分发,不再需要重复配置。
参考
- Ubuntu系统下Oh My Zsh安装与配置全流程指南,https://comate.baidu.com/zh/page/4r7iiun4tmz
- Ubuntu 命令行安装 zsh、oh-my-zsh、插件以及相关配置,https://convivae.top/posts/ubuntu-ming-ling-xing-an-zhuang-zsh-oh-my-zsh-cha-jian-yi-ji-xiang-guan-pei-zhi/
- Docker 官方文档,https://docs.docker.com/
- Ubuntu 22.04 官方文档,https://ubuntu.com/server/docs
- oh-my-zsh Themes,https://github.com/ohmyzsh/ohmyzsh/wiki/themes
- 腾讯云,安装 Docker 并配置镜像加速源,https://cloud.tencent.com/document/product/1207/45596