LNMP环境下如何部署PHP应用
导读:LNMP环境下部署PHP应用的实操指南 一 准备与安装 更新系统并安装组件(以 Ubuntu/Debian 为例): 更新与基础组件:sudo apt-get update && sudo apt-get upgrade...
LNMP环境下部署PHP应用的实操指南
一 准备与安装
- 更新系统并安装组件(以 Ubuntu/Debian 为例):
- 更新与基础组件:sudo apt-get update & & sudo apt-get upgrade
- 安装 Nginx:sudo apt-get install nginx
- 安装 MySQL:sudo apt-get install mysql-server,随后执行 sudo mysql_secure_installation 完成安全初始化
- 安装 PHP 与常用扩展(示例为 PHP 7.4,请按实际替换为你的版本):sudo apt-get install php7.4-fpm php7.4-mysql php-mbstring php-xml php-zip
- 目录与权限(示例站点根目录 /var/www/your_project/public):
- 创建目录:sudo mkdir -p /var/www/your_project/public
- 设置属主:sudo chown -R www-data:www-data /var/www/your_project
- 说明:在 CentOS 系列上可使用 yum/dnf 安装相同组件(如 nginx、php-fpm、mariadb-server),路径与服务名略有差异,思路一致。
二 上传代码与数据库初始化
- 上传源码(二选一或结合使用):
- SCP:scp -r /path/to/your/php/source user@your_server_ip:/var/www/your_project
- FTP/图形化客户端(如 FileZilla)上传至站点根目录
- 数据库准备(示例):
- 登录:mysql -u root -p
- 建库与授权:
- CREATE DATABASE your_database;
- CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘your_password’;
- GRANT ALL PRIVILEGES ON your_database.* TO ‘your_user’@‘localhost’;
- FLUSH PRIVILEGES;
- 导入结构/数据:mysql -u your_user -p your_database < /path/to/your/sqlfile.sql
- 安全建议:.env 等敏感配置不要提交到代码仓库,上线前在服务器本地配置,权限设为仅属主可读。
三 Nginx与PHP-FPM配置
- 站点配置(Ubuntu/Debian 常用 sites-available/sites-enabled 机制):
- 新建:sudo nano /etc/nginx/sites-available/your_domain
- 示例配置(按需调整 root、server_name、fastcgi_pass 的 socket 路径与 PHP 版本):
server { listen 80; server_name your_domain; root /var/www/your_project/public; 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/php7.4-fpm.sock; # 按实际版本与路径修改 } location ~ /\.ht { deny all; } } - 启用站点:sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
- PHP-FPM 关键项(以 PHP 7.4 为例):
- 编辑池配置:sudo nano /etc/php/7.4/fpm/pool.d/www.conf
- 确认监听:listen = /var/run/php/php7.4-fpm.sock(与 Nginx 配置保持一致)
- 安全与性能:cgi.fix_pathinfo=0;根据应用需要调 memory_limit、max_execution_time 等
- 校验与生效:
- 语法检查:sudo nginx -t
- 重启服务:sudo systemctl reload nginx & & sudo systemctl restart php7.4-fpm
- CentOS 差异提示:
- 常用配置路径为 /etc/nginx/conf.d/default.conf
- PHP-FPM 监听可能为 unix:/run/php-fpm/www.sock 或 127.0.0.1:9000,需与 Nginx 的 fastcgi_pass 一致
- 示例 location ~ .php$ 需显式设置 SCRIPT_FILENAME $document_root$fastcgi_script_name。
四 多环境与PHP版本切换
- 多环境部署(开发/测试/生产):
- 为各环境分别创建站点配置:/etc/nginx/sites-available/dev.conf、test.conf、prod.conf
- 使用独立目录与域名/端口,便于灰度与回滚
- 通过 .env 管理环境差异(如 APP_ENV、数据库连接),Nginx 中可用 env 指令引入环境变量(注意作用域)
- PHP 版本切换(同一服务器多版本共存):
- 安装多版本与对应 FPM:sudo apt-get install php7.2 php7.4 php7.2-fpm php7.4-fpm
- 方式一(全局切换):在 Nginx 的 fastcgi_pass 中把 socket 改为目标版本(如 /run/php/php7.2-fpm.sock),然后 sudo nginx -t & & sudo systemctl reload nginx
- 方式二(按站点/按路径分流):为不同 location 指定不同 socket,实现同机多版本并行
- 验证:部署 phpinfo() 页面查看版本,确认切换生效。
五 验证与常见问题处理
- 健康检查与日志定位:
- 访问应用首页与健康检查接口;排查白屏/500 错误时依次检查:
- Nginx 错误日志:/var/log/nginx/error.log
- PHP-FPM 日志:/var/log/php7.4-fpm.log(路径随版本/系统而异)
- MySQL 错误日志:/var/log/mysql/error.log
- 访问应用首页与健康检查接口;排查白屏/500 错误时依次检查:
- 常见问题速解:
- 404:确认 root 指向应用入口目录(如 public),以及 try_files 规则是否覆盖前端控制器
- 502/504:核对 Nginx 与 PHP-FPM 的 socket 路径一致、FPM 进程运行正常、监听权限正确
- 权限问题:站点目录属主建议 www-data:www-data,文件 644、目录 755 起步,避免过度 777
- 数据库连接失败:核对 .env 或配置中的 DB_HOST/DB_USER/DB_PASS/DB_NAME,确认数据库与用户权限无误
- 安全与优化建议:
- 上线后删除 info.php;为域名配置 HTTPS/Let’s Encrypt 证书;按需开启 Nginx 与 PHP 的压缩、缓存与超时调优。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: LNMP环境下如何部署PHP应用
本文地址: https://pptw.com/jishu/772763.html
