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

Debian 12 服务器从安装到上线:Nginx、HTTPS、数据库与脚本实战指南

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

Debian 部署完整教程|附源码

本文面向希望在服务器、虚拟机或本地环境中部署 Debian 系统及常见 Web 服务的用户,内容覆盖 Debian 安装、初始化配置、SSH 安全加固、软件源配置、Nginx 部署、PHP/Python/Node.js 环境安装、数据库部署、防火墙配置、HTTPS 证书申请、服务守护、项目上线以及常用自动化脚本源码。
适合新手按步骤操作,也适合有经验的运维人员作为部署清单参考。


一、Debian 简介

Debian 是一个非常稳定、开放、社区驱动的 Linux 发行版。它以稳定性、安全性和软件包管理体系完善著称,被广泛应用于服务器、云主机、容器环境以及嵌入式系统中。

相比 Ubuntu,Debian 更偏向稳定和保守;相比 CentOS/Rocky Linux,Debian 的软件包管理更加简洁,社区文档也非常丰富。因此,如果你的目标是部署一台长期稳定运行的服务器,Debian 是非常值得选择的系统。

本文以 Debian 12 Bookworm 为主要示例,其他版本如 Debian 11 也可以参考,大部分命令基本一致。


二、部署前准备

在正式安装和部署 Debian 之前,需要准备以下内容。

1. 一台服务器或虚拟机

你可以选择以下任意一种环境:

  • 云服务器:阿里云、腾讯云、华为云、AWS、Vultr、DigitalOcean 等
  • 本地虚拟机:VMware、VirtualBox、PVE、Hyper-V
  • 物理服务器:公司机房或家用服务器
  • 容器环境:Docker、LXC 等

建议最低配置:

项目 推荐配置
CPU 1 核及以上
内存 1GB 起步,推荐 2GB+
磁盘 20GB 起步
系统 Debian 12 64 位
网络 可访问公网

如果是生产环境,建议至少使用:

  • 2 核 CPU
  • 4GB 内存
  • 40GB 以上磁盘
  • 独立公网 IP
  • 正确解析的域名

2. 准备 Debian 镜像

Debian 官方下载地址:

https://www.debian.org/download

如果是云服务器,一般在创建实例时可以直接选择 Debian 系统镜像,无需手动下载安装 ISO。

如果是本地虚拟机,可以下载 Debian ISO 镜像:

https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/

推荐选择:

debian-12.x.x-amd64-netinst.iso

netinst 是网络安装镜像,体积较小,安装过程中会从网络下载所需软件包。


三、安装 Debian 系统

如果你使用的是云服务器,通常服务商已经帮你完成了系统安装,可以直接跳到“系统初始化配置”部分。

如果你使用虚拟机或物理服务器,可以按照以下步骤安装 Debian。

1. 启动安装程序

将 Debian ISO 挂载到虚拟机或服务器光驱中,启动后选择:

Graphical install

也可以选择:

Install

图形安装和文本安装最终效果相同。


2. 选择语言和地区

建议生产服务器使用英文界面:

Language: English
Location: United States 或 China
Keyboard: American English

使用英文系统的好处是日志、错误提示和文档搜索更方便。


3. 配置主机名

例如:

debian-server

如果有域名,也可以设置域名,例如:

example.com

主机名后续可以修改,不必过于纠结。


4. 设置 root 密码和普通用户

Debian 安装过程中会要求设置 root 密码,并创建普通用户。

建议:

  • root 密码设置复杂一些
  • 创建一个普通用户用于日常登录
  • 后续通过 sudo 提权管理系统

例如创建用户:

deploy

5. 分区建议

如果是新手,可以选择:

Guided - use entire disk

推荐分区结构:

/
swap

对于普通 Web 服务器来说,默认分区已经足够。

如果是生产环境,可以单独划分:

/       系统目录
/home   用户目录
/var    日志和服务数据目录

数据库服务器建议给 /var/lib/mysql/var/lib/postgresql 独立磁盘或分区。


6. 软件选择

安装过程中会出现软件选择界面,建议选择:

SSH server
standard system utilities

不建议在服务器上安装桌面环境,除非确实需要图形界面。


四、首次登录 Debian

安装完成后,通过 SSH 登录服务器。

假设服务器 IP 为:

192.168.1.100

登录命令:

ssh root@192.168.1.100

如果使用普通用户:

ssh deploy@192.168.1.100

云服务器一般会提供 root 密码或密钥登录方式。


五、系统初始化配置

1. 更新系统软件包

登录后第一件事是更新软件源和系统包。

apt update
apt upgrade -y

如果需要完整升级:

apt full-upgrade -y

清理无用依赖:

apt autoremove -y
apt clean

2. 安装常用工具

apt install -y vim curl wget git sudo unzip zip tar htop net-tools lsof tree ca-certificates gnupg software-properties-common

这些工具用途如下:

工具 用途
vim 编辑文本文件
curl/wget 下载文件或请求接口
git 拉取源码
sudo 普通用户提权
unzip/zip 解压和压缩文件
htop 查看系统资源
net-tools 提供 ifconfig 等命令
lsof 查看端口占用
tree 树形查看目录
ca-certificates HTTPS 证书支持
gnupg GPG 密钥管理

3. 配置 sudo 权限

如果普通用户没有 sudo 权限,可以执行:

usermod -aG sudo deploy

然后重新登录。

测试:

sudo whoami

如果输出:

root

说明配置成功。


六、配置 Debian 软件源

Debian 默认软件源可能较慢,如果服务器在中国大陆,可以更换为国内镜像源。

备份原配置:

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

编辑文件:

vim /etc/apt/sources.list

以 Debian 12 为例,可以使用清华源:

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

如果你在海外服务器上,建议使用官方源或服务商推荐源,通常速度更稳定。


七、SSH 安全加固

服务器部署后,SSH 是最重要的入口,必须做好安全配置。

1. 修改 SSH 端口

编辑 SSH 配置文件:

vim /etc/ssh/sshd_config

找到或添加:

Port 2222

这里将默认 22 端口改为 2222,你也可以使用其他端口。

重启 SSH:

systemctl restart ssh

注意:在断开当前连接之前,请另开一个终端测试新端口是否可用:

ssh -p 2222 deploy@服务器IP

2. 禁止 root 远程登录

编辑:

vim /etc/ssh/sshd_config

设置:

PermitRootLogin no

重启:

systemctl restart ssh

以后使用普通用户登录,再通过 sudo 管理系统。


3. 使用密钥登录

在本地电脑生成密钥:

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

将公钥复制到服务器:

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

测试密钥登录成功后,可以关闭密码登录。

编辑:

vim /etc/ssh/sshd_config

设置:

PasswordAuthentication no
PubkeyAuthentication yes

重启 SSH:

systemctl restart ssh

八、防火墙配置

Debian 常用防火墙工具有 ufwnftables。对新手来说,ufw 更简单。

1. 安装 ufw

apt install -y ufw

2. 放行 SSH 端口

如果你修改了 SSH 端口为 2222:

ufw allow 2222/tcp

放行 HTTP 和 HTTPS:

ufw allow 80/tcp
ufw allow 443/tcp

启用防火墙:

ufw enable

查看状态:

ufw status verbose

输出示例:

Status: active

To                         Action      From
--                         ------      ----
2222/tcp                   ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

九、部署 Nginx Web 服务

Nginx 是非常常用的高性能 Web 服务器,可以用于静态网站、反向代理、负载均衡等。

1. 安装 Nginx

apt install -y nginx

启动并设置开机自启:

systemctl start nginx
systemctl enable nginx

查看状态:

systemctl status nginx

浏览器访问:

http://服务器IP

如果看到 Debian/Nginx 默认页面,说明 Nginx 安装成功。


2. Nginx 常用目录

路径 说明
/etc/nginx/nginx.conf 主配置文件
/etc/nginx/sites-available/ 可用站点配置
/etc/nginx/sites-enabled/ 已启用站点配置
/var/www/html/ 默认网站目录
/var/log/nginx/access.log 访问日志
/var/log/nginx/error.log 错误日志

3. 创建网站目录

假设域名是:

example.com

创建目录:

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

创建测试页面:

vim /var/www/example.com/index.html

写入:




    
    Debian 部署成功


    

Debian + Nginx 部署成功

这是一个运行在 Debian 服务器上的网站。


4. 创建 Nginx 站点配置

创建配置文件:

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;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

检查配置:

nginx -t

重载 Nginx:

systemctl reload nginx

十、部署 HTTPS 证书

生产环境建议开启 HTTPS。这里使用 Let’s Encrypt 免费证书。

1. 安装 Certbot

apt install -y certbot python3-certbot-nginx

2. 申请证书

确保域名已经解析到服务器 IP,然后执行:

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

按照提示输入邮箱、同意协议、选择是否重定向 HTTP 到 HTTPS。

申请成功后,Certbot 会自动修改 Nginx 配置。


3. 测试自动续期

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

certbot renew --dry-run

查看定时任务:

systemctl list-timers | grep certbot

十一、部署 PHP 环境

如果你要部署 WordPress、Laravel、ThinkPHP 等 PHP 项目,需要安装 PHP-FPM。

1. 安装 PHP

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

查看 PHP 版本:

php -v

查看 PHP-FPM 状态:

systemctl status php*-fpm

2. 配置 Nginx 支持 PHP

创建项目目录:

mkdir -p /var/www/php-demo
chown -R www-data:www-data /var/www/php-demo

创建测试文件:

vim /var/www/php-demo/index.php

写入:

创建 Nginx 配置:

vim /etc/nginx/sites-available/php-demo

写入示例:

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

    root /var/www/php-demo;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

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

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

注意:php8.2-fpm.sock 需要根据实际版本调整。可以查看:

ls /run/php/

启用配置:

ln -s /etc/nginx/sites-available/php-demo /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

十二、部署 MariaDB 数据库

Debian 默认软件源中通常提供 MariaDB,它与 MySQL 高度兼容。

1. 安装 MariaDB

apt install -y mariadb-server mariadb-client

启动并设置开机自启:

systemctl enable mariadb
systemctl start mariadb

查看状态:

systemctl status mariadb

2. 初始化安全配置

执行:

mysql_secure_installation

建议选择:

Switch to unix_socket authentication: Y
Change the root password: Y 或 N
Remove anonymous users: Y
Disallow root login remotely: Y
Remove test database: Y
Reload privilege tables now: Y

3. 创建数据库和用户

登录数据库:

mysql -u root -p

执行 SQL:

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

测试登录:

mysql -u app_user -p app_db

十三、部署 PostgreSQL 数据库

如果你的项目使用 PostgreSQL,可以执行:

apt install -y postgresql postgresql-contrib

查看状态:

systemctl status postgresql

切换到 postgres 用户:

sudo -u postgres psql

创建数据库和用户:

CREATE DATABASE app_db;
CREATE USER app_user WITH ENCRYPTED PASSWORD 'StrongPassword123!';
GRANT ALL PRIVILEGES ON DATABASE app_db TO app_user;
\q

如果需要远程访问 PostgreSQL,需要修改:

vim /etc/postgresql/*/main/postgresql.conf

设置:

listen_addresses = '*'

再修改:

vim /etc/postgresql/*/main/pg_hba.conf

添加:

host    all             all             0.0.0.0/0               md5

重启:

systemctl restart postgresql

同时防火墙放行:

ufw allow 5432/tcp

生产环境不建议直接对公网开放数据库端口,建议通过内网、VPN 或 SSH 隧道访问。


十四、部署 Node.js 环境

如果你要部署 Vue、React、Next.js、Nuxt、NestJS、Express 等项目,需要 Node.js。

1. 使用 NodeSource 安装 Node.js

以 Node.js 20 为例:

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs

查看版本:

node -v
npm -v

安装 pnpm:

npm install -g pnpm

安装 PM2:

npm install -g pm2

2. 使用 PM2 启动 Node 项目

假设项目目录为:

/var/www/node-app

进入目录:

cd /var/www/node-app

安装依赖:

npm install

启动项目:

pm2 start app.js --name node-app

如果是 Next.js:

npm run build
pm2 start npm --name next-app -- start

保存 PM2 进程:

pm2 save

设置开机自启:

pm2 startup

根据输出提示执行对应命令。


3. Nginx 反向代理 Node.js

假设 Node 服务运行在:

127.0.0.1:3000

创建 Nginx 配置:

vim /etc/nginx/sites-available/node-app

写入:

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

    access_log /var/log/nginx/node-app.access.log;
    error_log /var/log/nginx/node-app.error.log;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header Real-IP $remote_addr;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

启用:

ln -s /etc/nginx/sites-available/node-app /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

十五、部署 Python 环境

如果你要部署 Django、Flask、FastAPI 等项目,可以使用 Python 虚拟环境配合 Gunicorn/Uvicorn。

1. 安装 Python 工具

apt install -y python3 python3-pip python3-venv

查看版本:

python3 --version
pip3 --version

2. 创建虚拟环境

假设项目目录为:

/var/www/python-app

执行:

cd /var/www/python-app
python3 -m venv venv
source venv/bin/activate

安装依赖:

pip install -r requirements.txt

如果是 FastAPI:

pip install fastapi uvicorn gunicorn

3. 使用 systemd 管理 Python 服务

创建服务文件:

vim /etc/systemd/system/python-app.service

示例内容:

[Unit]
Description=Python FastAPI Application
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/python-app
Environment="PATH=/var/www/python-app/venv/bin"
ExecStart=/var/www/python-app/venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000

Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

重新加载 systemd:

systemctl daemon-reload

启动服务:

systemctl start python-app
systemctl enable python-app

查看状态:

systemctl status python-app

查看日志:

journalctl -u python-app -f

4. Nginx 反向代理 Python 服务

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

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

十六、Docker 部署方式

如果你希望更方便地部署应用,可以在 Debian 上安装 Docker。

1. 安装 Docker

apt update
apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
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" \
> /etc/apt/sources.list.d/docker.list

安装:

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

查看版本:

docker version
docker compose version

设置开机自启:

systemctl enable docker
systemctl start docker

2. Docker Compose 示例源码

创建目录:

mkdir -p /opt/demo
cd /opt/demo

创建 docker-compose.yml

version: "3.8"

services:
  nginx:
    image: nginx:stable
    container_name: demo-nginx
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: always

创建网页:

mkdir html
cat > html/index.html <


    
    Docker Debian Demo


    

Docker Compose 部署成功

当前服务运行在 Debian + Docker 环境中。

EOF

启动:

docker compose up -d

访问:

http://服务器IP:8080

十七、项目部署完整示例

下面以一个静态网站项目为例,从源码拉取到上线完整演示。

1. 创建部署目录

mkdir -p /var/www/my-site
chown -R deploy:www-data /var/www/my-site

2. 拉取源码

cd /var/www/my-site
git clone https://github.com/example/my-site.git .

如果是私有仓库,需要先配置 SSH Key。

3. 构建项目

如果是普通静态网站,无需构建。

如果是 Vue/React 项目:

npm install
npm run build

构建产物通常在:

dist
build

4. 配置 Nginx

Vue 项目示例:

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

    root /var/www/my-site/dist;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    access_log /var/log/nginx/site.example.com.access.log;
    error_log /var/log/nginx/site.example.com.error.log;
}

React 项目类似,只需将 root 指向 build 目录即可。


十八、自动化部署脚本源码

下面提供一个适用于 Debian 12 的初始化部署脚本。该脚本会自动完成系统更新、安装常用工具、安装 Nginx、配置 UFW、防火墙放行常用端口等操作。

使用前建议先阅读脚本内容,确认符合你的服务器需求。

创建脚本:

vim debian-init.sh

写入以下源码:

#!/bin/bash

set -e

echo "======================================"
echo " Debian Server Init Script"
echo "======================================"

if [ "$(id -u)" -ne 0 ]; then
    echo "请使用 root 用户或 sudo 执行该脚本"
    exit 1
fi

echo "[1/8] 更新系统软件包..."
apt update
apt upgrade -y

echo "[2/8] 安装常用工具..."
apt install -y \
    vim \
    curl \
    wget \
    git \
    sudo \
    unzip \
    zip \
    tar \
    htop \
    net-tools \
    lsof \
    tree \
    ca-certificates \
    gnupg \
    software-properties-common

echo "[3/8] 安装 Nginx..."
apt install -y nginx
systemctl enable nginx
systemctl start nginx

echo "[4/8] 安装 UFW 防火墙..."
apt install -y ufw

echo "[5/8] 配置防火墙规则..."
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp

echo "[6/8] 启用防火墙..."
ufw --force enable

echo "[7/8] 设置系统时区为 Asia/Shanghai..."
timedatectl set-timezone Asia/Shanghai

echo "[8/8] 清理系统..."
apt autoremove -y
apt clean

echo "======================================"
echo " 初始化完成"
echo " Nginx 状态:"
systemctl status nginx --no-pager
echo "======================================"

赋予执行权限:

chmod +x debian-init.sh

执行脚本:

./debian-init.sh

如果你已修改 SSH 端口,请务必把脚本中的:

ufw allow 22/tcp

改为你的实际端口,例如:

ufw allow 2222/tcp

否则启用防火墙后可能导致 SSH 无法连接。


十九、自动化创建 Nginx 站点脚本源码

下面提供一个自动创建 Nginx 站点的脚本,输入域名后自动生成网站目录、测试首页和 Nginx 配置。

创建脚本:

vim create-nginx-site.sh

源码如下:

#!/bin/bash

set -e

if [ "$(id -u)" -ne 0 ]; then
    echo "请使用 root 用户或 sudo 执行该脚本"
    exit 1
fi

read -rp "请输入域名,例如 example.com: " DOMAIN

if [ -z "$DOMAIN" ]; then
    echo "域名不能为空"
    exit 1
fi

WEB_ROOT="/var/www/$DOMAIN"
NGINX_CONF="/etc/nginx/sites-available/$DOMAIN"

echo "创建网站目录:$WEB_ROOT"
mkdir -p "$WEB_ROOT"

cat > "$WEB_ROOT/index.html" <


    
    $DOMAIN 部署成功


    

$DOMAIN 部署成功

当前网站运行在 Debian + Nginx 环境中。

EOF chown -R www-data:www-data "$WEB_ROOT" echo "创建 Nginx 配置:$NGINX_CONF" cat > "$NGINX_CONF" <

执行:

chmod +x create-nginx-site.sh
./create-nginx-site.sh

二十、常用排错方法

1. 查看服务状态

systemctl status nginx
systemctl status ssh
systemctl status mariadb

2. 查看端口占用

ss -tunlp

或:

lsof -i:80

3. 查看 Nginx 日志

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

4. 检查 Nginx 配置

nginx -t

5. 查看系统日志

journalctl -xe

查看指定服务日志:

journalctl -u nginx -f

6. 检查磁盘空间

df -h

7. 检查内存使用

free -h

8. 检查 CPU 和进程

top

或:

htop

二十一、部署安全建议

部署完成后,不要只关注服务能否访问,还要重视安全。

1. 定期更新系统

apt update
apt upgrade -y

可以每周执行一次,也可以配置自动安全更新。

安装:

apt install -y unattended-upgrades

启用:

dpkg-reconfigure unattended-upgrades

2. 使用强密码

数据库、系统用户、后台管理员账号都要使用强密码。强密码建议包含:

  • 大写字母
  • 小写字母
  • 数字
  • 特殊符号
  • 长度不少于 12 位

3. 禁止数据库公网暴露

MySQL/MariaDB、PostgreSQL、Redis 等服务不建议直接开放到公网。如果确实需要远程访问,建议:

  • 只允许指定 IP
  • 使用 VPN
  • 使用 SSH 隧道
  • 设置复杂密码
  • 开启访问日志

4. 配置备份策略

至少需要备份:

  • 网站源码
  • 上传文件
  • 数据库
  • Nginx 配置
  • SSL 证书
  • 环境变量配置

备份方式可以选择:

  • rsync
  • tar
  • mysqldump
  • pg_dump
  • 对象存储
  • 云服务器快照

二十二、数据库备份脚本源码

下面提供一个 MariaDB/MySQL 自动备份脚本。

创建目录:

mkdir -p /opt/backup

创建脚本:

vim /opt/backup/mysql-backup.sh

源码:

#!/bin/bash

BACKUP_DIR="/opt/backup/mysql"
DATE=$(date +"%Y%m%d_%H%M%S")
DB_NAME="app_db"
DB_USER="app_user"
DB_PASS="StrongPassword123!"

mkdir -p "$BACKUP_DIR"

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

gzip "$BACKUP_DIR/${DB_NAME}_${DATE}.sql"

find "$BACKUP_DIR" -type f -name "*.gz" -mtime +7 -delete

echo "数据库备份完成:$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz"

赋权:

chmod +x /opt/backup/mysql-backup.sh

测试:

/opt/backup/mysql-backup.sh

添加定时任务:

crontab -e

每天凌晨 2 点备份:

0 2 * * * /opt/backup/mysql-backup.sh >> /opt/backup/mysql-backup.log 2>&1

二十三、网站文件备份脚本源码

创建脚本:

vim /opt/backup/web-backup.sh

源码:

#!/bin/bash

SOURCE_DIR="/var/www"
BACKUP_DIR="/opt/backup/web"
DATE=$(date +"%Y%m%d_%H%M%S")

mkdir -p "$BACKUP_DIR"

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

find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -delete

echo "网站文件备份完成:$BACKUP_DIR/web_${DATE}.tar.gz"

赋权并测试:

chmod +x /opt/backup/web-backup.sh
/opt/backup/web-backup.sh

添加定时任务:

30 2 * * * /opt/backup/web-backup.sh >> /opt/backup/web-backup.log 2>&1

二十四、常见问题 FAQ

1. Debian 和 Ubuntu 该选哪个?

如果你追求稳定、干净、长期运行,推荐 Debian。如果你希望软件版本较新、教程更多,也可以选择 Ubuntu。服务器生产环境中,两者都非常常见。

2. Nginx 启动失败怎么办?

先检查配置:

nginx -t

再查看日志:

journalctl -u nginx -xe

常见原因包括端口被占用、配置语法错误、证书路径错误、站点目录不存在等。

3. 修改 SSH 端口后无法连接怎么办?

可能是以下原因:

  • 防火墙未放行新端口
  • 云服务器安全组未放行新端口
  • SSH 配置错误
  • SSH 服务未重启
  • 使用旧端口连接

建议修改 SSH 配置时保留一个已登录终端,不要立即断开。

4. HTTPS 证书申请失败怎么办?

检查:

  • 域名是否正确解析到服务器 IP
  • 80 端口是否开放
  • Nginx 是否正常运行
  • 防火墙和云安全组是否放行 80/443
  • 域名是否被 CDN 代理影响

5. PHP 文件被下载而不是执行怎么办?

通常是 Nginx 没有正确配置 PHP-FPM。检查:

ls /run/php/

确认 fastcgi_pass 的 sock 文件路径是否正确。

6. 网站显示 403 Forbidden 怎么办?

常见原因:

  • 网站目录权限错误
  • 没有 index 文件
  • Nginx root 指向错误
  • SELinux/AppArmor 策略限制

Debian 中一般检查目录权限即可:

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

二十五、总结

本文完整介绍了 Debian 的部署流程,从系统安装、初始化配置、软件源优化、SSH 安全、防火墙设置,到 Nginx、HTTPS、PHP、MariaDB、PostgreSQL、Node.js、Python、Docker 等常见服务部署,并提供了多个可直接使用的脚本源码。

如果你只是部署一个简单网站,最核心的步骤是:

apt update
apt install -y nginx
mkdir -p /var/www/example.com
vim /etc/nginx/sites-available/example.com
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

如果你要部署生产环境,则建议额外完成:

  • 修改 SSH 端口
  • 禁止 root 登录
  • 使用密钥登录
  • 开启 UFW 防火墙
  • 配置 HTTPS
  • 定期备份数据
  • 定期更新系统
  • 不开放数据库公网端口
  • 使用 systemd 或 PM2 管理应用进程

Debian 的优势在于稳定、简洁和可控。只要按照规范部署和维护,它可以长期稳定运行,为你的 Web 项目、API 服务、数据库服务或容器化应用提供可靠的基础环境。

目录结构
全文