站长上手 Debian:从服务器初始化到网站上线全流程指南
Debian 部署完整教程|适合站长
对于站长来说,选择一套稳定、安全、可长期维护的服务器系统,是网站长期运营的基础。Debian 作为老牌 Linux 发行版,以稳定性强、软件仓库丰富、安全维护周期长、社区资料完善等特点,长期受到服务器用户和站长群体的欢迎。无论你是部署个人博客、企业官网、论坛社区,还是搭建反向代理、数据库服务、对象存储、监控系统,Debian 都是非常可靠的选择。
本文将从站长实际使用角度出发,完整介绍 Debian 服务器的部署流程,包括服务器购买后的初始化设置、SSH 安全配置、系统更新、防火墙配置、Web 环境部署、Nginx、PHP、MariaDB、SSL 证书、网站目录、权限设置、常用运维命令以及安全加固建议。适合新手站长按照步骤操作,也适合有一定基础的用户作为检查清单使用。
一、为什么站长适合选择 Debian?
在服务器系统选择上,常见的 Linux 发行版包括 Debian、Ubuntu、CentOS、Rocky Linux、AlmaLinux 等。对于站长来说,Debian 有以下优势:
1. 稳定性优秀
Debian 的软件包通常经过较长时间测试后才会进入稳定版仓库,因此系统运行非常稳健。网站服务器最重要的不是追求最新,而是长期稳定在线。对于生产环境来说,稳定性往往比“新功能”更重要。
2. 软件仓库丰富
Debian 官方仓库提供了大量常用软件,例如:
- Nginx
- Apache
- PHP
- MariaDB
- PostgreSQL
- Redis
- Fail2ban
- Certbot
- Docker
- UFW
- Supervisor
大多数常见建站组件都可以直接通过 apt 安装,维护简单,升级方便。
3. 安全维护周期较长
Debian Stable 版本拥有长期安全维护支持。对于不想频繁重装系统的站长来说,这一点非常重要。只要定期更新安全补丁,就可以保持较好的安全状态。
4. 资源占用低
相比一些预装较多组件的系统,Debian 默认环境非常干净,占用资源少,非常适合低配置 VPS。例如 1 核 1G 内存的服务器,也可以轻松运行 Nginx、PHP、MariaDB 等基础建站环境。
5. 社区资料完善
Debian 使用历史悠久,遇到问题时很容易在官方文档、论坛、博客和问答社区找到解决方案。对站长来说,排错成本较低。
二、部署前准备工作
在正式部署 Debian 之前,你需要准备以下内容。
1. 一台 VPS 或独立服务器
可以选择国内或海外云服务器,常见服务商包括:
- 阿里云
- 腾讯云
- 华为云
- AWS
- Google Cloud
- Vultr
- Linode
- Hetzner
- DigitalOcean
如果网站面向国内用户,建议选择国内服务器并完成备案;如果网站面向海外用户,可以选择香港、日本、新加坡、美国或欧洲节点。
2. Debian 系统版本选择
建议选择 Debian Stable 版本,例如:
- Debian 12 Bookworm
- Debian 11 Bullseye
如果是新部署服务器,推荐选择 Debian 12。它的软件版本更新一些,同时仍然保持稳定。
3. 本地 SSH 工具
站长需要通过 SSH 登录服务器进行管理。不同系统可以使用不同工具:
- Windows:Windows Terminal、PowerShell、PuTTY、Xshell、MobaXterm
- macOS:系统自带终端
- Linux:系统自带终端
连接命令一般为:
ssh root@服务器IP
例如:
ssh root@192.0.2.10
首次连接时会提示是否信任主机,输入 yes 即可。
三、首次登录服务器后的基础检查
成功登录服务器后,先检查系统信息。
cat /etc/os-release
查看内核版本:
uname -a
查看磁盘情况:
df -h
查看内存情况:
free -h
查看 CPU 信息:
lscpu
这些命令可以帮助你确认服务器配置是否与购买时一致,也方便后续排查问题。
四、更新系统软件包
新服务器上线后,第一件事是更新系统软件包。
apt update
apt upgrade -y
如果有内核更新,可以重启服务器:
reboot
重新登录后,可以清理无用软件包:
apt autoremove -y
apt autoclean
保持系统更新是最基础的安全措施之一。建议站长养成定期执行更新的习惯,尤其是安全补丁。
五、设置服务器时区
服务器默认时区可能不是中国时间。对于日志分析、程序运行、定时任务来说,正确的时区非常重要。
查看当前时间:
date
设置为上海时区:
timedatectl set-timezone Asia/Shanghai
再次查看:
date
如果你的网站主要服务海外用户,也可以根据需要设置为 UTC 或目标地区时区。
六、创建普通用户并授予 sudo 权限
很多新手站长习惯一直使用 root 用户操作服务器,这并不安全。建议创建一个普通用户,并通过 sudo 执行管理命令。
创建用户:
adduser webmaster
根据提示设置密码。
安装 sudo:
apt install sudo -y
将用户加入 sudo 组:
usermod -aG sudo webmaster
切换到新用户测试:
su - webmaster
测试 sudo 权限:
sudo whoami
如果返回:
root
说明配置成功。
七、配置 SSH 安全登录
SSH 是服务器管理入口,必须重点加固。
1. 修改 SSH 默认端口
默认 SSH 端口是 22,经常会被扫描。可以修改为其他端口,例如 22222。
编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
找到或添加:
Port 22222
注意:修改端口后,一定要先配置防火墙放行新端口,否则可能无法登录。
2. 禁止 root 远程登录
在同一文件中找到:
PermitRootLogin yes
修改为:
PermitRootLogin no
这样可以降低暴力破解 root 账户的风险。
3. 禁止密码登录,使用密钥登录
如果你熟悉 SSH 密钥,建议禁用密码登录。先在本地生成密钥:
ssh-keygen -t ed25519
将公钥上传到服务器:
ssh-copy-id -p 22222 webmaster@服务器IP
确认密钥登录成功后,再修改配置:
PasswordAuthentication no
PubkeyAuthentication yes
重启 SSH 服务:
sudo systemctl restart ssh
测试新端口登录:
ssh -p 22222 webmaster@服务器IP
4. 重要提醒
修改 SSH 配置时,建议保留当前连接窗口不要关闭,另开一个终端测试新配置是否可以登录。确认无误后,再关闭旧连接。这样可以避免把自己锁在服务器外面。
八、配置防火墙 UFW
UFW 是比较适合新手站长使用的防火墙工具,命令简单直观。
安装 UFW:
sudo apt install ufw -y
放行 SSH 新端口:
sudo ufw allow 22222/tcp
放行 HTTP 和 HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
启用防火墙:
sudo ufw enable
查看状态:
sudo ufw status
输出类似:
Status: active
To Action From
-- ------ ----
22222/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
如果你使用数据库远程连接、面板、监控工具等,也需要按需放行对应端口。但不建议随意开放数据库端口到公网。
九、安装常用基础工具
部署网站前,可以先安装一些常用工具。
sudo apt install -y curl wget vim nano git unzip zip tar htop net-tools lsof cron ca-certificates gnupg
常用说明:
curl:请求测试、下载安装脚本wget:下载文件vim/nano:编辑文件git:拉取代码unzip/zip:压缩解压htop:查看系统资源net-tools:提供 netstat 等命令lsof:查看端口占用cron:定时任务ca-certificates:证书相关依赖
十、部署 Nginx Web 服务器
Nginx 是当前非常常见的高性能 Web 服务器,适合部署静态网站、PHP 网站、反向代理等。
安装 Nginx:
sudo apt install nginx -y
启动服务:
sudo systemctl start nginx
设置开机自启:
sudo systemctl enable nginx
查看状态:
sudo systemctl status nginx
浏览器访问:
http://服务器IP
如果看到 Nginx 默认欢迎页面,说明安装成功。
十一、配置网站目录
站长通常会为每个站点创建独立目录。假设域名是 example.com,可以创建目录:
sudo mkdir -p /var/www/example.com/public
创建测试页面:
sudo nano /var/www/example.com/public/index.html
写入:
Example Website
Debian Nginx 网站部署成功
设置目录权限:
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 {} \;
其中 www-data 是 Debian 中 Nginx/PHP 常用的 Web 服务用户。
十二、配置 Nginx 虚拟主机
创建站点配置文件:
sudo nano /etc/nginx/sites-available/example.com
写入以下内容:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public;
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
如果显示:
syntax is ok
test is successful
重载 Nginx:
sudo systemctl reload nginx
然后将域名解析到服务器 IP。等待 DNS 生效后,访问:
http://example.com
即可看到网站页面。
十三、安装 PHP 环境
如果你要部署 WordPress、Typecho、Discuz、Laravel 等 PHP 程序,需要安装 PHP。
Debian 12 默认可安装 PHP 8.2:
sudo apt install -y php-fpm php-cli php-mysql php-curl php-gd php-mbstring php-xml php-zip php-bcmath php-intl
查看 PHP 版本:
php -v
查看 PHP-FPM 服务:
sudo systemctl status php8.2-fpm
设置开机自启:
sudo systemctl enable php8.2-fpm
如果你的版本不是 PHP 8.2,需要根据实际版本调整服务名称,例如 php8.1-fpm。
十四、配置 Nginx 支持 PHP
修改站点配置:
sudo nano /etc/nginx/sites-available/example.com
将配置改为:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public;
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/ /index.php?$query_string;
}
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
创建 PHP 测试文件:
sudo nano /var/www/example.com/public/info.php
写入:
浏览器访问:
http://example.com/info.php
如果能看到 PHP 信息页面,说明 PHP 配置成功。
测试完成后,务必删除该文件:
sudo rm /var/www/example.com/public/info.php
因为 phpinfo() 会暴露服务器环境信息,不适合长期公开。
十五、安装 MariaDB 数据库
MariaDB 是 MySQL 的一个常用分支,兼容性好,适合多数 PHP 建站程序。
安装 MariaDB:
sudo apt install mariadb-server mariadb-client -y
启动并设置开机自启:
sudo systemctl start mariadb
sudo systemctl enable mariadb
执行安全初始化:
sudo mysql_secure_installation
根据提示操作。常见选择如下:
Switch to unix_socket authentication? n
Change the root password? y
Remove anonymous users? y
Disallow root login remotely? y
Remove test database and access to it? y
Reload privilege tables now? y
登录数据库:
sudo mysql
创建数据库和用户:
CREATE DATABASE exampledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
注意:数据库密码一定要使用强密码,避免使用简单密码、域名、生日、手机号等。
十六、申请 HTTPS SSL 证书
现在网站基本都需要 HTTPS。可以使用 Let’s Encrypt 免费证书。
安装 Certbot:
sudo apt install certbot python3-certbot-nginx -y
申请证书:
sudo certbot --nginx -d example.com -d www.example.com
根据提示输入邮箱、同意协议,并选择是否将 HTTP 自动跳转到 HTTPS。
申请完成后,访问:
https://example.com
即可验证证书是否生效。
查看自动续期:
sudo certbot renew --dry-run
Let’s Encrypt 证书有效期为 90 天,Certbot 通常会自动配置续期任务。站长仍然建议定期检查证书状态,避免网站证书过期影响访问。
十七、部署 WordPress 示例
很多站长使用 Debian 部署 WordPress,这里给出一个简单流程。
进入网站目录:
cd /var/www/example.com/public
下载 WordPress:
sudo wget https://wordpress.org/latest.zip
解压:
sudo unzip latest.zip
移动文件:
sudo mv wordpress/* .
删除多余文件:
sudo rm -rf wordpress latest.zip
设置权限:
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 {} \;
然后浏览器访问:
https://example.com
根据页面提示填写数据库信息:
- 数据库名:
exampledb - 用户名:
exampleuser - 密码:你设置的强密码
- 数据库主机:
localhost - 表前缀:建议不要使用默认
wp_,可以改为随机前缀,例如exwp_
十八、常用网站权限建议
权限设置不当会导致网站无法访问,或者存在安全风险。一般建议:
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 {} \;
对于某些框架,例如 Laravel,需要给特定目录写权限:
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache
不建议随意使用:
chmod -R 777
777 意味着任何用户都可以读写执行,存在严重安全隐患。除非临时排查问题,否则不要用于生产环境。
十九、配置网站日志与排错
Nginx 常用日志位置:
/var/log/nginx/access.log
/var/log/nginx/error.log
如果你为站点单独配置了日志,则类似:
/var/log/nginx/example.com.access.log
/var/log/nginx/example.com.error.log
查看实时访问日志:
sudo tail -f /var/log/nginx/example.com.access.log
查看错误日志:
sudo tail -f /var/log/nginx/example.com.error.log
PHP-FPM 日志通常可通过服务状态查看:
sudo systemctl status php8.2-fpm
也可以查看相关日志目录:
ls /var/log/
常见错误包括:
1. 403 Forbidden
可能原因:
- 网站目录权限不正确
- Nginx root 路径写错
- 缺少 index 文件
- SELinux/AppArmor 或安全策略限制
2. 404 Not Found
可能原因:
- 域名配置不匹配
- root 路径错误
- 文件不存在
- 伪静态配置错误
3. 502 Bad Gateway
可能原因:
- PHP-FPM 没有启动
- PHP socket 路径错误
- PHP 程序崩溃
- 权限问题
检查 PHP-FPM:
sudo systemctl status php8.2-fpm
检查 socket:
ls /run/php/
二十、安装 Fail2ban 防止暴力破解
Fail2ban 可以监控 SSH、Nginx 等日志,对恶意 IP 自动封禁。
安装:
sudo apt install fail2ban -y
创建本地配置:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑:
sudo nano /etc/fail2ban/jail.local
找到 SSH 配置部分,确保启用:
[sshd]
enabled = true
port = 22222
启动并设置开机自启:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
查看状态:
sudo fail2ban-client status
sudo fail2ban-client status sshd
Fail2ban 对开放 SSH 的服务器非常有帮助,尤其是公网服务器每天都会遭遇大量扫描和尝试登录。
二十一、配置自动安全更新
为了减少手动维护成本,可以安装自动安全更新工具。
sudo apt install unattended-upgrades -y
启用配置:
sudo dpkg-reconfigure unattended-upgrades
选择:
Yes
查看配置文件:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
通常默认会自动应用安全更新。对于生产环境,自动更新虽然方便,但也建议定期检查系统日志,避免极少数情况下更新影响服务。
二十二、配置 Swap 交换空间
如果你的 VPS 内存较小,例如 1GB 或 2GB,建议配置 Swap,避免内存耗尽导致服务崩溃。
查看是否已有 Swap:
swapon --show
创建 2GB Swap 文件:
sudo fallocate -l 2G /swapfile
如果 fallocate 不可用,可以使用:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
设置权限:
sudo chmod 600 /swapfile
格式化为 Swap:
sudo mkswap /swapfile
启用:
sudo swapon /swapfile
写入开机自动挂载:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
查看:
free -h
对于数据库和 PHP 网站来说,Swap 可以在内存紧张时提供缓冲,但它不能替代真实内存。如果网站访问量较大,仍然应该升级服务器配置。
二十三、设置定时备份
站长必须重视备份。很多网站事故并不是黑客攻击,而是误删文件、数据库损坏、插件更新失败、服务器到期或磁盘异常。
1. 备份网站文件
创建备份目录:
sudo mkdir -p /backup
备份网站目录:
sudo tar -czf /backup/example.com-files-$(date +%F).tar.gz /var/www/example.com
2. 备份数据库
mysqldump -u exampleuser -p exampledb > /backup/exampledb-$(date +%F).sql
3. 编写备份脚本
创建脚本:
sudo nano /usr/local/bin/backup-example.sh
写入:
#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%F)
WEB_DIR="/var/www/example.com"
DB_NAME="exampledb"
DB_USER="exampleuser"
DB_PASS="数据库密码"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/example.com-files-$DATE.tar.gz $WEB_DIR
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/exampledb-$DATE.sql
find $BACKUP_DIR -type f -mtime +7 -delete
赋予执行权限:
sudo chmod +x /usr/local/bin/backup-example.sh
添加定时任务:
sudo crontab -e
每天凌晨 3 点执行:
0 3 * * * /usr/local/bin/backup-example.sh
更推荐将备份同步到远程存储,例如另一台服务器、对象存储、云盘或 S3 兼容存储。只在本机备份是不够的,因为服务器磁盘损坏或被入侵时,本地备份也可能丢失。
二十四、站长常用运维命令
查看系统负载:
uptime
查看内存:
free -h
查看磁盘:
df -h
查看目录占用:
du -sh /var/www/*
查看端口监听:
sudo ss -tulnp
查看 Nginx 状态:
sudo systemctl status nginx
重启 Nginx:
sudo systemctl restart nginx
重载 Nginx:
sudo systemctl reload nginx
查看 PHP-FPM 状态:
sudo systemctl status php8.2-fpm
重启 PHP-FPM:
sudo systemctl restart php8.2-fpm
查看数据库状态:
sudo systemctl status mariadb
重启数据库:
sudo systemctl restart mariadb
查看最近登录记录:
last
查看失败登录:
sudo lastb
查看当前登录用户:
who
二十五、Debian 服务器安全加固建议
1. 使用强密码和密钥登录
服务器密码、数据库密码、后台密码都应该足够复杂。SSH 尽量使用密钥登录,并禁用密码登录。
2. 不要随意开放端口
开放端口越多,攻击面越大。只开放必要端口,例如:
- SSH 自定义端口
- 80
- 443
数据库、Redis、面板端口尽量不要直接暴露公网。
3. 定期更新系统和程序
系统要更新,网站程序也要更新。尤其是 WordPress、插件、主题等,经常是攻击目标。
4. 做好备份
至少保留最近 7 天备份,并定期将备份存储到远程位置。备份不仅要能生成,还要定期测试能否恢复。
5. 限制上传目录执行权限
对于 PHP 网站,上传目录如果允许执行 PHP 文件,会有较大风险。可以在 Nginx 中限制 uploads 目录执行 PHP。
例如 WordPress:
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
6. 隐藏敏感文件
禁止访问 .env、.git、备份文件等:
location ~ /\.(?!well-known).* {
deny all;
}
location ~* \.(sql|bak|old|zip|tar|gz)$ {
deny all;
}
7. 使用 HTTPS
HTTPS 不只是加密传输,也有利于浏览器信任和 SEO。现在主流浏览器对 HTTP 网站越来越不友好。
8. 监控资源与日志
定期查看 CPU、内存、磁盘、访问日志、错误日志。如果磁盘满了,数据库和网站都可能异常。
二十六、是否需要安装宝塔等服务器面板?
很多站长喜欢使用宝塔面板、1Panel、aaPanel 等工具管理服务器。面板的优点是操作简单,适合不熟悉命令行的新手;缺点是会增加额外服务和安全风险。
如果你只是部署一个简单网站,使用面板可以提高效率。但如果你希望更好地理解服务器运行机制,建议至少掌握本文中的命令行部署方式。
对于生产环境,使用面板时要注意:
- 面板端口不要使用默认端口
- 设置强密码
- 开启二次验证
- 限制面板访问 IP
- 定期更新面板版本
- 不要安装来源不明的插件
二十七、部署完成后的检查清单
服务器部署完成后,建议按照以下清单检查:
- [ ] Debian 系统已更新
- [ ] 时区设置正确
- [ ] 已创建普通 sudo 用户
- [ ] SSH 已修改默认端口
- [ ] 已禁止 root 远程登录
- [ ] 已启用 UFW 防火墙
- [ ] 仅开放必要端口
- [ ] Nginx 正常运行
- [ ] PHP-FPM 正常运行
- [ ] MariaDB 正常运行
- [ ] 域名已解析到服务器
- [ ] HTTPS 证书已申请
- [ ] Certbot 自动续期正常
- [ ] 网站目录权限正确
- [ ] 已删除 phpinfo 测试文件
- [ ] 已安装 Fail2ban
- [ ] 已配置备份脚本
- [ ] 已测试备份恢复流程
- [ ] 已记录服务器登录信息和维护文档
二十八、总结
Debian 是非常适合站长使用的服务器系统。它稳定、轻量、安全、资料丰富,能够满足从个人博客到中小型网站的绝大多数部署需求。对于新手站长而言,掌握 Debian 的基础部署流程,不仅可以降低对面板和第三方工具的依赖,也能在网站出现问题时更快定位故障。
本文介绍了从服务器初始化到 Web 环境部署的完整流程,包括系统更新、用户管理、SSH 安全、防火墙、Nginx、PHP、MariaDB、SSL 证书、WordPress 示例、备份与安全加固等内容。按照这些步骤操作后,你就可以在 Debian 上搭建一套较为完整、稳定、安全的网站运行环境。
最后提醒一句:服务器部署不是一次性工作,而是持续维护过程。站长应定期更新系统、检查日志、备份数据、优化配置,并关注网站程序的安全公告。只有把安全和维护放在日常运营中,网站才能长期稳定运行。