当前位置: 首页
编程语言
如何在Ubuntu上使用LNMP运行PHP项目

如何在Ubuntu上使用LNMP运行PHP项目

热心网友 时间:2026-04-25
转载

在 Ubuntu 上使用 LNMP 运行 PHP 项目的实操指南 一 环境准备与组件安装 万事开头先打基础。以主流的 Ubuntu 20 04 22 04 24 04 为例,系统仓库通常提供 PHP 8 1 8 2 8 3 等版本。咱们先从最核心的组件装起。 更新索引并安装组件: 安装 Nginx、

在 Ubuntu 上使用 LNMP 运行 PHP 项目的实操指南

如何在Ubuntu上使用LNMP运行PHP项目

一 环境准备与组件安装

万事开头先打基础。以主流的 Ubuntu 20.04/22.04/24.04 为例,系统仓库通常提供 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
  • 如需指定或安装更高版本 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-a vailable/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-a vailable/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
  • 目录与权限
    • 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(框架如 Lara vel 应将入口置于 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 等
  • 安全加固
    • 删除或限制 info.php 在生产环境访问
    • 使用强数据库与系统用户密码,限制数据库远程访问
    • 定期更新系统与软件包:sudo apt update && sudo apt upgrade
来源:https://www.yisu.com/ask/50277791.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
用 LlamaIndex 做 RAG 前,先把 Reader、Index、Retriever 的边界写清楚

用 LlamaIndex 做 RAG 前,先把 Reader、Index、Retriever 的边界写清楚

LlamaIndex 不适合用“5 行代码做一个 RAG demo”来判断好坏。那个 demo 只能证明框架能跑通一次,不证明你的数据进入系统后仍然可追踪,不证明检索结果能解释,不证明 Agent 的

时间:2026-07-13 14:05
Go语言AES混淆加密解密敏感数据详解

Go语言AES混淆加密解密敏感数据详解

Go语言AES加密需注意:密钥长度必须为16、24或32字节,否则会引发panic;CBC模式解密乱码常因IV或PKCS7填充错误;GCM模式中nonce不可重用,否则密钥可被恢复;ECB模式因明文块输出固定密文,存在安全风险,不建议使用。

时间:2026-07-13 06:53
C++ std::atomic::wait高性能轮询等待原子变量状态变化

C++ std::atomic::wait高性能轮询等待原子变量状态变化

C++20的std::atomic::wait是轻量级等待机制,需GCC11+ Clang12+及glibc≥2 34,macOS不支持。需与notify配对,注意内存序,循环检查防虚假唤醒。超时版本精度有限,高性能关键在notify时机与内存序正确性。

时间:2026-07-13 06:53
VSCode左侧边栏不见了?快速找回方法

VSCode左侧边栏不见了?快速找回方法

按Ctrl+B或Cmd+B可恢复被误触隐藏的侧边栏。若无效,需检查窗口焦点是否在编辑器、是否处于全屏或Zen模式、workbench activityBar visible配置项、扩展冲突以及远程环境同步问题,并逐一排查。

时间:2026-07-13 06:53
VSCode中利用Node批量修改多媒体文件元数据标签

VSCode中利用Node批量修改多媒体文件元数据标签

music-metadata库支持跨格式读写MP3、FLAC、M4A、WAV等音频元数据,需先用parseFile()初始化,再调用writeMetadata()写入。批量修改前必须验证写入支持,封面图片需为Uint8Array格式。在VSCode终端运行脚本比插件更可控,处理中文路径时需切换终端代码页为UTF-8并指定ID3v2 3版本以避免乱码。

时间:2026-07-13 06:53
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜