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

Debian 服务器运维实战:从初始化到部署、备份与故障排查全流程命令指南

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

Debian 实战案例分享|附完整命令

Debian 一直以稳定、安全、可维护性强而著称,尤其适合作为服务器系统使用。无论是搭建 Web 服务、部署数据库、配置防火墙,还是实现自动化运维,Debian 都能提供非常可靠的基础环境。本文将以实战案例的形式,分享在 Debian 系统中常见的运维操作场景,并附上完整命令,方便读者直接参考和实践。

本文示例默认使用 Debian 12 Bookworm,大部分命令同样适用于 Debian 11。执行命令时,如果当前不是 root 用户,请在命令前加上 sudo


一、系统初始化:从一台新 Debian 服务器开始

新安装的 Debian 系统通常需要先完成基础初始化,包括更新软件源、安装常用工具、创建普通用户、配置 SSH 登录等。

1. 更新系统软件包

首先更新软件包索引,并升级已安装的软件:

apt update
apt upgrade -y

如果系统内核或关键组件升级,建议重启服务器:

reboot

重启后查看系统版本:

cat /etc/debian_version
uname -a

也可以使用:

hostnamectl

2. 安装常用工具

一台服务器在日常维护中经常需要用到 curlwgetvimnet-toolshtop 等工具:

apt install -y curl wget vim net-tools htop unzip zip git lsof tree ca-certificates gnupg

检查工具是否安装成功:

curl --version
wget --version
git --version

3. 创建普通用户并赋予 sudo 权限

不建议长期使用 root 用户直接操作服务器。可以创建一个普通用户,例如 admin

adduser admin

根据提示设置密码和用户信息。然后将该用户加入 sudo 组:

usermod -aG sudo admin

验证用户所属组:

groups admin

切换到新用户:

su - admin

测试 sudo 权限:

sudo whoami

如果返回:

root

说明配置成功。


二、SSH 安全加固:禁用 root 远程登录

SSH 是服务器远程管理的入口,因此必须尽早进行安全配置。

1. 备份 SSH 配置文件

修改配置前先备份:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

2. 编辑 SSH 配置

打开配置文件:

sudo vim /etc/ssh/sshd_config

建议修改以下配置:

PermitRootLogin no
PasswordAuthentication yes
PubkeyAuthentication yes
Port 22

如果你希望更安全,可以将 SSH 端口改为非默认端口,例如 2222:

Port 2222

注意:如果修改 SSH 端口,需要确保防火墙已放行新端口,否则可能无法连接服务器。

3. 重启 SSH 服务

Debian 12 中 SSH 服务通常名为 ssh

sudo systemctl restart ssh

查看服务状态:

sudo systemctl status ssh

如果修改了端口,可以使用以下方式连接:

ssh admin@服务器IP -p 2222

三、防火墙配置:使用 UFW 管理端口

Debian 默认可能没有启用防火墙。对于服务器而言,只开放必要端口是非常重要的安全策略。

1. 安装 UFW

sudo apt install -y ufw

2. 放行 SSH 端口

如果 SSH 使用默认 22 端口:

sudo ufw allow 22/tcp

如果改成了 2222:

sudo ufw allow 2222/tcp

3. 放行 Web 服务端口

常见 Web 服务端口包括 HTTP 80 和 HTTPS 443:

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

4. 启用防火墙

sudo ufw enable

查看状态:

sudo ufw status verbose

如果要删除某条规则,可以先查看编号:

sudo ufw status numbered

然后删除指定规则:

sudo ufw delete 规则编号

例如:

sudo ufw delete 3

四、实战案例一:部署 Nginx 静态网站

Nginx 是 Debian 服务器中非常常见的 Web 服务组件,适合部署静态站点、反向代理以及负载均衡。

1. 安装 Nginx

sudo apt install -y nginx

启动并设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx

查看状态:

sudo systemctl status nginx

浏览器访问服务器 IP,如果看到 Nginx 默认欢迎页,说明部署成功。

2. 创建网站目录

假设域名为 example.com,创建网站目录:

sudo mkdir -p /var/www/example.com/html

设置权限:

sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www/example.com

创建测试页面:

sudo tee /var/www/example.com/html/index.html > /dev/null <<'EOF'



    
    Debian Nginx 实战


    

网站部署成功

这是运行在 Debian 上的 Nginx 静态站点。

EOF

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/html;
    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/

检查 Nginx 配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

如果本地没有配置域名解析,可以临时修改本机 hosts 文件进行测试,也可以直接将 server_name 改为服务器 IP。


五、实战案例二:为网站配置 HTTPS 证书

HTTPS 已经是现代网站的基本要求。这里使用 Certbot 自动申请 Let’s Encrypt 免费证书。

1. 安装 Certbot

sudo apt install -y certbot python3-certbot-nginx

2. 申请证书

确保域名已经解析到服务器,并且 80 端口可访问,然后执行:

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

根据提示输入邮箱、同意协议,并选择是否自动重定向 HTTP 到 HTTPS。

3. 查看证书状态

sudo certbot certificates

4. 测试自动续期

Let’s Encrypt 证书有效期为 90 天,Certbot 通常会自动配置续期任务。可以手动测试:

sudo certbot renew --dry-run

如果没有报错,说明自动续期配置正常。


六、实战案例三:部署 MariaDB 数据库

MariaDB 是 MySQL 的开源分支,在 Debian 中非常常用。

1. 安装 MariaDB

sudo apt install -y mariadb-server mariadb-client

启动并设置开机自启:

sudo systemctl enable mariadb
sudo systemctl start mariadb

查看状态:

sudo systemctl status mariadb

2. 安全初始化

执行安全配置脚本:

sudo mysql_secure_installation

常见选择建议如下:

Switch to unix_socket authentication [Y/n]: Y
Change the root password? [Y/n]: n
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y

3. 创建数据库和用户

进入数据库:

sudo mariadb

创建数据库:

CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

创建用户并授权:

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

查看数据库:

SHOW DATABASES;

退出:

EXIT;

测试登录:

mysql -u appuser -p appdb

七、实战案例四:部署 PHP-FPM 与 Nginx 动态网站

如果要运行 WordPress、Laravel、Typecho 等 PHP 应用,需要安装 PHP-FPM。

1. 安装 PHP 及常用扩展

Debian 12 默认 PHP 版本通常为 PHP 8.2:

sudo apt install -y php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl

查看版本:

php -v

查看 PHP-FPM 服务状态:

systemctl status php8.2-fpm

2. 创建 PHP 测试文件

sudo tee /var/www/example.com/html/index.php > /dev/null <<'EOF'

3. 修改 Nginx 配置支持 PHP

编辑站点配置:

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

参考配置如下:

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

    root /var/www/example.com/html;
    index index.php 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;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

检查配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

访问:

http://example.com/index.php

如果看到 PHP 信息页面,说明 PHP-FPM 已经与 Nginx 集成成功。

上线后请删除 phpinfo() 页面,避免泄露服务器信息。

sudo rm -f /var/www/example.com/html/index.php

八、实战案例五:使用 Docker 部署应用

Docker 可以让应用运行在隔离环境中,便于部署和迁移。

1. 安装 Docker

先安装依赖:

sudo apt install -y ca-certificates curl gnupg

添加 Docker GPG 密钥:

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

添加 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

启动并设置开机自启:

sudo systemctl enable docker
sudo systemctl start docker

验证安装:

docker --version
docker compose version

2. 运行一个 Nginx 容器

sudo docker run -d \
  --name nginx-demo \
  -p 8080:80 \
  nginx:latest

查看容器:

sudo docker ps

访问:

http://服务器IP:8080

查看日志:

sudo docker logs nginx-demo

停止并删除容器:

sudo docker stop nginx-demo
sudo docker rm nginx-demo

3. 使用 Docker Compose 部署应用

创建目录:

mkdir -p ~/docker/nginx-demo
cd ~/docker/nginx-demo

创建 compose.yml

cat > compose.yml <<'EOF'
services:
  web:
    image: nginx:latest
    container_name: nginx-compose-demo
    ports:
      - "8080:80"
    restart: always
EOF

启动服务:

docker compose up -d

查看服务:

docker compose ps

停止服务:

docker compose down

九、实战案例六:配置定时备份任务

在生产环境中,备份是必不可少的。下面以备份网站目录和数据库为例。

1. 创建备份目录

sudo mkdir -p /backup
sudo chmod 700 /backup

2. 编写备份脚本

sudo vim /usr/local/bin/backup-site.sh

写入:

#!/bin/bash

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup"
WEB_DIR="/var/www/example.com"
DB_NAME="appdb"
DB_USER="appuser"
DB_PASS="StrongPassword123!"

mkdir -p ${BACKUP_DIR}

tar -czf ${BACKUP_DIR}/web_${DATE}.tar.gz ${WEB_DIR}

mysqldump -u${DB_USER} -p${DB_PASS} ${DB_NAME} > ${BACKUP_DIR}/db_${DATE}.sql

tar -czf ${BACKUP_DIR}/db_${DATE}.sql.tar.gz ${BACKUP_DIR}/db_${DATE}.sql
rm -f ${BACKUP_DIR}/db_${DATE}.sql

find ${BACKUP_DIR} -type f -mtime +7 -delete

赋予执行权限:

sudo chmod +x /usr/local/bin/backup-site.sh

手动测试:

sudo /usr/local/bin/backup-site.sh

查看备份文件:

sudo ls -lh /backup

3. 配置定时任务

编辑 root 的 crontab:

sudo crontab -e

添加每天凌晨 2 点执行备份:

0 2 * * * /usr/local/bin/backup-site.sh >> /backup/backup.log 2>&1

查看定时任务:

sudo crontab -l

查看日志:

sudo tail -f /backup/backup.log

十、实战案例七:查看系统资源与排查问题

服务器运行一段时间后,可能会遇到 CPU 占用高、内存不足、磁盘满、端口冲突等问题。下面列出常用排查命令。

1. 查看 CPU 和内存

top

更友好的方式:

htop

查看内存:

free -h

查看系统负载:

uptime

2. 查看磁盘空间

df -h

查看目录占用:

du -sh /*

查看当前目录下文件夹大小:

du -sh ./*

按大小排序:

du -ah /var | sort -rh | head -n 20

3. 查看端口占用

ss -tulnp

或:

sudo lsof -i -P -n

查看 80 端口:

sudo lsof -i:80

4. 查看服务日志

查看 Nginx 日志:

sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

查看系统日志:

sudo journalctl -xe

查看指定服务日志:

sudo journalctl -u nginx

实时查看:

sudo journalctl -u nginx -f

十一、实战案例八:使用 systemd 管理自定义服务

如果你有一个自己编写的程序,希望它开机自动运行,并且崩溃后自动重启,可以使用 systemd 管理。

1. 准备测试脚本

创建脚本:

sudo vim /opt/demo-app.sh

写入:

#!/bin/bash
while true
do
  echo "$(date) demo app is running" >> /var/log/demo-app.log
  sleep 5
done

赋予权限:

sudo chmod +x /opt/demo-app.sh

2. 创建 systemd 服务文件

sudo vim /etc/systemd/system/demo-app.service

写入:

[Unit]
Description=Demo App Service
After=network.target

[Service]
Type=simple
ExecStart=/opt/demo-app.sh
Restart=always
RestartSec=5
User=root

[Install]
WantedBy=multi-user.target

3. 启动服务

重新加载 systemd:

sudo systemctl daemon-reload

启动服务:

sudo systemctl start demo-app

设置开机自启:

sudo systemctl enable demo-app

查看状态:

sudo systemctl status demo-app

查看日志:

sudo tail -f /var/log/demo-app.log

停止服务:

sudo systemctl stop demo-app

十二、常用维护命令速查

1. 软件包管理

搜索软件包:

apt search nginx

查看软件包信息:

apt show nginx

安装软件:

sudo apt install -y 软件包名

卸载软件:

sudo apt remove -y 软件包名

彻底卸载并删除配置:

sudo apt purge -y 软件包名

清理无用依赖:

sudo apt autoremove -y

清理缓存:

sudo apt clean

2. 服务管理

启动服务:

sudo systemctl start 服务名

停止服务:

sudo systemctl stop 服务名

重启服务:

sudo systemctl restart 服务名

重新加载配置:

sudo systemctl reload 服务名

设置开机自启:

sudo systemctl enable 服务名

取消开机自启:

sudo systemctl disable 服务名

查看服务状态:

sudo systemctl status 服务名

3. 用户管理

创建用户:

sudo adduser 用户名

删除用户:

sudo deluser 用户名

修改密码:

sudo passwd 用户名

添加到 sudo 组:

sudo usermod -aG sudo 用户名

查看用户:

cat /etc/passwd

查看登录记录:

last

十三、实践建议:让 Debian 服务器更稳定

在实际生产环境中,除了会敲命令,更重要的是养成良好的运维习惯。

第一,所有关键配置修改前都应该备份。例如修改 Nginx、SSH、数据库配置之前,先复制一份 .bak 文件,出现问题时可以快速恢复。

第二,尽量使用普通用户登录服务器,通过 sudo 执行管理命令。这样既能降低误操作风险,也方便审计操作记录。

第三,防火墙只开放必要端口。常见开放端口包括 SSH、HTTP、HTTPS,数据库端口一般不建议直接暴露到公网。

第四,定期更新系统。Debian 以稳定著称,但安全更新仍然非常重要:

sudo apt update
sudo apt upgrade -y

第五,重要服务应开启开机自启,并通过 systemctl statusjournalctl 定期检查运行状态。

第六,备份一定要做恢复测试。没有经过恢复验证的备份,不能算真正可靠的备份。可以定期将备份文件复制到测试环境中进行恢复演练。

第七,建议将关键命令整理成文档或脚本,减少重复劳动,提高运维效率。


结语

Debian 的优势不仅在于稳定,更在于它拥有清晰的软件包管理体系、成熟的服务管理机制以及庞大的社区生态。本文围绕真实服务器运维场景,介绍了系统初始化、SSH 安全加固、防火墙配置、Nginx 部署、HTTPS 证书申请、MariaDB 数据库配置、PHP-FPM 集成、Docker 部署、定时备份、故障排查和 systemd 服务管理等内容。

如果你正在学习 Linux 运维,Debian 是非常值得深入掌握的发行版。建议不要只停留在阅读命令层面,而是准备一台云服务器或本地虚拟机,将本文中的案例逐个实践一遍。只有真正执行过、排查过、修复过,才能把这些命令转化为自己的实战能力。

目录结构
全文