Debian 服务器从装好到上线:新手也能照着做的生产环境实战指南
Debian 新手入门指南|生产环境实测
适用对象:刚接触 Linux、准备在服务器/虚拟机/云主机上使用 Debian 的新手;也适合从 Ubuntu、CentOS、Rocky Linux 等发行版迁移到 Debian 的运维或开发人员。
测试环境:Debian 12 Bookworm,云服务器与本地虚拟机均有实际部署经验,重点面向生产环境常见操作。
一、为什么生产环境推荐 Debian?
Debian 是 Linux 世界中非常经典、稳定且影响力极大的发行版。很多发行版,例如 Ubuntu、Linux Mint、Kali Linux 等,都基于 Debian 构建。对于生产环境来说,Debian 最大的优势不是“功能最新”,而是稳定、可靠、社区成熟、软件包管理规范。
在实际生产环境中,服务器通常不追求软件版本永远最新,而更关注以下几点:
- 系统稳定性
- 安全更新及时
- 软件源可靠
- 长期维护成本低
- 文档和社区资料丰富
- 适合自动化部署和批量管理
Debian 在这些方面表现非常优秀。尤其是 Debian Stable 分支,软件包经过较长时间测试,出现重大问题的概率相对较低。对于 Web 服务、数据库、反向代理、缓存服务、CI/CD 节点、内部工具服务器等场景,Debian 都是一个非常稳妥的选择。
当然,Debian 也不是没有缺点。它的软件版本通常不会特别新,如果你需要最新版内核、最新版桌面环境或某些非常新的开发工具,可能需要额外配置 backports、第三方源,或者手动安装。但从生产角度看,这种“保守”往往正是它的优势。
二、Debian 版本选择:新手应该装哪个?
Debian 通常分为几个分支:
| 分支 | 特点 | 是否推荐生产使用 |
|---|---|---|
| Stable | 当前稳定版,软件经过充分测试 | 强烈推荐 |
| Testing | 测试版,软件较新,但稳定性略差 | 不推荐生产 |
| Unstable/Sid | 滚动开发版本,面向开发者 | 不推荐生产 |
| Oldstable | 上一个稳定版,仍有安全维护 | 可用于老系统维护 |
对于新手和生产环境,建议直接选择:
Debian 12 Bookworm Stable
如果你的服务器已经在运行 Debian 11 Bullseye,只要安全更新仍然支持,也可以继续使用。但新部署的机器,一般推荐安装当前 Stable 版本。
三、安装 Debian 前的准备工作
如果你是在云服务器上使用 Debian,通常只需要在创建实例时选择 Debian 镜像即可。如果是在本地服务器或虚拟机中安装,需要准备以下内容:
- Debian 官方 ISO 镜像
- 一个 U 盘或虚拟机安装介质
- 网络连接
- 服务器登录账号规划
- 磁盘分区方案
建议从 Debian 官方网站下载镜像:
https://www.debian.org/
如果是新手,推荐使用带固件的安装镜像,能减少无线网卡、部分硬件驱动缺失的问题。
1. 服务器分区建议
生产环境中,分区方案要根据业务决定。对于新手或普通 Web 服务器,可以先采用简单方案:
| 挂载点 | 建议大小 | 用途 |
|---|---|---|
| / | 20GB 以上 | 系统根目录 |
| /var | 视业务而定 | 日志、缓存、数据库、网站数据 |
| /home | 可选 | 用户目录 |
| swap | 1GB-4GB 或按内存配置 | 交换空间 |
如果服务器主要运行 Docker,建议重点关注:
/var/lib/docker
如果数据库部署在本机,建议重点关注:
/var/lib/mysql
/var/lib/postgresql
新手初期可以不做太复杂的分区,但一定要提前考虑数据目录的位置。生产环境最怕的是系统盘被日志、容器镜像或数据库文件写满。
四、首次登录 Debian 后应该做什么?
安装完成或云服务器创建完成后,通常可以通过 SSH 登录服务器:
ssh root@服务器IP
有些云厂商默认禁用 root 密码登录,而是使用密钥登录。登录后建议先检查系统版本:
cat /etc/os-release
输出中可以看到类似内容:
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
VERSION_ID="12"
再查看内核版本:
uname -a
五、更新系统软件包
Debian 使用 apt 作为常用软件包管理工具。首次进入系统后,建议先更新软件索引并升级系统:
apt update
apt upgrade -y
如果涉及内核、系统组件等较大更新,可以执行:
apt full-upgrade -y
升级后如果内核更新了,建议重启:
reboot
生产环境中,不建议完全无脑执行升级。更合理的流程是:
- 测试环境先升级
- 观察服务是否正常
- 生产环境选择低峰期升级
- 升级前做好快照或备份
- 升级后检查关键服务
六、配置国内软件源
如果服务器在国内,默认 Debian 官方源可能速度较慢,可以更换为国内镜像源,例如清华源、阿里云源、中科大源等。
Debian 12 的软件源文件通常位于:
/etc/apt/sources.list
备份原文件:
cp /etc/apt/sources.list /etc/apt/sources.list.bak
编辑文件:
nano /etc/apt/sources.list
以清华源为例,可参考如下配置:
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
保存后执行:
apt update
需要注意:生产环境更换源时,应选择长期稳定、同步及时的镜像站。安全更新源尤其重要,不建议随意使用不知名镜像。
七、创建普通用户并配置 sudo
生产环境不建议长期使用 root 用户直接操作。建议创建一个普通用户,并授予 sudo 权限。
创建用户:
adduser deploy
安装 sudo:
apt install sudo -y
将用户加入 sudo 组:
usermod -aG sudo deploy
切换用户测试:
su - deploy
sudo whoami
如果输出:
root
说明 sudo 权限配置成功。
之后可以使用普通用户登录服务器,再通过 sudo 执行管理操作。这是生产环境的基本安全习惯。
八、SSH 安全加固
SSH 是服务器最常用的远程登录方式,也是攻击者重点扫描的入口。新手部署 Debian 后,一定要尽快加固 SSH。
SSH 配置文件为:
/etc/ssh/sshd_config
编辑文件:
sudo nano /etc/ssh/sshd_config
建议重点修改以下配置:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 22
其中:
PermitRootLogin no:禁止 root 直接登录PasswordAuthentication no:禁止密码登录,仅允许密钥登录PubkeyAuthentication yes:启用公钥认证Port 22:可按需修改端口,但改端口不是绝对安全措施
如果你还没有配置 SSH 密钥,不要急着关闭密码登录,否则可能把自己锁在服务器外面。
生成密钥的方法:
ssh-keygen -t ed25519
将公钥复制到服务器:
ssh-copy-id deploy@服务器IP
修改配置后重启 SSH:
sudo systemctl restart ssh
重启前建议保留一个已登录窗口,不要立刻关闭。另开一个终端测试能否正常登录,确认无误后再退出原会话。
九、防火墙配置:使用 UFW 快速上手
Debian 默认可以使用 iptables/nftables,但对新手来说,UFW 更容易上手。
安装 UFW:
sudo apt install ufw -y
允许 SSH:
sudo ufw allow OpenSSH
如果你的 SSH 修改了端口,例如 2222:
sudo ufw allow 2222/tcp
允许 HTTP 和 HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
启用防火墙:
sudo ufw enable
查看状态:
sudo ufw status verbose
生产环境中,防火墙策略应该尽量简单明确:只开放必要端口。例如 Web 服务器通常只需要开放 22、80、443;数据库端口不应直接暴露到公网,而应限制为内网访问或通过 VPN、堡垒机访问。
十、安装常用基础工具
Debian 默认安装相对精简,新手可以先安装一些常用工具:
sudo apt install -y \
curl wget vim nano git unzip zip tar \
htop net-tools dnsutils lsof tree \
ca-certificates gnupg apt-transport-https
这些工具用途如下:
| 工具 | 用途 |
|---|---|
| curl/wget | 下载文件、测试接口 |
| vim/nano | 编辑文本 |
| git | 拉取代码 |
| unzip/zip/tar | 压缩与解压 |
| htop | 查看系统资源 |
| net-tools | 提供 ifconfig、netstat 等旧命令 |
| dnsutils | 提供 dig/nslookup |
| lsof | 查看端口、文件占用 |
| tree | 树形查看目录 |
虽然有些工具不是必须,但在排查问题时非常实用。
十一、systemd 服务管理基础
Debian 12 使用 systemd 管理服务。生产环境中,你几乎一定会频繁使用 systemctl。
查看服务状态:
systemctl status nginx
启动服务:
sudo systemctl start nginx
停止服务:
sudo systemctl stop nginx
重启服务:
sudo systemctl restart nginx
设置开机自启:
sudo systemctl enable nginx
取消开机自启:
sudo systemctl disable nginx
查看系统启动失败的服务:
systemctl --failed
查看日志:
journalctl -u nginx
实时查看日志:
journalctl -u nginx -f
在生产环境中,服务异常时不要只看应用日志,也要看 systemd 日志。很多问题,例如权限错误、配置文件路径错误、端口占用、环境变量缺失,都可以通过 systemctl status 和 journalctl 快速定位。
十二、部署 Nginx:生产环境最常见组件
安装 Nginx:
sudo apt install nginx -y
启动并设置开机自启:
sudo systemctl enable --now nginx
查看状态:
systemctl status nginx
浏览器访问服务器 IP,如果看到 Nginx 默认页面,说明安装成功。
Nginx 主配置目录通常为:
/etc/nginx/
站点配置常见位置:
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/
创建一个简单站点配置:
sudo nano /etc/nginx/sites-available/example.com
示例配置:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
创建网站目录:
sudo mkdir -p /var/www/example.com
echo "Hello Debian" | sudo tee /var/www/example.com/index.html
启用站点:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
测试配置:
sudo nginx -t
重载 Nginx:
sudo systemctl reload nginx
生产环境中,每次修改 Nginx 配置后,都应该先执行:
sudo nginx -t
确认无误后再 reload。不要直接 restart,否则配置错误可能导致服务中断。
十三、HTTPS 证书配置:使用 Certbot
现代生产环境基本都要求 HTTPS。Debian 上可以使用 Certbot 自动申请 Let's Encrypt 证书。
安装 Certbot:
sudo apt install certbot python3-certbot-nginx -y
申请证书:
sudo certbot --nginx -d example.com -d www.example.com
按提示输入邮箱、同意协议即可。Certbot 会自动修改 Nginx 配置并配置证书。
测试自动续期:
sudo certbot renew --dry-run
Let's Encrypt 证书有效期通常为 90 天,但 Certbot 会自动续期。生产环境需要定期确认续期任务是否正常,避免证书过期导致服务不可访问。
十四、日志管理与磁盘空间监控
很多新手在生产环境中第一次遇到严重故障,不是因为服务代码崩了,而是因为磁盘满了。Debian 中常见日志目录包括:
/var/log
查看磁盘空间:
df -h
查看目录大小:
du -sh /var/log/*
查看最大文件:
sudo find /var/log -type f -printf "%s %p\n" | sort -nr | head
Debian 默认使用 logrotate 管理日志轮转。配置目录:
/etc/logrotate.d/
查看 systemd journal 日志占用:
journalctl --disk-usage
限制 journal 日志大小,可以编辑:
sudo nano /etc/systemd/journald.conf
加入或修改:
SystemMaxUse=1G
然后重启:
sudo systemctl restart systemd-journald
生产环境建议至少监控以下指标:
- 磁盘使用率
- 内存使用率
- CPU 负载
- 网络流量
- 服务存活状态
- SSL 证书过期时间
- 数据库连接数和慢查询
十五、时间同步与时区设置
服务器时间不准确会导致很多问题,例如日志时间混乱、定时任务异常、证书校验失败、分布式系统数据不一致等。
查看当前时间:
timedatectl
设置时区为上海:
sudo timedatectl set-timezone Asia/Shanghai
确认 NTP 时间同步:
timedatectl status
如果需要安装 chrony:
sudo apt install chrony -y
sudo systemctl enable --now chrony
生产环境中,尤其是数据库、消息队列、日志系统、监控系统,一定要保证时间同步。
十六、定时任务 Cron 基础
Debian 中可以通过 cron 设置定时任务。
编辑当前用户的定时任务:
crontab -e
每 5 分钟执行一次脚本:
*/5 * * * * /bin/bash /opt/scripts/check.sh
每天凌晨 2 点执行备份:
0 2 * * * /bin/bash /opt/scripts/backup.sh
查看当前用户定时任务:
crontab -l
系统级定时任务目录:
/etc/cron.d/
/etc/cron.daily/
/etc/cron.hourly/
生产环境中,定时任务脚本建议写完整路径,不要依赖隐式环境变量。例如使用 /usr/bin/python3,而不是只写 python3。同时要将输出重定向到日志文件,方便排查:
0 2 * * * /bin/bash /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
十七、备份策略:上线前必须考虑
很多新手会把“备份”放到最后,但在生产环境中,备份应该在业务上线前就设计好。
常见备份内容包括:
- 网站代码
- 用户上传文件
- 数据库
- Nginx 配置
- 系统服务配置
- SSL 证书
- 应用环境变量
- Docker Compose 文件
一个简单的目录备份示例:
tar -czf /backup/www-$(date +%F).tar.gz /var/www
MySQL/MariaDB 备份示例:
mysqldump -u root -p database_name > /backup/database_name-$(date +%F).sql
PostgreSQL 备份示例:
pg_dump database_name > /backup/database_name-$(date +%F).sql
生产环境备份不能只“备份到本机”。如果服务器磁盘损坏、本机被误删、系统被入侵,本机备份也可能同时丢失。更可靠的策略是:
- 本机保留短期备份
- 远程服务器保留中期备份
- 对象存储或云盘保留长期备份
- 定期演练恢复流程
备份的价值不在于“有没有文件”,而在于“能不能恢复”。
十八、Debian 上部署 Docker 的注意事项
很多生产服务现在都使用 Docker 部署。Debian 12 对 Docker 支持良好。
安装依赖:
sudo apt install -y ca-certificates curl gnupg
添加 Docker 官方 GPG key 与软件源时,建议参考 Docker 官方文档,以避免命令过期。安装完成后常用命令如下:
docker version
docker ps
docker images
docker logs 容器名
docker compose up -d
docker compose logs -f
生产环境使用 Docker 时要特别注意:
- 不要把数据库数据只放在容器内部
- 使用 volume 或 bind mount 持久化数据
- 控制日志大小,避免容器日志撑爆磁盘
- 不要随意使用
latest标签 - Docker Compose 文件要纳入版本管理
- 服务重启策略要合理配置
限制 Docker 日志大小,可以配置:
sudo nano /etc/docker/daemon.json
示例:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
重启 Docker:
sudo systemctl restart docker
十九、生产环境安全建议
Debian 本身很稳定,但安全性不仅取决于系统,还取决于使用方式。以下建议非常重要:
1. 禁止 root 远程登录
前面已经提到,应使用普通用户加 sudo 的方式管理服务器。
2. 使用 SSH 密钥
密码登录容易被暴力破解,密钥登录安全性更高。
3. 最小化开放端口
数据库、Redis、Elasticsearch 等服务不要直接暴露公网。
4. 定期更新安全补丁
至少定期执行:
sudo apt update
sudo apt upgrade
5. 使用 Fail2ban
Fail2ban 可以自动封禁多次登录失败的 IP。
安装:
sudo apt install fail2ban -y
启动:
sudo systemctl enable --now fail2ban
查看状态:
sudo systemctl status fail2ban
6. 重要配置文件做好权限控制
例如环境变量文件 .env、数据库配置、密钥文件等,不应被普通用户随意读取。
7. 不要在服务器上随便执行陌生脚本
很多安装命令类似:
curl xxx | bash
这类命令虽然方便,但风险很高。生产环境中应确认脚本来源和内容。
二十、常见故障排查思路
生产环境中遇到问题时,不要盲目重装系统。可以按以下顺序排查:
1. 服务是否运行?
systemctl status 服务名
2. 端口是否监听?
ss -tulnp
或:
sudo lsof -i :80
3. 防火墙是否放行?
sudo ufw status
4. 日志是否有错误?
journalctl -u 服务名 -f
或者查看应用日志、Nginx 日志:
tail -f /var/log/nginx/error.log
5. 磁盘是否满了?
df -h
6. 内存是否不足?
free -h
htop
7. DNS 是否正常?
dig example.com
8. 网络是否可达?
ping 目标IP
curl -I https://example.com
排查问题时,最好记录每一步操作和现象。生产环境最忌讳“凭感觉乱改”。如果修改配置,应先备份原文件。
二十一、Debian 新手生产环境初始化清单
下面是一份实用的初始化清单,可以作为新服务器上线前检查表:
- [ ] 确认系统版本为 Debian Stable
- [ ] 更新系统软件包
- [ ] 配置可靠软件源
- [ ] 创建普通用户
- [ ] 配置 sudo 权限
- [ ] 配置 SSH 密钥登录
- [ ] 禁止 root 远程登录
- [ ] 关闭 SSH 密码登录
- [ ] 配置防火墙
- [ ] 仅开放必要端口
- [ ] 设置正确时区
- [ ] 启用时间同步
- [ ] 安装常用工具
- [ ] 配置 Nginx 或应用服务
- [ ] 配置 HTTPS 证书
- [ ] 设置日志轮转
- [ ] 配置磁盘与服务监控
- [ ] 制定备份策略
- [ ] 测试备份恢复
- [ ] 记录服务器用途和部署文档
这份清单并不复杂,但如果每一项都认真完成,服务器安全性和稳定性会明显提高。
二十二、实测经验总结
从实际生产使用来看,Debian 的优点非常明显:系统干净、服务稳定、包管理可靠、升级节奏保守。对于新手来说,Debian 可能没有一些发行版那么“开箱即用”,但这也意味着它更适合搭建可控、稳定、长期运行的服务器环境。
在生产环境中,真正重要的不是安装系统本身,而是后续的维护能力。你需要知道如何更新系统、查看日志、管理服务、配置防火墙、处理证书、监控磁盘、备份数据以及排查故障。只要掌握这些基础,Debian 会是一套非常值得信赖的服务器系统。
如果你是第一次使用 Debian,建议先在虚拟机中完整练习一遍:安装系统、配置 SSH、安装 Nginx、申请证书、部署一个简单网站、设置防火墙、模拟日志增长、测试备份恢复。等流程熟悉后,再用于真实生产环境。
最后给新手一句建议:生产环境追求的是可维护、可恢复、可追踪,而不是命令越多越高级。 Debian 的稳定性可以帮你减少很多系统层面的麻烦,但真正让服务长期可靠运行的,是良好的运维习惯和清晰的部署文档。