如何在Ubuntu上使用LNMP运行PHP项目
导读:在 Ubuntu 上使用 LNMP 运行 PHP 项目的实操指南 一 环境准备与组件安装 更新索引并安装组件(以 Ubuntu 20.04/22.04/24.04 为例,PHP 版本以仓库可用为准,常见为 PHP 8.1/8.2/8.3)...
在 Ubuntu 上使用 LNMP 运行 PHP 项目的实操指南
一 环境准备与组件安装
- 更新索引并安装组件(以 Ubuntu 20.04/22.04/24.04 为例,PHP 版本以仓库可用为准,常见为 PHP 8.1/8.2/8.3):
- 安装 Nginx、MySQL、PHP-FPM 与常用扩展:
- sudo apt update
- sudo apt install -y nginx mysql-server php-fpm php-mysql
- 启动并设为开机自启:
- sudo systemctl enable --now nginx mysql php-fpm
- 运行 MySQL 安全初始化:
- sudo mysql_secure_installation
- 安装 Nginx、MySQL、PHP-FPM 与常用扩展:
- 如需指定或安装更高版本 PHP(示例为 PHP 8.1):
- sudo add-apt-repository ppa:ondrej/php
- sudo apt update
- sudo apt install -y php8.1 php8.1-fpm php8.1-mysql php8.1-{ mbstring,xml,zip,gd,curl,intl,opcache}
二 配置 Nginx 与 PHP-FPM
- 创建项目站点配置(示例域名或 IP 为 your_domain_or_ip,项目路径为 /var/www/your_project/public):
- sudo nano /etc/nginx/sites-available/your_project
- 写入以下内容(注意将 phpX.X-fpm.sock 替换为实际版本,如 php8.1-fpm.sock):
server { listen 80; server_name your_domain_or_ip; 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/phpX.X-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } - 启用站点并测试配置:
- sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/
- sudo nginx -t & & sudo systemctl reload nginx
- 调整 PHP-FPM 运行用户与权限(确保与 Nginx 一致,通常为 www-data):
- 编辑:/etc/php/8.1/fpm/pool.d/www.conf
- listen.owner = www-data
- listen.group = www-data
- listen.mode = 0660
- 重启 PHP-FPM:
- sudo systemctl restart php8.1-fpm
- 编辑:/etc/php/8.1/fpm/pool.d/www.conf
- 目录与权限:
- sudo chown -R www-data:www-data /var/www/your_project
- sudo find /var/www/your_project -type f -exec chmod 644 { } ;
- sudo find /var/www/your_project -type d -exec chmod 755 { } ;
三 数据库与项目部署
- 创建数据库与用户(在 MySQL 中执行):
- CREATE DATABASE your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘StrongPassword!’;
- GRANT ALL PRIVILEGES ON your_database.* TO ‘your_user’@‘localhost’;
- FLUSH PRIVILEGES;
- EXIT;
- 导入数据(如有):
- mysql -u your_user -p your_database < your_database_dump.sql
- 部署代码与配置应用:
- 将项目代码上传至 /var/www/your_project(框架如 Laravel 应将入口置于 public/,并设置 .env 数据库连接)
- 如框架需写入目录,确保相应目录对 www-data 可写(例如 storage、cache)
四 测试与常见问题排查
- 基础连通性测试:
- 在 /var/www/html/info.php 写入:
- 访问 http://your_domain_or_ip/info.php,确认 PHP 解析正常
- 常见问题速查:
- 502 Bad Gateway:多为 PHP-FPM 未运行或 fastcgi_pass 路径不匹配;执行 systemctl status php8.1-fpm 查看,核对 socket 路径(/var/run/php/php8.1-fpm.sock 或 /run/php/php8.1-fpm.sock)
- 403 Forbidden:目录无索引文件或权限不足;检查 root 路径、index 指令与目录权限
- 404 Not Found(路由不生效):确保 Nginx 配置包含 try_files $uri $uri/ /index.php?$query_string;
- 日志定位:
- Nginx:/var/log/nginx/error.log
- PHP-FPM:/var/log/php8.1-fpm.log(或 /var/log/php-fpm.log,视版本与系统而定)
五 安全与优化建议
- 启用 HTTPS(Let’s Encrypt):
- sudo apt install -y certbot python3-certbot-nginx
- sudo certbot --nginx -d your_domain
- 防火墙放行:
- sudo ufw allow ‘Nginx Full’
- sudo ufw enable
- PHP 与性能:
- 在 php.ini 中设置:
- date.timezone = Asia/Shanghai
- opcache.enable=1
- opcache.memory_consumption=128
- opcache.interned_strings_buffer=8
- opcache.max_accelerated_files=4000
- 按需安装扩展:php-mbstring、php-xml、php-zip、php-gd、php-curl、php-intl 等
- 在 php.ini 中设置:
- 安全加固:
- 删除或限制 info.php 在生产环境访问
- 使用强数据库与系统用户密码,限制数据库远程访问
- 定期更新系统与软件包:sudo apt update & & sudo apt upgrade
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上使用LNMP运行PHP项目
本文地址: https://pptw.com/jishu/757246.html
