核心思想:安全、稳定、高效
在开始配置之前,请牢记这三个核心目标,所有的操作都应围绕它们展开。

第一阶段:基础系统安装与准备
这是所有工作的起点,一个干净、标准的系统是后续配置的基础。
选择服务器发行版
- CentOS / Rocky Linux / AlmaLinux: 企业级首选,稳定、生命周期长、软件包管理为
yum/dnf,非常适合对稳定性要求极高的业务。 - Ubuntu Server: 社区活跃、软件包丰富、软件管理为
apt,文档多、上手快,是目前最流行的选择之一。 - Debian: 非常稳定和纯净,是 Ubuntu 的上游,适合喜欢“从源头开始”的用户。
- 推荐: 对于新手和大多数现代应用,Ubuntu Server LTS (长期支持版) 是一个非常好的选择,对于追求极致稳定和 RHEL 生态兼容性的企业,Rocky Linux 或 AlmaLinux 是 CentOS 的绝佳替代品。
最小化安装
在安装操作系统时,务必选择“最小化安装”或“基本服务器”选项,这可以:
- 减少攻击面(软件越少,漏洞越少)。
- 降低系统资源消耗。
- 保持系统干净整洁。
初始配置(以 Ubuntu 为例)
-
更新系统
sudo apt update && sudo apt upgrade -y
-
设置主机名
(图片来源网络,侵删)sudo hostnamectl set-hostname your-server-hostname
-
配置网络 确保服务器有静态 IP 地址,而不是通过 DHCP 动态获取,这可以通过编辑 Netplan 配置文件实现。
-
创建新用户(避免直接使用 root)
# 创建一个新用户 sudo adduser your_username # 赋予该用户 sudo 权限 sudo usermod -aG sudo your_username
-
配置 SSH(远程登录)
- 禁止 root 直接登录: 编辑
/etc/ssh/sshd_config文件,找到PermitRootLogin,将其值设为no。 - 使用密钥登录: 强烈推荐使用 SSH 密钥对进行登录,而不是密码。
- 在你的本地电脑上生成密钥:
ssh-keygen -t ed25519 - 将公钥复制到服务器:
ssh-copy-id your_username@your_server_ip
- 在你的本地电脑上生成密钥:
- 修改 SSH 端口: 默认 22 端口是扫描重灾区,可以修改为一个不常用的端口(如 2222)。
- 重启 SSH 服务:
sudo systemctl restart sshd
- 禁止 root 直接登录: 编辑
第二阶段:安全加固
这是最重要的环节,一个不安全的服务器等于大门敞开。

配置防火墙
使用 ufw (Uncomplicated Firewall) 是 Ubuntu/Debian 下的首选。
# 允许 SSH 连接(确保先放行,否则可能把自己锁在外面) sudo ufw allow OpenSSH # 允许网站服务端口 (HTTP, HTTPS) sudo ufw allow 80/tcp sudo ufw allow 443/tcp # 如果你的网站用到了其他端口,如数据库端口 3306 (MySQL), 5432 (PostgreSQL),按需开放 # sudo ufw allow 3306/tcp # 启用防火墙 sudo ufw enable
使用 Fail2ban 防止暴力破解
Fail2ban 可以监控日志文件(如 SSH 登录日志),并在检测到多次失败尝试后,自动用防火墙封禁恶意 IP。
sudo apt install fail2ban -y
配置文件位于 /etc/fail2ban/jail.local,你需要根据你的需求(如 SSH、网站登录)配置 [sshd] 等部分的规则。
定期系统更新
设置自动更新,确保安全补丁及时安装。
# 安装自动更新工具 sudo apt install unattended-upgrades -y # 编辑配置文件,启用自动更新 sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
在配置文件中,确保 Unattended-Upgrade::Automatic-Reboot "true"; 被取消注释,以便在需要时自动重启。
禁用不必要的账户和服务
- 检查
/etc/passwd和/etc/shadow,禁用或删除不需要的系统账户。 - 使用
systemctl list-units --type=service --state=running查看所有运行中的服务,关闭不需要的服务。
第三阶段:安装 Web 服务器与数据库
这是网站的“地基”。
安装 Web 服务器
Nginx (推荐) vs Apache
- Nginx: 异步、事件驱动的模型,在高并发静态文件处理和反向代理方面性能优异,内存占用低,是目前的主流选择。
- Apache: 模块化设计,功能强大,兼容性好,历史悠久。
安装 Nginx
sudo apt install nginx -y
安装后,Nginx 默认会启动,你可以通过访问 http://your_server_ip 来测试是否成功。
安装数据库
MySQL/MariaDB vs PostgreSQL
- MySQL/MariaDB: 全球最流行的关系型数据库,生态成熟,资料丰富,MariaDB 是 MySQL 的一个分支,完全兼容。
- PostgreSQL: 功能更强大,更符合 SQL 标准,数据一致性和完整性更好,在复杂查询和数据分析方面有优势。
安装 MariaDB (MySQL 的替代品)
sudo apt install mariadb-server -y
安全初始化数据库 运行安全脚本,它会引导你设置 root 密码、移除匿名用户、禁止远程 root 登录等。
sudo mysql_secure_installation
请务必按照提示操作,这是数据库安全的关键一步!
安装 PHP (如果你的网站是 PHP 的)
sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl php-zip -y
这里安装了 PHP-FPM (FastCGI Process Manager),它通常与 Nginx 搭配使用,根据你的网站需求,可能需要安装不同的 PHP 扩展。
第四阶段:部署网站与应用
将你的网站文件和数据库配置好。
网站根目录
网站文件存放在 /var/www/ 目录下,为你的网站创建一个目录。
sudo mkdir -p /var/www/your-website.com
设置权限
将网站目录的所有权授予你的普通用户,而不是 root。
# 将 your_username 替换为你的用户名 sudo chown -R your_username:your_username /var/www/your-website.com # 设置正确的文件和目录权限 sudo chmod -R 755 /var/www/your-website.com
配置 Nginx 虚拟主机
为你的网站创建一个 Nginx 配置文件。
sudo nano /etc/nginx/sites-available/your-website.com
填入以下基本配置(请根据实际情况修改):
server {
listen 80;
server_name your-website.com www.your-website.com;
root /var/www/your-website.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 注意:php版本号可能不同,用 php-fpm7.4 或 php8.1 等
}
location ~ /\.ht {
deny all;
}
}
启用这个配置文件:
sudo ln -s /etc/nginx/sites-available/your-website.com /etc/nginx/sites-enabled/ # 删除默认配置(可选) sudo rm /etc/nginx/sites-enabled/default
测试并重载 Nginx 配置:
sudo nginx -t sudo systemctl reload nginx
配置数据库
# 登录 MariaDB sudo mysql -u root -p # 在 MariaDB shell 中执行以下命令 CREATE DATABASE your_database_name; CREATE USER 'your_db_user'@'localhost' IDENTIFIED BY 'a_very_strong_password'; GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_db_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
然后将你的网站数据库导入 your_database_name。
第五阶段:性能优化与监控
网站上线后,持续的性能优化和监控是必不可少的。
安装缓存 (非常重要)
- OPcache: PHP 自带的字节码缓存,能极大提升 PHP 执行速度,确保
php-fpm安装时已包含opcache,并在php.ini中启用。 - Redis / Memcached: 内存型数据库,用于缓存数据库查询结果、页面片段等,能极大减轻数据库压力。
sudo apt install redis-server php-redis -y # 安装后重启 php-fpm 和 nginx sudo systemctl restart php8.2-fpm nginx
配置 SSL 证书 (HTTPS)
使用 Let's Encrypt 免费证书。
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your-website.com -d www.your-website.com
Certbot 会自动获取证书并修改你的 Nginx 配置以启用 HTTPS。
监控与日志
- 监控工具:
- Netdata: 实时性能监控,提供漂亮的仪表盘。
sudo apt install netdata。 - Prometheus + Grafana: 强大的开源监控解决方案,适合构建复杂的监控告警系统。
- Netdata: 实时性能监控,提供漂亮的仪表盘。
- 日志管理:
- 使用
logrotate工具自动管理日志文件,防止日志文件过大。 - 将日志集中到 ELK Stack (Elasticsearch, Logstash, Kibana) 或 Graylog 等日志分析平台。
- 使用
备份策略
这是最后的生命线!
- 文件备份: 使用
rsync或rclone定期将/var/www目录备份到远程存储(如另一台服务器、云存储 S3)。 - 数据库备份: 使用
mysqldump定期备份数据库,并加密存储。 - 自动化: 编写一个 Shell 脚本,结合
cron任务,实现定时自动备份。
一份生产环境服务器配置清单
| 阶段 | 任务 | 关键点 |
|---|---|---|
| 基础 | 最小化安装系统 | 选择合适的发行版 (Ubuntu/Rocky) |
| 配置主机名、网络、时区 | ||
创建新用户并授权 sudo |
禁用 root 直接登录 | |
| 配置 SSH | 使用密钥登录,修改默认端口 | |
| 安全 | 配置防火墙 (ufw) |
只开放必要端口 (22, 80, 443) |
安装并配置 fail2ban |
防暴力破解 | |
| 配置自动系统更新 | 保持系统最新 | |
| 禁用不必要的服务和账户 | ||
| 核心服务 | 安装 Nginx (推荐) 或 Apache | Nginx 更适合高并发和反向代理 |
| 安装 MariaDB (MySQL) 或 PostgreSQL | 运行 mysql_secure_installation |
|
| 安装 PHP-FPM (如需要) | 安装所需扩展 | |
| 部署 | 配置网站根目录 | 设置正确的用户和文件权限 (755) |
| 配置 Nginx 虚拟主机 | 测试配置语法 (nginx -t) |
|
| 创建数据库和用户 | 授予最小必要权限 | |
| 优化 | 配置 OPcache | 提升 PHP 性能 |
| 配置 Redis/Memcached | 缓存数据库和页面 | |
| 配置 Let's Encrypt SSL | 强制 HTTPS | |
| 运维 | 安装监控工具 (Netdata) | 实时了解服务器状态 |
配置日志轮转 (logrotate) |
防止日志撑爆磁盘 | |
| 制定并执行备份计划 | 这是最重要的! |
这份指南涵盖了从零开始配置一个生产级 Linux Web 服务器的核心流程,服务器配置是一个持续的过程,需要根据你的具体应用场景、流量和业务需求进行不断调整和优化。
