站长从零搭建 Debian 服务器:网站部署、安全加固与运维全流程
Debian 部署完整教程|适合站长
对于站长来说,服务器系统的选择直接影响网站的稳定性、安全性、运维成本以及后续扩展能力。Debian 作为 Linux 发行版中的经典代表,以稳定、安全、轻量、软件源丰富著称,非常适合用于部署网站、博客、论坛、API 服务、数据库服务以及各类后台系统。
本文将从服务器准备、Debian 安装、基础安全配置、Web 环境部署、站点发布、SSL 证书配置、性能优化、备份与日常维护等方面,完整讲解 Debian 部署流程。无论你是个人站长,还是准备搭建生产环境服务器,都可以按照本文步骤逐步完成。
一、为什么站长适合选择 Debian?
Debian 是很多服务器环境的首选系统之一,主要优势包括:
1. 稳定性强
Debian 的软件包更新策略偏保守,正式版发布前会经过充分测试。因此相比一些更新频繁的系统,Debian 更适合长期运行的网站服务器。
2. 安全性高
Debian 拥有完善的安全更新机制,官方会及时发布安全补丁。只要站长保持系统更新,就能有效降低被攻击风险。
3. 资源占用低
Debian 默认安装较为精简,不会附带大量不必要的软件,非常适合云服务器、VPS、独立服务器等环境。
4. 软件生态成熟
Nginx、Apache、PHP、MariaDB、MySQL、Redis、Docker、Node.js 等常用服务都可以在 Debian 上顺利部署。
5. 文档丰富,社区活跃
Debian 使用历史悠久,遇到问题时,通常可以通过官方文档、社区论坛或搜索引擎找到解决方案。
二、部署前准备工作
在正式安装 Debian 之前,站长需要准备以下内容。
1. 一台服务器
可以选择以下任意一种:
- 云服务器,例如阿里云、腾讯云、华为云、AWS、Vultr、Hetzner 等;
- VPS 主机;
- 独立服务器;
- 本地物理机或虚拟机。
如果是网站生产环境,建议最低配置如下:
| 项目 | 建议配置 |
|---|---|
| CPU | 1 核及以上 |
| 内存 | 1GB 起步,推荐 2GB 以上 |
| 硬盘 | 20GB 起步,推荐 SSD |
| 带宽 | 根据访问量选择 |
| 系统 | Debian 12 或 Debian 11 |
如果网站访问量较大,建议选择 2 核 4GB 或更高配置。
2. 一个域名
站长部署网站通常需要绑定域名。你需要提前购买域名,并完成解析。
常见解析记录:
| 类型 | 主机记录 | 记录值 |
|---|---|---|
| A | @ | 服务器 IPv4 地址 |
| A | www | 服务器 IPv4 地址 |
| AAAA | @ | 服务器 IPv6 地址 |
| CNAME | www | 主域名或 CDN 地址 |
如果服务器在中国大陆,还需要根据相关规定完成备案。
3. SSH 工具
Windows 用户可以使用:
- Windows Terminal;
- PuTTY;
- Xshell;
- MobaXterm。
macOS 和 Linux 用户可以直接使用终端。
连接服务器命令如下:
ssh root@服务器IP
例如:
ssh root@123.123.123.123
三、安装 Debian 系统
如果你购买的是云服务器,通常可以在控制台直接选择 Debian 镜像安装。建议选择:
- Debian 12 Bookworm;
- Debian 11 Bullseye。
对于大多数新站长,推荐使用 Debian 12,因为它的软件版本更新,安全支持周期较长。
1. 云服务器安装方式
在云服务商控制台中:
- 创建云服务器;
- 镜像选择 Debian;
- 设置 root 密码或 SSH 密钥;
- 开放必要端口;
- 启动服务器。
常用端口包括:
| 端口 | 用途 |
|---|---|
| 22 | SSH 远程连接 |
| 80 | HTTP 网站访问 |
| 443 | HTTPS 网站访问 |
| 3306 | MySQL/MariaDB,通常不建议公网开放 |
| 6379 | Redis,禁止公网开放 |
2. 本地安装方式
如果是在物理机或虚拟机中安装 Debian,可以到 Debian 官网下载 ISO 镜像:
https://www.debian.org/
安装过程中建议:
- 选择最小化安装;
- 不安装桌面环境;
- 勾选 SSH server;
- 分区可以使用自动分区;
- 设置强密码。
服务器环境不建议安装图形界面,因为图形界面会占用额外资源,并增加安全风险。
四、首次登录后的基础配置
安装完成后,使用 SSH 登录服务器。
ssh root@服务器IP
登录成功后,先检查系统版本:
cat /etc/os-release
查看内核版本:
uname -a
查看磁盘空间:
df -h
查看内存:
free -h
五、更新系统软件包
新服务器上线后,第一件事就是更新软件包。
apt update
apt upgrade -y
如果涉及内核升级,建议重启服务器:
reboot
重启后重新 SSH 登录。
为了方便后续操作,可以安装常用工具:
apt install -y curl wget vim nano sudo unzip zip git htop net-tools lsof ca-certificates gnupg
这些工具的作用如下:
| 工具 | 作用 |
|---|---|
| curl/wget | 下载文件、测试接口 |
| vim/nano | 编辑文本 |
| sudo | 普通用户提权 |
| unzip/zip | 解压与压缩 |
| git | 拉取代码 |
| htop | 查看进程与资源 |
| net-tools | 查看网络信息 |
| lsof | 查看端口占用 |
六、创建普通用户并禁止 root 直接登录
生产环境中,不建议长期使用 root 用户登录服务器。更安全的做法是创建普通用户,并通过 sudo 执行管理命令。
1. 创建用户
以创建用户 webadmin 为例:
adduser webadmin
按照提示设置密码。
2. 添加 sudo 权限
usermod -aG sudo webadmin
测试切换用户:
su - webadmin
sudo whoami
如果输出:
root
说明 sudo 权限配置成功。
3. 配置 SSH 登录安全
编辑 SSH 配置文件:
sudo vim /etc/ssh/sshd_config
建议修改以下配置:
PermitRootLogin no
PasswordAuthentication yes
Port 22
如果你已经配置 SSH 密钥登录,可以将密码登录关闭:
PasswordAuthentication no
修改后重启 SSH 服务:
sudo systemctl restart ssh
注意:修改 SSH 配置前,不要关闭当前连接窗口。建议另开一个终端测试能否成功登录,避免把自己锁在服务器外面。
七、配置防火墙
Debian 可以使用 ufw 管理防火墙,操作简单,适合站长使用。
安装 UFW:
sudo apt install -y ufw
允许 SSH:
sudo ufw allow 22/tcp
允许 HTTP 和 HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
启用防火墙:
sudo ufw enable
查看状态:
sudo ufw status
如果你修改了 SSH 端口,例如改为 2222,则需要允许新端口:
sudo ufw allow 2222/tcp
并确认新端口可用后,再删除旧端口规则。
八、安装 Nginx Web 服务器
Nginx 是站长最常用的 Web 服务器之一,性能好、资源占用低,非常适合部署静态网站、反向代理、PHP 站点等。
安装 Nginx:
sudo apt install -y nginx
启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
查看状态:
sudo systemctl status nginx
在浏览器访问:
http://服务器IP
如果能看到 Nginx 默认欢迎页面,说明安装成功。
Nginx 默认网站目录一般为:
/var/www/html
默认配置文件通常位于:
/etc/nginx/sites-available/default
九、部署静态网站
如果你的网站是纯 HTML、CSS、JavaScript,可以直接部署到 Nginx 目录。
1. 创建站点目录
假设域名为 example.com:
sudo mkdir -p /var/www/example.com
设置权限:
sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www/example.com
2. 创建测试页面
sudo vim /var/www/example.com/index.html
写入:
我的 Debian 网站
Debian 部署成功
这是一个运行在 Debian + Nginx 上的网站。
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
访问域名即可看到网站页面。
十、安装 PHP 环境
如果你要部署 WordPress、Typecho、Discuz、Laravel 等程序,通常需要 PHP 环境。
安装 PHP-FPM 和常用扩展:
sudo apt install -y php php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl php-bcmath
查看 PHP 版本:
php -v
查看 PHP-FPM 服务:
systemctl status php*-fpm
Debian 12 默认 PHP 版本通常为 PHP 8.2。
配置 Nginx 支持 PHP
创建站点配置:
sudo vim /etc/nginx/sites-available/php-example.com
示例配置:
server {
listen 80;
server_name php-example.com www.php-example.com;
root /var/www/php-example.com;
index index.php index.html index.htm;
access_log /var/log/nginx/php-example.com.access.log;
error_log /var/log/nginx/php-example.com.error.log;
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;
}
}
如果你的 PHP 版本不是 8.2,需要将
php8.2-fpm.sock改成实际版本。可以使用下面命令查看:
ls /run/php/
创建网站目录:
sudo mkdir -p /var/www/php-example.com
sudo chown -R www-data:www-data /var/www/php-example.com
创建测试文件:
sudo vim /var/www/php-example.com/index.php
写入:
启用站点并重载 Nginx:
sudo ln -s /etc/nginx/sites-available/php-example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
访问域名,如果看到 PHP 信息页面,说明 PHP 环境部署成功。
上线后建议删除
phpinfo()页面,避免泄露服务器信息。
十一、安装 MariaDB 数据库
很多网站程序需要数据库。Debian 上常用 MariaDB,它与 MySQL 高度兼容。
安装 MariaDB:
sudo apt install -y mariadb-server mariadb-client
启动并设置开机自启:
sudo systemctl enable mariadb
sudo systemctl start mariadb
执行安全初始化:
sudo mysql_secure_installation
按照提示设置:
- 设置 root 密码;
- 移除匿名用户;
- 禁止 root 远程登录;
- 删除测试数据库;
- 刷新权限表。
登录数据库:
sudo mysql
创建数据库和用户:
CREATE DATABASE site_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'site_user'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON site_db.* TO 'site_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
站长部署网站程序时,可以填写:
数据库名:site_db
数据库用户:site_user
数据库密码:你设置的强密码
数据库主机:localhost
十二、部署 WordPress 示例
WordPress 是站长最常见的网站程序之一。下面以 Debian + Nginx + PHP + MariaDB 部署 WordPress 为例。
进入网站目录:
cd /var/www/example.com
下载 WordPress:
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -zxvf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
设置权限:
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;
Nginx 配置示例:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
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;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
测试并重载:
sudo nginx -t
sudo systemctl reload nginx
然后访问:
http://example.com
根据页面提示填写数据库信息,即可完成 WordPress 初始化。
十三、配置 HTTPS SSL 证书
HTTPS 已经是现代网站的基本要求。可以使用 Let’s Encrypt 免费证书。
安装 Certbot:
sudo apt install -y certbot python3-certbot-nginx
申请证书:
sudo certbot --nginx -d example.com -d www.example.com
根据提示选择是否强制跳转 HTTPS。建议选择自动跳转。
申请成功后,Certbot 会自动修改 Nginx 配置,并配置证书续期任务。
测试自动续期:
sudo certbot renew --dry-run
查看证书:
sudo certbot certificates
Let’s Encrypt 证书有效期为 90 天,但 Certbot 会自动续期。站长只需要确保服务器 80 和 443 端口正常开放即可。
十四、常用安全加固措施
网站上线后,安全配置非常重要。以下措施建议站长尽量完成。
1. 使用强密码
服务器、数据库、后台管理账号都应使用强密码。强密码建议包含:
- 大写字母;
- 小写字母;
- 数字;
- 特殊符号;
- 长度不少于 12 位。
2. 修改 SSH 默认端口
编辑配置文件:
sudo vim /etc/ssh/sshd_config
将端口改为例如:
Port 2222
放行防火墙:
sudo ufw allow 2222/tcp
重启 SSH:
sudo systemctl restart ssh
确认新端口可登录后,再关闭旧端口。
3. 安装 Fail2ban
Fail2ban 可以自动封禁暴力破解 IP。
sudo apt install -y fail2ban
复制配置文件:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
启动服务:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
查看状态:
sudo fail2ban-client status
4. 隐藏 Nginx 版本信息
编辑 Nginx 配置:
sudo vim /etc/nginx/nginx.conf
在 http 模块中加入:
server_tokens off;
测试并重载:
sudo nginx -t
sudo systemctl reload nginx
5. 数据库禁止公网访问
检查 MariaDB 监听地址:
sudo ss -lntp | grep 3306
如果只监听本地 127.0.0.1,通常是安全的。不要在云服务器安全组中开放 3306 给公网,除非你非常清楚风险并已做好访问控制。
十五、性能优化建议
对于站长来说,服务器性能不仅影响访问速度,也会影响 SEO 和用户体验。
1. 开启 Gzip 压缩
编辑 Nginx 配置:
sudo vim /etc/nginx/nginx.conf
在 http 模块中配置:
gzip on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
重载 Nginx:
sudo nginx -t
sudo systemctl reload nginx
2. 配置静态资源缓存
在站点配置中加入:
location ~* \.(jpg|jpeg|png|gif|ico|css|js|webp|svg|woff|woff2)$ {
expires 30d;
access_log off;
}
这样可以减少重复请求,提高访问速度。
3. 调整 PHP 上传限制
编辑 PHP 配置文件:
sudo vim /etc/php/8.2/fpm/php.ini
修改:
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
重启 PHP-FPM:
sudo systemctl restart php8.2-fpm
4. 使用 CDN
如果网站面向全国或全球用户,建议使用 CDN。CDN 可以:
- 加速静态资源访问;
- 减轻源站压力;
- 隐藏源站 IP;
- 抵御部分恶意流量。
常见 CDN 服务包括 Cloudflare、阿里云 CDN、腾讯云 CDN、百度云加速等。
十六、备份策略
很多站长忽视备份,直到网站数据丢失才后悔。生产环境一定要建立备份机制。
1. 备份网站文件
例如备份 /var/www/example.com:
sudo tar -zcvf /backup/example.com-files-$(date +%F).tar.gz /var/www/example.com
2. 备份数据库
mysqldump -u site_user -p site_db > /backup/site_db-$(date +%F).sql
3. 自动备份脚本
创建备份目录:
sudo mkdir -p /backup
创建脚本:
sudo vim /usr/local/bin/backup-site.sh
写入:
#!/bin/bash
DATE=$(date +%F)
WEB_DIR="/var/www/example.com"
BACKUP_DIR="/backup"
DB_NAME="site_db"
DB_USER="site_user"
DB_PASS="数据库密码"
tar -zcf $BACKUP_DIR/example.com-files-$DATE.tar.gz $WEB_DIR
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/site_db-$DATE.sql
find $BACKUP_DIR -type f -mtime +7 -delete
添加执行权限:
sudo chmod +x /usr/local/bin/backup-site.sh
设置定时任务:
sudo crontab -e
加入:
0 3 * * * /usr/local/bin/backup-site.sh
表示每天凌晨 3 点自动备份,并删除 7 天前的旧备份。
更安全的做法是将备份同步到对象存储、另一台服务器或云盘,不要只保存在本机。
十七、日志查看与问题排查
站长日常维护中,经常需要查看日志。
1. 查看 Nginx 日志
访问日志:
sudo tail -f /var/log/nginx/access.log
错误日志:
sudo tail -f /var/log/nginx/error.log
指定站点日志:
sudo tail -f /var/log/nginx/example.com.error.log
2. 查看 PHP-FPM 日志
sudo journalctl -u php8.2-fpm
3. 查看 MariaDB 状态
sudo systemctl status mariadb
查看数据库日志:
sudo journalctl -u mariadb
4. 查看端口占用
sudo ss -lntp
或:
sudo lsof -i:80
5. 查看服务器负载
htop
如果服务器负载过高,可以检查:
- 是否有异常进程;
- 是否遭遇恶意爬虫;
- 是否数据库查询过慢;
- 是否 PHP 插件占用过多资源;
- 是否需要升级配置或使用缓存。
十八、常见问题解决
1. 域名无法访问
可能原因:
- 域名 DNS 未解析;
- 解析未生效;
- 服务器安全组未开放 80/443;
- UFW 防火墙未放行;
- Nginx 配置错误;
- 网站目录权限错误。
可以依次检查:
ping example.com
sudo ufw status
sudo nginx -t
sudo systemctl status nginx
2. HTTPS 证书申请失败
常见原因:
- 域名没有解析到当前服务器;
- 80 端口没有开放;
- Nginx 配置冲突;
- CDN 开启了代理导致验证失败。
建议先确保:
http://example.com
可以正常访问,再申请证书。
3. PHP 页面下载而不是执行
说明 Nginx 没有正确转发 PHP 到 PHP-FPM。检查配置中是否包含:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
并确认 PHP-FPM socket 路径正确:
ls /run/php/
4. WordPress 无法上传文件
可能是权限或 PHP 上传限制问题。
检查权限:
sudo chown -R www-data:www-data /var/www/example.com
检查 PHP 配置:
upload_max_filesize
post_max_size
修改后重启 PHP-FPM。
5. 数据库连接失败
检查:
- 数据库名是否正确;
- 用户名和密码是否正确;
- 数据库用户权限是否正确;
- MariaDB 是否正在运行。
命令:
sudo systemctl status mariadb
mysql -u site_user -p
十九、站长上线前检查清单
网站正式上线前,建议按照下面清单检查:
- [ ] Debian 系统已更新;
- [ ] 已创建普通用户;
- [ ] root 远程登录已禁用;
- [ ] 防火墙已开放必要端口;
- [ ] Nginx 正常运行;
- [ ] PHP-FPM 正常运行;
- [ ] MariaDB 正常运行;
- [ ] 域名解析正确;
- [ ] HTTPS 证书已配置;
- [ ] 网站目录权限正确;
- [ ] 已删除测试文件,例如
phpinfo(); - [ ] 已配置备份;
- [ ] 已安装 Fail2ban;
- [ ] 数据库未向公网开放;
- [ ] 网站后台密码足够安全;
- [ ] CDN 或缓存策略已规划。
二十、日常维护建议
Debian 服务器部署完成后,并不代表工作结束。站长还需要做好长期维护。
1. 定期更新系统
sudo apt update
sudo apt upgrade -y
建议每周或每月执行一次。
2. 定期检查磁盘空间
df -h
如果磁盘占用过高,重点检查:
- 日志文件;
- 备份文件;
- 上传文件;
- 数据库文件;
- 缓存目录。
3. 定期检查 SSL 证书
sudo certbot certificates
确保证书没有过期。
4. 定期检查备份可用性
备份不是只生成文件就可以,必须定期测试恢复流程。否则真正出现故障时,可能发现备份不可用。
5. 监控网站状态
可以使用:
- UptimeRobot;
- Better Stack;
- 云服务商监控;
- Prometheus + Grafana;
- 自建监控脚本。
至少要监控:
- 网站是否在线;
- CPU 使用率;
- 内存使用率;
- 磁盘空间;
- HTTPS 证书过期时间。
结语
Debian 是非常适合站长使用的服务器系统。它稳定、轻量、安全,适合部署从个人博客到中小型商业网站的各种服务。通过本文的步骤,你可以完成从 Debian 初始化、安全加固、Nginx 安装、PHP 和数据库配置、网站部署、HTTPS 证书申请,到备份与日常维护的一整套流程。
对于新手站长来说,建议先从 Debian + Nginx + PHP + MariaDB 这一经典组合开始,熟悉服务器基础操作后,再逐步尝试 Docker、Redis、对象存储、CDN、负载均衡等更高级的方案。
最后提醒一句:服务器部署最重要的不是“能跑起来”,而是“长期稳定、安全地跑下去”。做好更新、备份、安全和监控,才是一个合格站长真正需要掌握的核心能力。