首页主机资讯Laravel如何在Linux上进行代码部署

Laravel如何在Linux上进行代码部署

时间2025-12-05 00:00:03发布访客分类主机资讯浏览560
导读:Linux上部署 Laravel 的实用步骤 一 环境准备 更新系统并安装运行时与工具:PHP(建议 PHP 7.4+ 或满足项目要求)、Composer、Nginx/Apache、数据库(如 MySQL/PostgreSQL)、以及 G...

Linux上部署 Laravel 的实用步骤

一 环境准备

  • 更新系统并安装运行时与工具:PHP(建议 PHP 7.4+ 或满足项目要求)、ComposerNginx/Apache、数据库(如 MySQL/PostgreSQL)、以及 Git。示例(Ubuntu/Debian):
    • sudo apt update & & sudo apt install -y php php-cli php-fpm php-mysql php-curl php-mbstring php-xml php-zip php-gd php-bcmath
    • curl -sS https://getcomposer.org/installer | php & & sudo mv composer.phar /usr/local/bin/composer
    • sudo apt install -y nginx mysql-server
  • 确认 PHP 版本与扩展:php -v;php -m | grep -E ‘pdo_mysql|mbstring|xml|zip|gd|bcmath|curl|tokenizer’。以上满足 Laravel 运行与优化所需的基础环境。

二 获取代码与安装依赖

  • 将代码放置到服务器目录(如 /var/www/yourapp),可通过 Git 克隆或 SCP/FTP 上传:
    • cd /var/www & & git clone https://github.com/yourname/yourapp.git
  • 安装 Composer 依赖(生产环境去除 dev 依赖并优化自动加载):
    • cd /var/www/yourapp & & composer install --optimize-autoloader --no-dev
  • 配置 .env:复制示例并编辑数据库连接与应用 URL:
    • cp .env.example .env
    • 编辑 .env:DB_CONNECTION=mysql;DB_HOST=127.0.0.1;DB_PORT=3306;DB_DATABASE=yourdb;DB_USERNAME=youruser;DB_PASSWORD=yourpass;APP_URL=https://yourdomain.com
  • 生成应用密钥并初始化存储链接:
    • php artisan key:generate
    • php artisan storage:link
  • 运行数据库迁移(生产环境加 --force):
    • php artisan migrate --force
  • 可选优化(提升性能,注意本地开发不要缓存配置):
    • php artisan config:cache
    • php artisan route:cache
    • php artisan view:cache

三 Web 服务器配置

  • Nginx 示例(将站点根目录指向 public,启用路由重写与安全头):
    • server { listen 80; server_name yourdomain.com; root /var/www/yourapp/public; index index.php index.html; charset utf-8;

      add_header X-Frame-Options “SAMEORIGIN”; add_header X-XSS-Protection “1; mode=block”; add_header X-Content-Type-Options “nosniff”;

      location / { try_files $uri $uri/ /index.php?$query_string; }

      location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; }

      error_page 404 /index.php;

      location ~ .php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 按实际 PHP 版本调整 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; }

      location ~ /.(?!well-known).* { deny all; } }

    • 启用站点并重启:sudo ln -s /etc/nginx/sites-available/yourdomain /etc/nginx/sites-enabled/ & & sudo nginx -t & & sudo systemctl restart nginx

  • Apache 要点:启用 mod_rewrite,虚拟主机 DocumentRoot 指向 /var/www/yourapp/public, 中 AllowOverride All。

四 文件权限与目录所有权

  • 设置 storagebootstrap/cache 可被 Web 服务写入(以 www-data 为例):
    • sudo chown -R www-data:www-data /var/www/yourapp/storage
    • sudo chown -R www-data:www-data /var/www/yourapp/bootstrap/cache
    • sudo chmod -R 775 /var/www/yourapp/storage
    • sudo chmod -R 775 /var/www/yourapp/bootstrap/cache
  • 确保运行用户与目录所属一致,避免因权限导致日志、缓存、会话写入失败。

五 队列与自动化部署

  • 队列与异步任务:
    • 配置 .env:QUEUE_CONNECTION=redis(或 database/sync)
    • 启动队列:php artisan queue:work --queue=default --tries=3 --sleep=3
    • 生产建议使用 Supervisor 守护进程,示例配置片段(/etc/supervisor/conf.d/laravel-worker.conf):
      • [program:laravel-worker]
        • process_name=%(program_name)s_%(process_num)02d
        • command=php /var/www/yourapp/artisan queue:work --queue=default --tries=3 --sleep=3
        • autostart=true
        • autorestart=true
        • user=www-data
        • numprocs=2
        • redirect_stderr=true
        • stdout_logfile=/var/log/laravel-worker.log
    • 执行:sudo supervisorctl reread & & sudo supervisorctl update & & sudo supervisorctl start laravel-worker:*
  • 自动化部署脚本示例(deploy.sh,配合 Git over SSH):
    • REPO_URL=“git@github.com:yourname/yourapp.git”
    • DEPLOY_DIR=“/var/www/yourapp”
    • BRANCH=“main”
    • cd $DEPLOY_DIR
    • git pull origin $BRANCH
    • composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev
    • php artisan migrate --force
    • php artisan config:clear & & php artisan cache:clear & & php artisan view:clear
    • sudo systemctl reload php7.4-fpm & & sudo systemctl reload nginx
    • chmod +x deploy.sh
  • 可选 CI/CD:使用 GitHub Actions/GitLab CI/Jenkins,在推送 main 分支时执行拉取、安装依赖、迁移与重启服务,实现零人工上线。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Laravel如何在Linux上进行代码部署
本文地址: https://pptw.com/jishu/764112.html
Linux下Laravel如何优化数据库查询 Linux环境下Laravel如何配置缓存

游客 回复需填写必要信息