温馨提示×

centos lnmp服务器配置指南

小樊
35
2026-01-04 07:35:21
栏目: 云计算

CentOS LNMP 服务器配置指南

一 环境准备与版本建议

  • 操作系统建议选择 CentOS 7/8(或兼容的 RHEL 7/8),自带 firewalld 作为防火墙;如使用 CentOS 6,其 EOL 已于 2020-11-30 结束,官方源已下线,需额外处理源或优先升级系统。生产环境建议选择 Nginx + MySQL/MariaDB + PHP 7.4/8.x 的组合,以获得更好的性能与安全支持。

二 安装与配置步骤

  • 更新系统与仓库
    • 执行:sudo yum update -y && sudo yum install -y epel-release
  • 安装与启动 Nginx
    • 执行:sudo yum install -y nginx && sudo systemctl start nginx && sudo systemctl enable nginx
    • 防火墙放行:sudo firewall-cmd --permanent --zone=public --add-service=http && sudo firewall-cmd --reload
  • 安装与启动数据库(二选一)
    • MariaDB(CentOS 7 默认):sudo yum install -y mariadb-server mariadb && sudo systemctl start mariadb && sudo systemctl enable mariadb && sudo mysql_secure_installation
    • MySQL(官方 YUM 仓库):sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm && sudo yum install -y mysql-community-server && sudo systemctl start mysqld && sudo systemctl enable mysqld
      • 获取临时密码:sudo grep 'temporary password' /var/log/mysqld.log
      • 运行安全脚本:sudo mysql_secure_installation
  • 安装与启动 PHP 与 PHP-FPM
    • 执行:sudo yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-bcmath php-zip
    • 启动:sudo systemctl start php-fpm && sudo systemctl enable php-fpm
  • 配置 Nginx 与 PHP-FPM 联动(两种方式)
    • TCP 方式(监听 127.0.0.1:9000):在 /etc/nginx/conf.d/default.confserver 块中加入
      index index.php index.html index.htm;
      location ~ \.php$ {
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  index.php;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          include        fastcgi_params;
      }
      
    • Unix Socket 方式(推荐,性能更好):在 /etc/php-fpm.d/www.conf 中确保
      listen = /var/run/php-fpm/php-fpm.sock
      listen.owner = nginx
      listen.group = nginx
      listen.mode = 0660
      
      在 Nginx 中改为:
      fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
      
    • 检查并重载:sudo nginx -t && sudo systemctl reload nginx && sudo systemctl reload php-fpm
  • 验证
    • 创建探针:echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
    • 浏览器访问:http://服务器IP/info.php,看到 PHP 信息页即成功。

三 目录与权限建议

  • 网站根目录建议使用 /var/www/html(SELinux 下需匹配上下文)或 /usr/share/nginx/html;确保运行 Nginx/PHP-FPM 的用户(常见为 nginx)对目录具备读取权限。
  • 若使用 Unix Socket,确保 /var/run/php-fpm/ 目录存在且 php-fpm.sock 的属主/属组与权限配置正确(见上节)。
  • 生产环境避免使用过旧版本(如 PHP 5.x/MySQL 5.6),以减少安全风险与兼容性问题。

四 常见问题与排查

  • 80 端口被占用
    • 排查:sudo ss -tulpen | grep ':80'
    • 处理:停止占用进程或调整 Nginx 监听端口后重载服务。
  • Nginx 启动报错 “the ‘ssl’ parameter requires ngx_http_ssl_module”
    • 原因:编译 Nginx 时未包含 –with-http_ssl_module
    • 处理:重新编译 Nginx 并带上该模块,或安装包含 SSL 模块的版本。
  • 访问 info.php 出现空白或下载
    • 检查 Nginx location ~ \.php$ 配置是否正确、SCRIPT_FILENAME 是否指向实际文件路径、php-fpm 是否运行、以及 SELinux/防火墙 是否放行。
  • 数据库连接失败
    • 确认 MySQL/MariaDB 已启动、端口 3306 放行、应用使用的用户名/密码/主机正确,并考虑运行 mysql_secure_installation 后的权限设置。

0