VPS 初始化实战:新云服务器到手后的配置清单
新买云服务器或 VPS 后先做什么?这份 Ubuntu 初始化教程覆盖 sudo 用户、SSH 公钥权限、终端环境、Go、Node.js、Nginx、MySQL 和 Redis。
新买一台云服务器或 VPS 后,我不会急着部署业务,而是先完成一套固定的 Ubuntu 初始化配置。这份清单适合准备部署网站、API、Node/Nuxt 项目或轻量 AI 工具服务的人,重点放在 SSH 公钥、sudo 用户、终端环境和常用服务这些真正容易踩坑的地方。
一、创建用户
云厂商的默认账号不统一,阿里云通常是 root,腾讯云有时是 ubuntu。我的习惯是统一新建一个 work 用户来操作,不直接用 root。
# 创建用户,-m 自动建 home 目录,-s 指定 bash
useradd -m -s /bin/bash work也可以用 useradd -m -s /bin/bash work 一步到位,自动建 home 目录并设好 shell,不需要再手动改 /etc/passwd。
二、赋予 sudo 权限
visudo # 推荐用 visudo,保存时会自动检查语法在 root 那行下面加上:
%work ALL=(ALL) NOPASSWD: ALL用 visudo 而不是直接 vim /etc/sudoers,写错语法会导致 sudo 整个失效,很麻烦。
三、配置 SSH 公钥登录
mkdir -p /home/work/.ssh
vim /home/work/.ssh/authorized_keys
# 把本地 ~/.ssh/id_rsa.pub 的内容粘贴进去
# 权限必须设对,否则 sshd 会拒绝
chown -R work:work /home/work/.ssh
chmod 700 /home/work/.ssh
chmod 600 /home/work/.ssh/authorized_keys只需要把公钥(id_rsa.pub)放到服务器,私钥(id_rsa)留在本地,不要复制到服务器上。
权限设置这两行不能省,chmod 700 和 chmod 600 如果缺失,sshd 会直接拒绝公钥登录,是新手最容易踩的坑。
四、初始化终端环境
这一步很多人会跳过,但配置好之后每天都在省时间。核心是两个配置文件:.bashrc 和 .inputrc。
.inputrc:让方向键有“记忆”
创建 ~/.inputrc,写入以下内容:
set match-hidden-files off
"\ep": history-search-backward
"\e[A": history-search-backward
"\e[B": history-search-forward立即生效:
bind -f ~/.inputrc~/.inputrc 文件bind -f ~/.inputrc 使配置生效重点是中间这三行。默认情况下按 ↑ 是从最近一条历史往前翻。配置之后是:先输入前缀,再按 ↑,只在匹配前缀的历史里搜索。
比如输入 git,再按 ↑,只会在 git 开头的历史命令里循环,不会跳到其他命令。实际效果:
git 后按 ↑,只在 git 命令中循环第一行 match-hidden-files off 是让 Tab 补全时不显示隐藏文件(.git、.env 之类),补全列表更干净。
.bashrc:终端基础配置
历史记录增强
export HISTCONTROL=ignoredups # 不记录连续重复的命令
export HISTTIMEFORMAT='%F %T ' # 历史命令显示时间戳执行 history 时会看到每条命令的执行时间,排查问题时很有用。
高频 alias
alias la='ls -Aalth' # 列全部文件,按时间排序,人类可读大小
alias tf='tail -f' # 看实时日志:tf /var/log/nginx/access.log
alias wget='wget -c' # 默认断点续传
alias grep='grep --color=always'
alias vi='vim'
alias vih='sudo vim /etc/hosts' # 快速编辑 hosts
alias rscp='rsync -v -P -e ssh' # 带进度条的 scp时间戳互转(对接接口、查日志时常用)
dt2um "2024-06-01 12:00:00" # → 1717214400000
um2dt 1717214400000 # → 2024-06-01 12:00:00提示符显示 Git 分支
配置之后,进入 git 仓库时提示符会自动显示当前分支名,效果类似:
[work@hostname:/your/project] → main#完整的 .bashrc 可以从这里获取:mini-linux-env
# 下载后直接移到 home 目录
git clone https://gitee.com/tetang1230/mini-linux-env.git
cd mini-linux-env
mv .bashrc .inputrc .gitconfig ..
cd ..
source .bashrc
bind -f ~/.inputrc五、安装必要软件包
sudo apt update && sudo apt upgrade -y
# 编译工具链
sudo apt install -y build-essential
# 常用库(编译 nginx 等会用到)
sudo apt install -y libpcre3-dev libssl-dev zlib1g-dev libxslt1-dev
# 运维日常工具
sudo apt install -y git curl wget jq htop tree unzip net-tools lsof rsync silversearcher-ag ctagsbuild-essential 已包含 gcc、g++、make 等,比单独安装更规范,后续编译其他软件也会用到。
六、安装 Go
前往 go.dev/dl 查看当前稳定版本号,替换下面的版本字符串。
# 下载并解压到 /work/service
sudo mkdir -p /work/service /work/go
wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz
sudo tar -C /work/service -xzf go1.22.4.linux-amd64.tar.gz
sudo chown -R work:work /work/go
rm go1.22.4.linux-amd64.tar.gz在 ~/.bashrc 末尾添加环境变量:
export GOPROXY=https://goproxy.io
export PATH=$PATH:/work/service/go/bin
export GOPATH=/work/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBINsource ~/.bashrc
go version # 验证七、安装 Node.js 与 Yarn
安装前先去 nodejs.org 确认当前 Active LTS 的版本号,再替换脚本里的数字。Node.js 只有偶数版本才会进入长期支持(LTS),生产环境不要装奇数版。
截至本文写作时,当前 LTS 是 Node.js 24。
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v && npm -v # 验证
npm install -g yarnNode.js 只有偶数版本才会进入 LTS(长期支持),奇数版本生命周期很短,生产环境只装偶数版。
八、安装 Nginx
Ubuntu 自带源的 Nginx 版本通常很旧,推荐加官方源安装,后续 apt upgrade 可以自动跟进新版本。
# 导入签名密钥
sudo apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null
# 添加官方稳定版源
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
# 设置优先级,防止被系统源覆盖
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
sudo apt update
sudo apt install -y nginx
nginx -v
sudo systemctl enable nginx && sudo systemctl start nginxUbuntu 自带源的 Nginx 版本通常很旧(22.04 自带的还是 1.18),官方源始终跟着稳定版走。
如果需要加载第三方模块(Lua、Brotli 等),再考虑源码编译,否则 apt 安装完全够用。
九、安装 MySQL 8
sudo apt install -y mysql-server
# 查看初始维护账号密码
sudo cat /etc/mysql/debian.cnf
# 用上面的账号登录,修改 root 密码
mysql -u debian-sys-maint -p登录后执行:
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;生产环境请设置足够复杂的密码,切勿使用 root、123456 等弱密码。
十、安装 Redis
sudo apt install -y redis-server
redis-cli ping # 返回 PONG 表示正常总结
以上就是我每次新开 VPS 会做的全部事情,从用户权限到服务安装,做完之后这台机器基本就可以直接投入使用了。
常见问题
新买 VPS 或云服务器后,第一步应该做什么?
先确认登录方式并创建日常操作用户,再配置 sudo 和 SSH 公钥登录。把权限和入口稳定下来后,再安装运行时和业务服务。
SSH 公钥登录为什么总是失败?
最常见原因是 .ssh 目录和 authorized_keys 权限不对。通常目录用 700,authorized_keys 用 600,并确保属主是实际登录用户。
VPS 初始化时一定要安装 Nginx、Node.js、MySQL 和 Redis 吗?
不一定。本文是面向网站、API、Nuxt/Node 项目和轻量服务的常用基线。如果只是静态站或临时测试机,可以按需删减。