php框架在ubuntu上怎么部署
导读:在 Ubuntu 上部署 PHP 框架的标准流程 以下步骤适用于 Laravel、ThinkPHP、Symfony 等主流框架,涵盖环境准备、Web 服务器配置、权限与数据库初始化,以及常见故障排查。 一、准备环境 更新系统并安装基础组件...
在 Ubuntu 上部署 PHP 框架的标准流程
以下步骤适用于 Laravel、ThinkPHP、Symfony 等主流框架,涵盖环境准备、Web 服务器配置、权限与数据库初始化,以及常见故障排查。
一、准备环境
- 更新系统并安装基础组件(以 Nginx + PHP-FPM + MySQL 为例):
- 安装:sudo apt update & & sudo apt install nginx php-fpm php-mysql unzip composer -y
- 验证:php -v、composer -v、sudo systemctl status nginx
- 选择与你项目匹配的 PHP 版本(如 7.4/8.0/8.1/8.2/8.3),并安装常用扩展(示例):
- sudo apt install php-curl php-json php-zip php-gd php-mbstring php-xml php-bcmath php-pear
- 启动并开机自启 PHP-FPM 与 Nginx:
- sudo systemctl enable --now php8.1-fpm nginx(请将 8.1 替换为你的实际版本)
- 如需数据库,安装并加固 MySQL(创建应用专用库与用户,避免使用 root)。
二、部署通用步骤
- 上传或拉取代码到站点目录(如 /var/www/yourproject),确保入口为框架的 public/index.php。
- 安装依赖:
- cd /var/www/yourproject & & composer install --optimize-autoloader --no-dev
- 配置环境:
- 复制 .env.example 为 .env,设置 APP_ENV=production、APP_DEBUG=false、数据库连接等敏感信息。
- 生成应用密钥(Laravel):php artisan key:generate
- 数据库初始化(示例):
- 创建库与用户(MySQL):
- CREATE DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- GRANT ALL ON yourdb.* TO ‘appuser’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
- FLUSH PRIVILEGES;
- 迁移/建表:Laravel 执行 php artisan migrate --force;ThinkPHP 可执行 php think migrate:run(按项目实际命令)
- 创建库与用户(MySQL):
- 设置文件权限(示例):
- sudo chown -R www-data:www-data /var/www/yourproject
- sudo find /var/www/yourproject -type f -exec chmod 644 { } ;
- sudo find /var/www/yourproject -type d -exec chmod 755 { } ;
- 可写目录(Laravel 常见):storage、bootstrap/cache
- sudo chgrp -R www-data storage bootstrap/cache
- sudo chmod -R ug+rwx storage bootstrap/cache
- Web 服务器配置要点:
- Nginx 将根目录指向 public,并启用 try_files $uri $uri/ /index.php?$query_string;
- PHP-FPM 通过 Unix socket(如 /run/php/php8.1-fpm.sock)或 127.0.0.1:9000 与 Nginx 通信。
三、Nginx 与 PHP-FPM 配置示例
- Nginx 服务器块(将 yourdomain.com 与 /var/www/yourproject/public 替换为你的域名与路径;将 php8.1-fpm.sock 替换为你的 PHP 版本):
server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourproject/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-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/yourdomain.com /etc/nginx/sites-enabled/
- sudo nginx -t & & sudo systemctl reload nginx
- PHP-FPM 监听(示例路径,按实际版本调整):
- 编辑:/etc/php/8.1/fpm/pool.d/www.conf
- 确认:listen = /run/php/php8.1-fpm.sock
- 重启:sudo systemctl restart php8.1-fpm。
四、框架差异要点
- Laravel
- 入口在 public/index.php;生产环境设置 APP_ENV=production、APP_DEBUG=false
- 常用命令:php artisan key:generate、php artisan migrate --force、按需执行 php artisan config:cache、php artisan route:cache
- 目录权限:storage、bootstrap/cache 需对 www-data 可写
- ThinkPHP 6
- 入口在 public/index.php;配置 .env 的数据库连接(如 DB_TYPE/DB_HOST/DB_NAME/DB_USER/DB_PWD)
- 可使用 Composer 创建项目:composer create-project topthink=6.0. your_project*
- 数据库迁移:php think migrate:run
- Apache 需开启 mod_rewrite 并在虚拟主机配置 AllowOverride All 指向 public
- Symfony
- 入口通常为 public/index.php;开发可用内置服务器,生产使用 Nginx/PHP-FPM
- 检查环境:php bin/console check:requirements
- 常见扩展:intl、pdo_mysql;设置 date.timezone
- 生产路由通常指向 app.php(避免暴露 app_dev.php)。
五、生产优化与安全建议
- 使用 HTTPS/TLS(如 Let’s Encrypt),强制 HTTP→HTTPS 跳转
- 关闭调试:APP_DEBUG=false;设置强 APP_KEY;隐藏 server 版本信息
- 缓存优化:Laravel 执行 config:cache、route:cache;启用 OPcache
- 最小权限原则:仅对 storage、bootstrap/cache 等目录赋予写权限;代码目录只读
- 专用数据库用户与最小权限;定期备份数据库与代码
- 日志与监控:开启 Laravel Log、PHP-FPM slowlog,结合 fail2ban 与防火墙策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: php框架在ubuntu上怎么部署
本文地址: https://pptw.com/jishu/758101.html
