搞了这么多年开发,我发现很多人拿到新 VPS 后都是一顿瞎操作,要么安全性不够,要么性能太差。其实配置服务器也是有套路的,掌握了这套流程后,基本上 10 分钟就能搞定一台生产级服务器。
今天就把这些年总结的 VPS 配置经验分享出来,从基础安全到性能优化,涵盖一个完整的服务器配置流程。这套方法已经在生产环境中验证过很多次。
一、基础安全配置
1. 更改 SSH 端口
为什么要改 SSH 端口?因为全世界的扫描器都在盯着 22 端口,通过长期观察发现,不改端口的话,服务器天天都在被爆破。
1
2
3
4
5
6
7
8
| # 编辑 SSH 配置
vi /etc/ssh/sshd_config
# 找到 Port 这一行,把 22 改成你想要的端口
Port 12345
# 重启 SSH 服务
systemctl restart sshd
|
2. 配置密钥登录
密码登录真的不安全,这几年见过太多服务器因为弱密码被黑的案例。服务器早就改成了密钥登录,密钥登录才是王道。
首先生成 SSH 密钥:
1
2
3
4
5
| # 如果你还没有密钥
ssh-keygen -t ed25519
# 复制公钥到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@your_server_ip
|
然后禁用密码登录:
1
2
3
4
5
6
7
8
9
10
| # 编辑 SSH 配置
vi /etc/ssh/sshd_config
# 添加或修改以下配置
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
# 重启 SSH 服务
systemctl restart sshd
|
二、系统优化
1. 开启 BBR 拥塞控制
BBR 是 Google 开发的拥塞控制算法,对网络性能提升特别明显。特别是在高延迟网络环境下,实际测试效果非常显著。
1
2
3
4
5
6
7
8
9
10
11
12
13
| # 检查是否已开启 BBR
lsmod | grep bbr
# 如果没有返回结果,执行以下命令
modprobe tcp_bbr
echo "tcp_bbr" | sudo tee --append /etc/modules-load.d/modules.conf
# 添加系统参数
echo "net.core.default_qdisc=fq" | sudo tee --append /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee --append /etc/sysctl.conf
# 生效配置
sysctl -p
|
2. 配置 SWAP 虚拟内存
对于小内存 VPS(1GB 及以下),SWAP 特别重要。很多云服务商默认不配置 SWAP,观察到的结果是内存一用完系统就开始杀进程。
1
2
3
4
5
6
7
8
9
10
11
12
| # 创建 2GB 的 SWAP 文件
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
# 设置开机自动挂载
echo '/swapfile none swap sw 0 0' >> /etc/fstab
# 优化 SWAP 参数
echo 'vm.swappiness=10' >> /etc/sysctl.conf
echo 'vm.vfs_cache_pressure=50' >> /etc/sysctl.conf
|
3. 清理防火墙规则
很多系统默认的防火墙配置很混乱,习惯先清空再重新配置。这样可以避免很多潜在的冲突。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # 清空所有 iptables 规则
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -F
iptables -X
# 设置默认策略
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
# 保存配置
iptables-save
|
三、安装基础工具
1. 安装 Docker
Docker 现在基本上是必备工具了,所有项目都离不开容器化,安装也很简单:
1
2
3
4
5
6
7
8
9
| # 非大陆服务器
curl -fsSL <https://get.docker.com> | bash
# 大陆服务器(使用镜像加速)
curl <https://install.1panel.live/docker-install> -o docker-install && sudo bash ./docker-install
# 启动并设置开机自启
systemctl enable docker
systemctl start docker
|
2. 配置 Nginx QUIC
HTTP/3 已经成为主流,在实际项目中测试发现性能提升明显,推荐直接安装支持 QUIC 的 Nginx 版本。
1
2
3
4
5
6
7
8
9
10
11
| # 添加 Nginx QUIC 源
curl -sS <https://n.wtf/public.key> | gpg --dearmor > /usr/share/keyrings/n.wtf.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/n.wtf.gpg] <https://mirror-cdn.xtom.com/sb/nginx/> $(lsb_release -sc) main" > /etc/apt/sources.list.d/n.wtf.list
# 安装 Nginx
apt update
apt install nginx-extras -y
# 设置开机自启
systemctl enable nginx
systemctl start nginx
|
四、开发环境配置
1. 配置 ZSH
默认的 bash 体验真的不太好,用了多年 bash 后发现 ZSH 更好用,推荐换成 ZSH + Oh My Zsh。
1
2
3
4
5
6
7
8
9
10
11
12
| # 安装 ZSH
apt install zsh curl
# 安装 Oh My Zsh
sh -c "$(curl -fsSL <https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh>)"
# 设置 ZSH 为默认 Shell
chsh -s /usr/bin/zsh
# 安装常用插件
git clone --depth=1 <https://github.com/zsh-users/zsh-syntax-highlighting.git> ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone --depth=1 <https://github.com/zsh-users/zsh-autosuggestions> ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
|
然后配置 .zshrc:
1
2
3
4
5
6
7
8
| # 编辑插件配置
vi ~/.zshrc
# 在 plugins 行添加
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
# 重新加载配置
source ~/.zshrc
|
2. 配置 VIM
如果习惯用 VIM,建议花点时间配置一下,能提升很多体验。配置就很简单但实用。
1
2
3
4
5
6
7
8
9
| # 安装 VIM
apt install vim-gtk3 git
# 下载 Molokai 配色方案
mkdir -p ~/.vim/colors/
wget <https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim> -O ~/.vim/colors/molokai.vim
# 安装 Vundle 插件管理器
git clone --depth=1 <https://github.com/VundleVim/Vundle.vim.git> ~/.vim/bundle/Vundle.vim
|
然后配置 .vimrc:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| " 基础配置
set nocompatible
set number
set syntax on
set tabstop=4
set shiftwidth=4
set expandtab
set hlsearch
set incsearch
" 配色方案
colorscheme molokai
" Vundle 配置
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 插件列表
Plugin 'VundleVim/Vundle.vim'
Plugin 'jiangmiao/auto-pairs'
Plugin 'itchyny/lightline.vim'
call vundle#end()
|
五、安全加固
1. 安装 Fail2Ban
Fail2Ban 是一个非常好用的防爆破工具,基本上每台服务器都需要,基本上每台服务器都会装。
1
2
3
4
5
| # 安装 Fail2Ban
apt install fail2ban
# 创建本地配置
vi /etc/fail2ban/jail.local
|
配置内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [DEFAULT]
ignoreip = 127.0.0.1
backend = systemd
bantime = 86400
findtime = 86400
maxretry = 3
[sshd]
enabled = true
port = 12345 # 你修改的 SSH 端口
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
|
1
2
3
| # 启动并设置开机自启
systemctl enable fail2ban
systemctl restart fail2ban
|
2. 配置防火墙
推荐使用 UFW,配置简单直观:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # 安装 UFW
apt install ufw
# 默认策略
ufw default deny incoming
ufw default allow outgoing
# 允许 SSH 端口(修改后的端口)
ufw allow 12345/tcp
# 允许 HTTP/HTTPS 端口
ufw allow 80/tcp
ufw allow 443/tcp
# 启用防火墙
ufw enable
|
六、性能监控
1. 基础监控脚本
习惯在服务器上放一个简单的监控脚本,定期检查系统状态很重要:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #!/bin/bash
# simple_monitor.sh
echo "=== 系统监控报告 $(date) ==="
echo "CPU 使用率:"
top -bn1 | grep "Cpu(s)" | awk '{print $2}' | awk -F'%' '{print $1}'
echo "内存使用情况:"
free -h
echo "磁盘使用情况:"
df -h
echo "网络连接数:"
ss -s
echo "=== 监控完成 ==="
|
2. 设置定时任务
1
2
3
4
5
| # 编辑 crontab
crontab -e
# 添加每小时的监控任务
0 * * * * /path/to/simple_monitor.sh >> /var/log/system_monitor.log 2>&1
|
总结
这套配置流程用了好几年了,基本能满足大部分场景的需求:
安全第一:SSH 端口修改、密钥登录、Fail2Ban、防火墙
性能优化:BBR 拥塞控制、SWAP 配置、内核参数调优
开发体验:ZSH + Oh My Zsh、VIM 配置、Docker 安装
网络加速:HTTP/3 支持、QUIC 协议
最后提醒一下:配置完成后一定要做一次完整的备份,吃过亏,知道 SSH 配置和防火墙规则特别重要,避免后续出现问题无法登录。
如果觉得这篇文章对你有帮助,欢迎点赞收藏。有任何问题也可以在评论区讨论,我会及时回复。