温馨提示×

laravel项目在centos上的部署流程是什么

小樊
37
2025-11-23 18:56:10
栏目: 智能运维

适用于 CentOS 的 Laravel 部署流程

一 准备与安装基础环境

  • 更新系统并安装 EPEL 源,随后安装 NginxPHP 及常用扩展MariaDB/MySQLComposer、以及可选的 Node.js(用于前端资源构建)。
  • 建议的 PHP 扩展包含:php-fpm php-mysqlnd php-mbstring php-xml php-zip php-gd php-bcmath php-curl
  • 启动并开机自启服务:Nginx、PHP-FPM、MariaDB/MySQL
  • 示例命令(以 CentOS 7/8 的 yum/dnf 为例,具体版本可按需调整):
    • 安装软件:sudo yum install -y epel-release nginx mariadb-server composer
    • 安装 PHP 与扩展(示例):sudo yum install -y php php-fpm php-mysqlnd php-mbstring php-xml php-zip php-gd php-bcmath php-curl
    • 可选 Node.js(示例):curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash - && sudo yum install -y nodejs
    • 启动服务:sudo systemctl enable --now nginx php-fpm mariadb

二 数据库与目录准备

  • 初始化数据库并创建应用专用库与用户(生产环境请使用强密码):
    • mysql -u root -p
    • CREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    • CREATE USER ‘laravel_user’@‘localhost’ IDENTIFIED BY ‘StrongPassword!’;
    • GRANT ALL PRIVILEGES ON laravel_db.* TO ‘laravel_user’@‘localhost’;
    • FLUSH PRIVILEGES;
  • 部署代码与目录权限:
    • 建议将代码放在 /var/www/your-laravel(示例),并确保运行 Nginx/PHP-FPM 的用户(常见为 nginx)对项目目录拥有访问与写入权限。
    • 设置权限与属主(示例):sudo chown -R nginx:nginx /var/www/your-laravel;sudo chmod -R 755 /var/www/your-laravel;sudo chmod -R 775 /var/www/your-laravel/storage /var/www/your-laravel/bootstrap/cache

三 Nginx 与 PHP-FPM 配置

  • Nginx 站点配置要点(将 root 指向项目的 public 目录,启用 FastCGI 处理 PHP,隐藏敏感文件):
    • server { listen 80; server_name your_domain.com; root /var/www/your-laravel/public; index index.php; add_header X-Frame-Options “SAMEORIGIN”; add_header X-Content-Type-Options “nosniff”; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 404 /index.php; location ~ .php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /.(?!well-known).* { deny all; }
    • 重载 Nginx:sudo systemctl reload nginx
  • PHP-FPM 配置要点(确保与 Nginx 使用一致的 Unix Socket 路径与属主属组,示例为 nginx:nginx):
    • 编辑 /etc/php-fpm.d/www.conf:listen = /var/run/php-fpm/php-fpm.sock;listen.owner = nginx;listen.group = nginx
    • 重启 PHP-FPM:sudo systemctl restart php-fpm

四 部署 Laravel 应用与上线优化

  • 拉取代码并安装依赖(生产环境去除 dev 依赖):
    • cd /var/www/your-laravel
    • git clone https://github.com/your-org/your-laravel.git . 或上传解压
    • composer install --no-dev --optimize-autoloader
  • 配置 .env(复制 .env.example 为 .env 并调整关键项):
    • APP_ENV=production;APP_DEBUG=false;APP_KEY= 生成见下条
    • DB_CONNECTION=mysql;DB_HOST=127.0.0.1;DB_PORT=3306;DB_DATABASE=laravel_db;DB_USERNAME=laravel_user;DB_PASSWORD=StrongPassword!
  • 生成应用密钥并初始化数据:
    • php artisan key:generate
    • php artisan migrate --force
  • 上线优化(仅生产):
    • php artisan config:cache;php artisan route:cache;php artisan view:cache
  • 可选前端资源构建(如使用了 Laravel Mix/前端依赖):
    • npm install && npm run production

五 防火墙放行与常见问题排查

  • 防火墙放行 HTTP/HTTPS(示例):
    • 使用 firewalld:sudo firewall-cmd --permanent --add-service=http;sudo firewall-cmd --permanent --add-service=https;sudo firewall-cmd --reload
  • 常见问题快速定位:
    • 查看 Nginx 错误日志:sudo tail -f /var/log/nginx/error.log
    • 查看 PHP-FPM 错误日志:sudo tail -f /var/log/php-fpm/error.log
    • 若出现 502/504,优先核对 Nginx 与 PHP-FPM 的 socket 路径、属主属组 是否一致,以及 PHP-FPM 是否正常运行

0