LNMP如何部署项目
导读:LNMP项目部署全流程 一 准备与环境规划 操作系统建议:CentOS 7/8 或 Alibaba Cloud Linux 3/2;云上实例需放行安全组入方向端口:22、80、443。 组件版本示例:Nginx 1.27.0、MariaD...
LNMP项目部署全流程
一 准备与环境规划
- 操作系统建议:CentOS 7/8 或 Alibaba 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;
- 通过 mysql 客户端或 phpMyAdmin 创建项目数据库与账号:
- 框架与配置
- 复制 .env 或相应配置文件,设置 DB_HOST(容器用服务名如 mysql,手动用 127.0.0.1)、DB_PORT、DB_DATABASE、DB_USERNAME、DB_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
