上一篇 下一篇 分享链接 返回 返回顶部

Debian 生产服务器从安装到加固:一套可直接落地的部署流程

发布人:慈云数据-客服中心 发布时间:7小时前 阅读量:0

Debian 部署完整教程|生产环境实测

Debian 是目前服务器领域最稳定、最可靠的 Linux 发行版之一。它以软件包稳定、社区成熟、安全更新及时、系统资源占用低而著称,非常适合用于生产环境部署 Web 服务、数据库服务、容器平台、反向代理、监控系统以及各类企业级应用。

本文将以生产环境实测部署流程为主线,从系统安装、基础配置、安全加固、软件源配置、常用服务部署、性能优化、日志与备份等方面,完整讲解 Debian 服务器的部署方法。本文适合首次部署 Debian 服务器的运维人员、开发者,也适合希望规范生产环境初始化流程的团队参考。


一、部署前准备

在正式部署 Debian 之前,需要先明确服务器用途、硬件规格、网络规划以及系统版本。

1. 推荐系统版本

生产环境建议选择 Debian Stable 版本,例如:

  • Debian 12 Bookworm
  • Debian 11 Bullseye

如果是新部署服务器,推荐使用 Debian 12。它的软件包较新,同时仍然保持了 Debian 一贯的稳定性。

2. 服务器硬件建议

不同业务场景对硬件要求不同,以下是常见配置参考:

场景 CPU 内存 磁盘 说明
轻量 Web 服务 2 核 2GB 40GB SSD 适合博客、小型 API
中型应用服务 4 核 8GB 100GB SSD 适合企业后台、商城
数据库服务器 4 核以上 16GB 以上 SSD/NVMe 建议独立部署
Docker / Kubernetes 节点 4 核以上 8GB 以上 100GB 以上 根据容器数量扩展

3. 网络规划

生产环境中,建议提前规划:

  • 服务器公网 IP
  • 内网 IP
  • 网关地址
  • DNS 地址
  • 主机名
  • SSH 端口
  • 是否需要防火墙
  • 是否需要堡垒机登录
  • 域名解析是否已完成

例如:

公网 IP:203.0.113.10
内网 IP:10.0.0.10
主机名:prod-web-01
SSH 端口:22222
域名:www.example.com

二、Debian 系统安装

1. 获取 Debian 镜像

可以从 Debian 官方网站下载 ISO 镜像:

https://www.debian.org/

生产环境建议选择:

  • netinst 网络安装镜像
  • DVD 镜像
  • 云服务器平台提供的官方 Debian 镜像

如果是云服务器,如阿里云、腾讯云、AWS、Azure、Google Cloud,建议直接选择平台提供的官方 Debian 镜像,部署更方便。

2. 安装过程关键选项

安装 Debian 时,重点关注以下选项:

选择语言

生产服务器建议选择英文环境,便于日志排查和兼容性:

Language: English
Locale: en_US.UTF-8

当然,如果团队习惯中文,也可以安装中文语言包,但生产环境一般更推荐英文。

设置主机名

例如:

prod-web-01

主机名应具有识别意义,建议包含环境、角色和编号。

创建用户

安装过程中会提示创建 root 密码和普通用户。生产环境建议:

  • root 设置强密码
  • 创建普通运维用户
  • 后续禁用 root 远程 SSH 登录
  • 使用 sudo 管理权限

例如创建用户:

deploy

磁盘分区建议

如果是普通 Web 服务器,可使用如下分区方案:

挂载点 大小 文件系统
/ 30GB 以上 ext4
/var 视日志和服务而定 ext4
/home 可选 ext4
swap 2GB - 8GB swap

对于生产环境,如果运行 Docker、数据库或大量日志服务,建议单独规划 /var,因为 Docker 镜像、容器数据、日志通常都在 /var 下。

例如:

/      40GB
/var   100GB
swap   4GB

如果使用云服务器,也可以直接使用系统默认分区,后续再挂载数据盘到 /data


三、系统初始化配置

安装完成后,使用 SSH 登录服务器。

ssh deploy@服务器IP

如果使用 root 登录:

ssh root@服务器IP

1. 更新系统软件包

首次登录后,第一件事是更新软件包索引并升级系统。

sudo apt update
sudo apt upgrade -y

如需完整升级依赖:

sudo apt full-upgrade -y

清理无用软件包:

sudo apt autoremove -y
sudo apt clean

2. 安装常用工具

生产环境常用工具建议一次性安装:

sudo apt install -y \
  vim \
  curl \
  wget \
  git \
  net-tools \
  htop \
  iotop \
  iftop \
  lsof \
  unzip \
  zip \
  tar \
  ca-certificates \
  gnupg \
  software-properties-common \
  apt-transport-https \
  rsync \
  cron \
  sudo

这些工具常用于网络诊断、资源监控、文件传输、证书验证和日常运维。

3. 设置时区

中国大陆服务器通常设置为上海时区:

sudo timedatectl set-timezone Asia/Shanghai

查看时间:

timedatectl

确保输出中显示:

Time zone: Asia/Shanghai

4. 配置主机名

查看当前主机名:

hostnamectl

设置主机名:

sudo hostnamectl set-hostname prod-web-01

修改 /etc/hosts

sudo vim /etc/hosts

加入:

127.0.0.1 localhost
127.0.1.1 prod-web-01

这样可以避免部分服务启动时因为主机名解析异常导致报错。


四、配置 Debian 软件源

如果服务器在中国大陆,建议使用国内镜像源提升安装速度。以 Debian 12 为例,可以使用清华源、阿里云源或中科大源。

备份原配置:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

编辑源文件:

sudo vim /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

更新索引:

sudo apt update

如果服务器位于海外,则建议使用官方源或云厂商所在区域源,避免因为跨境网络导致下载不稳定。


五、创建生产环境运维用户

生产环境不建议长期使用 root 用户操作。可以创建一个专用用户,例如 deploy

sudo adduser deploy

加入 sudo 组:

sudo usermod -aG sudo deploy

切换用户测试:

su - deploy
sudo whoami

如果返回:

root

说明 sudo 权限正常。


六、SSH 安全加固

SSH 是服务器最常见的入口,也是攻击最频繁的入口。生产环境必须进行基础加固。

1. 修改 SSH 端口

编辑 SSH 配置:

sudo vim /etc/ssh/sshd_config

修改或增加:

Port 22222

注意:修改端口前,需要先确保防火墙放行新端口,否则可能无法登录。

2. 禁止 root 远程登录

在配置文件中设置:

PermitRootLogin no

3. 禁止密码登录,使用密钥登录

生成本地 SSH 密钥:

ssh-keygen -t ed25519 -C "deploy@prod"

将公钥复制到服务器:

ssh-copy-id -p 22222 deploy@服务器IP

服务器端配置:

PasswordAuthentication no
PubkeyAuthentication yes

重启 SSH:

sudo systemctl restart ssh

测试登录:

ssh -p 22222 deploy@服务器IP

注意:在确认新连接可正常登录前,不要关闭原有 SSH 会话,避免误操作导致服务器无法远程访问。


七、防火墙配置

Debian 上常用的防火墙工具是 ufw,配置简单,适合大多数服务器。

1. 安装 ufw

sudo apt install -y ufw

2. 放行 SSH 端口

如果 SSH 端口为 22222:

sudo ufw allow 22222/tcp

3. 放行 Web 服务端口

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

4. 启用防火墙

sudo ufw enable

查看状态:

sudo ufw status verbose

如果服务器还需要数据库端口,如 MySQL 的 3306、PostgreSQL 的 5432,建议只允许内网访问,不要直接暴露到公网。例如:

sudo ufw allow from 10.0.0.0/24 to any port 3306 proto tcp

八、安装 Nginx Web 服务

Nginx 是生产环境最常用的 Web 服务器和反向代理服务器。

1. 安装 Nginx

sudo apt install -y nginx

启动并设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx

查看状态:

sudo systemctl status nginx

访问服务器 IP:

http://服务器IP

如果出现 Nginx 默认页面,说明安装成功。

2. 配置站点目录

创建网站目录:

sudo mkdir -p /var/www/example.com
sudo chown -R deploy:deploy /var/www/example.com

创建测试页面:

echo "Hello Debian Production" > /var/www/example.com/index.html

3. 创建 Nginx 站点配置

sudo vim /etc/nginx/sites-available/example.com

写入:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html index.htm;

    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 ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

测试配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

九、配置 HTTPS 证书

生产环境必须启用 HTTPS。推荐使用 Let’s Encrypt 免费证书。

1. 安装 Certbot

sudo apt install -y certbot python3-certbot-nginx

2. 申请证书

sudo certbot --nginx -d example.com -d www.example.com

按照提示选择是否强制 HTTP 跳转 HTTPS,生产环境建议开启跳转。

3. 测试自动续期

sudo certbot renew --dry-run

查看定时任务:

systemctl list-timers | grep certbot

Let’s Encrypt 证书有效期通常为 90 天,Certbot 会自动续期,但建议定期检查。


十、部署数据库服务

以下以 MariaDB 为例。MariaDB 是 MySQL 的常见替代方案,在 Debian 上安装简单。

1. 安装 MariaDB

sudo apt install -y mariadb-server mariadb-client

启动服务:

sudo systemctl enable mariadb
sudo systemctl start mariadb

2. 安全初始化

sudo mysql_secure_installation

建议配置:

Set root password? Y
Remove anonymous users? Y
Disallow root login remotely? Y
Remove test database? Y
Reload privilege tables? Y

3. 创建业务数据库和用户

登录数据库:

sudo mysql

执行:

CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

如果应用和数据库不在同一台服务器,应根据内网 IP 授权,不建议使用 % 开放所有来源。


十一、部署 Docker 环境

如果生产环境采用容器化部署,可以安装 Docker。

1. 卸载旧版本

sudo apt remove -y docker docker-engine docker.io containerd runc

2. 安装依赖

sudo apt install -y ca-certificates curl gnupg

3. 添加 Docker 官方 GPG Key

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

4. 添加 Docker 软件源

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新并安装:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5. 验证 Docker

sudo docker version
sudo docker run hello-world

将当前用户加入 Docker 组:

sudo usermod -aG docker deploy

重新登录后验证:

docker ps

十二、系统性能优化

Debian 默认已经比较稳定,但生产环境仍可进行一些基础优化。

1. 调整文件句柄限制

查看当前限制:

ulimit -n

编辑:

sudo vim /etc/security/limits.conf

增加:

* soft nofile 65535
* hard nofile 65535

如果是 systemd 服务,还需要在服务配置中设置:

LimitNOFILE=65535

2. 内核参数优化

编辑:

sudo vim /etc/sysctl.conf

加入:

net.ipv4.ip_forward = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 8192
fs.file-max = 1048576

使配置生效:

sudo sysctl -p

注意:内核参数不要盲目复制,应结合业务压力、连接数和系统资源进行调整。

3. Swap 设置建议

查看 Swap:

free -h

如果服务器内存较小,可以创建 Swap 文件:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

写入 /etc/fstab

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

调整 swappiness:

sudo vim /etc/sysctl.conf

加入:

vm.swappiness = 10

生效:

sudo sysctl -p

生产环境中,Swap 可以作为兜底机制,但不能依赖 Swap 承载高负载。


十三、日志管理与排查

1. 查看系统日志

Debian 使用 systemd,可通过 journalctl 查看日志:

sudo journalctl -xe

查看某个服务日志:

sudo journalctl -u nginx
sudo journalctl -u mariadb

实时查看:

sudo journalctl -u nginx -f

2. 查看传统日志文件

常见日志路径:

/var/log/syslog
/var/log/auth.log
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/mysql/

查看登录失败记录:

sudo grep "Failed password" /var/log/auth.log

查看最近登录:

last

查看当前登录用户:

who

3. 日志轮转

Debian 默认安装 logrotate,可避免日志无限增长。查看配置:

ls /etc/logrotate.d/

例如 Nginx 日志轮转配置通常位于:

/etc/logrotate.d/nginx

如果自定义应用日志,应手动添加轮转规则,防止磁盘被日志打满。


十四、备份策略

生产环境部署完成后,备份必须同步规划。没有备份的生产环境是不完整的。

1. 需要备份的内容

通常包括:

  • 应用代码
  • 配置文件
  • 数据库
  • 用户上传文件
  • SSL 证书
  • Nginx 配置
  • Docker Compose 文件
  • 定时任务配置

重要目录示例:

/etc/nginx/
/etc/ssh/
/var/www/
/data/
/etc/letsencrypt/
/var/spool/cron/

2. 数据库备份示例

MariaDB/MySQL 备份:

mysqldump -u app_user -p app_db > app_db_$(date +%F).sql

压缩:

gzip app_db_$(date +%F).sql

3. 使用 rsync 远程备份

rsync -avz /var/www/ backup@backup-server:/backup/prod-web-01/www/

4. 定时备份

编辑定时任务:

crontab -e

例如每天凌晨 2 点备份数据库:

0 2 * * * /usr/bin/mysqldump -u app_user -p'密码' app_db | gzip > /data/backup/app_db_$(date +\%F).sql.gz

建议备份后上传到远程服务器或对象存储,避免服务器本机故障导致备份同时丢失。


十五、安全加固建议

1. 安装 Fail2ban

Fail2ban 可以自动封禁暴力破解 SSH 的 IP。

sudo apt install -y fail2ban

创建本地配置:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑:

sudo vim /etc/fail2ban/jail.local

开启 sshd:

[sshd]
enabled = true
port = 22222
maxretry = 5
bantime = 3600
findtime = 600

重启:

sudo systemctl restart fail2ban

查看状态:

sudo fail2ban-client status sshd

2. 定期更新安全补丁

手动更新:

sudo apt update
sudo apt upgrade -y

如果希望自动安装安全更新,可以安装:

sudo apt install -y unattended-upgrades

配置:

sudo dpkg-reconfigure unattended-upgrades

生产环境开启自动更新前,需要评估业务影响。对于关键服务,建议在测试环境验证后再更新。

3. 最小化开放端口

查看监听端口:

sudo ss -tulnp

只保留业务需要的端口,例如:

  • SSH:22222
  • HTTP:80
  • HTTPS:443

数据库、Redis、管理后台等服务尽量只监听内网地址或本地地址。


十六、生产环境部署检查清单

上线前建议逐项检查:

  • [ ] 系统已更新到最新安全版本
  • [ ] 已配置正确的软件源
  • [ ] 已创建普通运维用户
  • [ ] 已禁用 root SSH 登录
  • [ ] 已启用 SSH 密钥登录
  • [ ] 已修改默认 SSH 端口
  • [ ] 防火墙已开启
  • [ ] 只开放必要端口
  • [ ] Nginx 配置已通过测试
  • [ ] HTTPS 证书已申请并自动续期
  • [ ] 数据库已完成安全初始化
  • [ ] 日志轮转正常
  • [ ] 备份任务已配置
  • [ ] 备份恢复流程已测试
  • [ ] 监控和告警已配置
  • [ ] 应用服务已设置开机自启
  • [ ] 磁盘空间、内存、CPU 使用率正常

十七、常见问题排查

1. SSH 无法登录

检查 SSH 服务状态:

sudo systemctl status ssh

检查端口监听:

sudo ss -tulnp | grep ssh

检查防火墙:

sudo ufw status

如果刚修改 SSH 配置后无法登录,优先检查:

  • 端口是否写错
  • 防火墙是否放行
  • 云服务器安全组是否放行
  • sshd_config 是否存在语法错误

2. Nginx 启动失败

测试配置:

sudo nginx -t

查看日志:

sudo journalctl -u nginx -xe

常见原因包括:

  • 配置文件语法错误
  • 端口被占用
  • 证书路径错误
  • root 目录不存在
  • server_name 配置错误

3. HTTPS 证书申请失败

常见原因:

  • 域名未解析到服务器
  • 80 端口未开放
  • 防火墙或安全组阻断
  • Nginx 配置错误
  • DNS 生效延迟

可以先测试:

curl -I http://example.com

确认能正常访问后再申请证书。

4. 磁盘空间不足

查看磁盘:

df -h

查看大目录:

sudo du -sh /* 2>/dev/null

常见占用位置:

/var/log/
/var/lib/docker/
/var/cache/apt/
/var/www/
/data/

清理 apt 缓存:

sudo apt clean

清理 Docker 无用资源:

docker system prune -a

十八、总结

Debian 的优势在于稳定、可靠、简洁,非常适合作为生产环境服务器系统。一个合格的 Debian 生产环境部署,不仅仅是安装系统和启动服务,还应包含系统初始化、安全加固、防火墙策略、服务部署、HTTPS 配置、日志管理、备份策略、性能优化和上线检查。

在实际生产环境中,建议将本文中的初始化流程整理成标准化脚本或 Ansible Playbook,实现自动化部署。这样不仅可以减少人为失误,还能保证多台服务器之间的环境一致性。

最终,一个稳定的 Debian 生产环境应当具备以下特点:

  1. 系统版本稳定,软件包来源可靠;
  2. SSH 登录安全,权限管理清晰;
  3. 防火墙策略严格,只开放必要端口;
  4. Web 服务和数据库配置规范;
  5. HTTPS、日志、备份、监控全部到位;
  6. 出现故障时能够快速定位、快速恢复。

如果你正在准备部署一台长期运行的 Linux 服务器,Debian 是非常值得信赖的选择。只要按照规范流程完成初始化和安全加固,它完全可以胜任绝大多数企业级生产环境需求。

目录结构
全文