核心思想:安全、稳定、高效

在开始配置之前,请牢记这三个核心目标,所有的操作都应围绕它们展开。

网站 linux 服务器配置
(图片来源网络,侵删)

第一阶段:基础系统安装与准备

这是所有工作的起点,一个干净、标准的系统是后续配置的基础。

选择服务器发行版

  • CentOS / Rocky Linux / AlmaLinux: 企业级首选,稳定、生命周期长、软件包管理为 yum/dnf,非常适合对稳定性要求极高的业务。
  • Ubuntu Server: 社区活跃、软件包丰富、软件管理为 apt,文档多、上手快,是目前最流行的选择之一。
  • Debian: 非常稳定和纯净,是 Ubuntu 的上游,适合喜欢“从源头开始”的用户。
  • 推荐: 对于新手和大多数现代应用,Ubuntu Server LTS (长期支持版) 是一个非常好的选择,对于追求极致稳定和 RHEL 生态兼容性的企业,Rocky LinuxAlmaLinux 是 CentOS 的绝佳替代品。

最小化安装

在安装操作系统时,务必选择“最小化安装”或“基本服务器”选项,这可以:

  • 减少攻击面(软件越少,漏洞越少)。
  • 降低系统资源消耗。
  • 保持系统干净整洁。

初始配置(以 Ubuntu 为例)

  • 更新系统

    sudo apt update && sudo apt upgrade -y
  • 设置主机名

    网站 linux 服务器配置
    (图片来源网络,侵删)
    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

第二阶段:安全加固

这是最重要的环节,一个不安全的服务器等于大门敞开。

网站 linux 服务器配置
(图片来源网络,侵删)

配置防火墙

使用 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: 强大的开源监控解决方案,适合构建复杂的监控告警系统。
  • 日志管理:
    • 使用 logrotate 工具自动管理日志文件,防止日志文件过大。
    • 将日志集中到 ELK Stack (Elasticsearch, Logstash, Kibana) 或 Graylog 等日志分析平台。

备份策略

这是最后的生命线!

  • 文件备份: 使用 rsyncrclone 定期将 /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 服务器的核心流程,服务器配置是一个持续的过程,需要根据你的具体应用场景、流量和业务需求进行不断调整和优化。