Laravel如何在Linux上进行代码部署
Linux上部署 Laravel 的实用步骤
一 环境准备
- 更新系统并安装运行时与工具:PHP(建议 PHP 7.4+ 或满足项目要求)、Composer、Nginx/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。
四 文件权限与目录所有权
- 设置 storage 与 bootstrap/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
- [program:laravel-worker]
- 执行: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
