首页主机资讯LNMP如何部署项目

LNMP如何部署项目

时间2025-11-26 19:20:04发布访客分类主机资讯浏览1303
导读:LNMP项目部署全流程 一 准备与环境规划 操作系统建议:CentOS 7/8 或 Alibaba Cloud Linux 3/2;云上实例需放行安全组入方向端口:22、80、443。 组件版本示例:Nginx 1.27.0、MariaD...

LNMP项目部署全流程

一 准备与环境规划

  • 操作系统建议:CentOS 7/8Alibaba Cloud Linux 3/2;云上实例需放行安全组入方向端口:22、80、443
  • 组件版本示例:Nginx 1.27.0、MariaDB 10.11、PHP 8.3.8(也可按项目需求选择 MySQL 8.0 等兼容版本)。
  • 目录与端口规划:网站根目录常用 /usr/share/nginx/html;PHP-FPM 默认监听 127.0.0.1:9000;数据库端口 3306(仅内网开放更安全)。

二 方式一 手动部署在 CentOS 7(通用可复用)

  • 安装与启动 Nginx
    • 创建源并安装:
      vi /etc/yum.repos.d/nginx.repo(写入 name/nginx、baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/、gpgcheck=0、enabled=1)
      yum install -y nginx
      systemctl start nginx & & systemctl enable nginx
    • 站点配置(/etc/nginx/conf.d/default.conf 或 /etc/nginx/nginx.conf 的 server 段):
      • 监听 80;root /usr/share/nginx/html;index index.php index.html
      • 支持 PHP:
        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;
        }
  • 安装与初始化数据库(MariaDB 或 MySQL)
    • MariaDB 示例:yum install -y mariadb-server;systemctl start mariadb & & systemctl enable mariadb;执行 mysql_secure_installation 完成安全初始化(设置 root 密码、移除匿名用户等)。
    • MySQL 8.0 示例:导入官方仓库后 yum install -y mysql-server;启动后从日志获取初始密码:grep ‘temporary password’ /var/log/mysqld.log;用 mysqladmin 或 mysql_secure_installation 修改密码并加固。
  • 安装与启动 PHP
    • 安装常用模块:yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-curl php-intl(按项目增减)。
    • 启动与自启:systemctl start php-fpm & & systemctl enable php-fpm
  • 快速自检
    • 在网站根目录创建 /usr/share/nginx/html/info.php
    • 访问 http://服务器IP/info.php,出现 PHP 信息页即表示 Nginx+PHP 联动正常(验证后建议删除该文件以降低信息泄露风险)。

三 方式二 Docker 容器化部署(便于隔离与迁移)

  • 目录与网络
    • 目录:/docker/{ nginx, html, mysql-data} (分别放配置、代码、数据)。
    • 网络:docker network create -d bridge --subnet 172.16.10.0/24 lnmp
  • 启动服务
    • MySQL:docker run --name mysql -e MYSQL_ROOT_PASSWORD=YourStrong@Pass -v /docker/mysql-data:/var/lib/mysql -p 3306:3306 --network lnmp -d mysql:5.7
    • PHP-FPM:docker run --name php -v /docker/html:/var/www/html --network lnmp -d php:7.4-fpm(或 8.2-fpm,按项目选择)
    • Nginx:docker run --name nginx -p 80:80 -v /docker/nginx:/etc/nginx -v /docker/html:/usr/share/nginx/html --network lnmp -d nginx:latest
  • 配置要点
    • Nginx 容器内 server 配置需指向 fastcgi_pass php:9000(容器名解析),root 指向挂载的代码目录;PHP 容器需安装对应 mysqli/pdo_mysql 扩展。

四 部署你的 PHP 项目

  • 代码放置与权限
    • 将项目代码放入 /usr/share/nginx/html(手动)或 /docker/html(容器);确保运行用户(如 nginx/php-fpm)对目录有读权限,可写目录(如上传、缓存、日志)单独赋权。
  • 虚拟主机与伪静态
    • 多站点建议新增 /etc/nginx/conf.d/your.domain.conf,配置 server_name、root、日志与 location;如需 rewrite/隐藏 index.php(如 Laravel、ThinkPHP),在 server 内添加 try_files 或 location ~ .php$ 规则并配合框架路由规则。
  • 数据库初始化
    • 通过 mysql 客户端或 phpMyAdmin 创建项目数据库与账号:
      CREATE DATABASE IF NOT EXISTS appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      CREATE USER ‘app’@‘172.16.10.%’ IDENTIFIED BY ‘StrongPass!’;
      GRANT ALL ON appdb.* TO ‘app’@‘172.16.10.%’; FLUSH PRIVILEGES;
  • 框架与配置
    • 复制 .env 或相应配置文件,设置 DB_HOST(容器用服务名如 mysql,手动用 127.0.0.1)、DB_PORTDB_DATABASEDB_USERNAMEDB_PASSWORD;设置 APP_URL 与缓存/会话目录可写。
  • Composer 与依赖
    • 在项目目录执行:composer install --optimize-autoloader --no-dev;如用 Laravel:php artisan config:cache & & php artisan route:cache & & php artisan view:cache(生产环境)。
  • 静态资源与缓存
    • 配置 Nginx 对 /static/、/assets/、/uploads/ 等路径设置 expires 与强缓存;OPcache 建议在 php.ini 开启以加速。

五 上线检查与运维要点

  • 访问与错误排查
    • 访问站点首页与接口;查看 /var/log/nginx/error.log/var/log/php-fpm/*.log 定位 502/404/权限等问题;502 常见于 PHP-FPM 未启动或 SCRIPT_FILENAME 路径错误。
  • 安全加固
    • 删除 phpinfo.php 等敏感文件;限制数据库端口仅内网访问;为应用配置最小权限数据库账号;Nginx 隐藏版本号;开启 SELinux/防火墙 或云安全组仅放行必要端口;定期升级组件。
  • 备份与回滚
    • 数据库:mysqldump -uroot -ppwd --single-transaction --routines --triggers appdb > backup_$(date +%F).sql
    • 代码与配置:对 /usr/share/nginx/html/etc/nginx 做定期打包备份;容器化使用卷持久化数据与配置,镜像打 tag 便于回滚。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: LNMP如何部署项目
本文地址: https://pptw.com/jishu/756990.html
LNMP如何实现自动化 如何正确使用deluser命令

游客 回复需填写必要信息