温馨提示×

如何在centos上部署lnmp项目

小樊
39
2026-01-08 04:33:53
栏目: 智能运维

在 CentOS 7 上部署 LNMP 的完整步骤

一 环境准备与防火墙

  • 更新系统并安装常用工具
    • 执行:yum update -y && yum install -y epel-release wget curl
  • 防火墙放行 HTTP/HTTPS
    • 执行:firewall-cmd --permanent --add-service=http --add-service=https && firewall-cmd --reload
  • SELinux(可选,生产不建议直接关闭)
    • 临时:setenforce 0
    • 永久:sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config 说明:CentOS 7 默认使用 firewalld;放行 80/443 端口可确保外网访问 Nginx。

二 安装与启动 Nginx

  • 添加 Nginx 官方源并安装
    • 执行:rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    • 执行:yum install -y nginx && systemctl start nginx && systemctl enable nginx
  • 验证
    • 执行:curl -I http://127.0.0.1 应返回 200/301 等成功状态码 说明:通过官方 YUM 源安装更易维护;启动后默认根目录通常为 /usr/share/nginx/html

三 安装与初始化数据库(MySQL 或 MariaDB)

  • 方案 A MariaDB(CentOS 7 默认)
    • 执行:yum install -y mariadb-server mariadb
    • 执行:systemctl start mariadb && systemctl enable mariadb
    • 执行:mysql_secure_installation(设置 root 密码、删除匿名用户、禁止 root 远程登录、删除测试库)
  • 方案 B MySQL 官方版(如需要 InnoDB 全文索引、JSON 增强等特性)
    • 执行:wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    • 执行:rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
    • 执行:yum install -y mysql-community-server
    • 执行:systemctl start mysqld && systemctl enable mysqld
    • 获取临时密码:grep 'temporary password' /var/log/mysqld.log
    • 执行:mysql_secure_installation 按提示修改密码并加固 说明:MariaDB 与 MySQL 命令兼容度高;MySQL 官方仓库安装后需使用临时密码完成初始化。

四 安装与配置 PHP 及与 Nginx 联动

  • 安装 PHP 与常用扩展(含与 MySQL 联动的驱动)
    • 执行:yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-bcmath
    • 执行:systemctl start php-fpm && systemctl enable php-fpm
  • 方式一 TCP 方式与 Nginx 联动(通用)
    • 编辑 PHP-FPM 池配置:/etc/php-fpm.d/www.conf
      • 设置:listen = 127.0.0.1:9000
    • 编辑 Nginx 站点配置(示例:/etc/nginx/conf.d/default.conf/etc/nginx/nginx.conf 的 server 块)
      • 核心片段:
        index index.php index.html;
        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 方式(性能更佳)
    • 编辑 PHP-FPM:listen = /var/run/php-fpm/php-fpm.sock
    • 确保 Nginx 与 PHP-FPM 运行用户一致(常见为 nginx:nginxwww:www),并在 Nginx 中使用:
      • fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
  • 检查并重载
    • 执行:nginx -t && systemctl reload nginx && systemctl reload php-fpm 说明:PHP-FPM 负责解析 PHP,Nginx 通过 FastCGI 转发动态请求;两种通信方式任选其一,保持两端配置一致即可。

五 部署项目与验证

  • 放置代码与设置权限
    • 建议目录:/var/www/your_project(示例将代码放到 /var/www/html
    • 执行:chown -R nginx:nginx /var/www && chmod -R 755 /var/www
  • 创建测试文件
    • 执行:echo "<?php phpinfo(); ?>" > /var/www/html/info.php
    • 访问:http://服务器IP/info.php 应看到 PHP 信息页
  • 数据库连通性测试(示例)
    • 创建测试脚本:/var/www/html/test_db.php
      <?php
      $link = mysqli_connect('localhost','root','【你的数据库root密码】','【】');
      if (!$link) die('FAILD: '.mysqli_connect_error());
      echo 'OK! Connected to MySQL.';
      mysqli_close($link);
      ?>
      
    • 访问:http://服务器IP/test_db.php 显示连接成功
  • 部署你的应用
    • 将项目代码放入站点根目录(如 /var/www/html 或虚拟主机目录)
    • 配置 Nginx server_name、root、rewrite、gzip、静态资源缓存等
    • 导入项目数据库(如 mysql -u root -p 数据库名 < dump.sql
    • 设置文件权限与所有者,确保上传目录可写(如 chown -R nginx:nginx /var/www/your_project/uploads) 说明:完成 PHP 与数据库连接测试后,即可按应用需求配置虚拟主机与目录权限并上线。

0