在Linux上實現Laravel項目的自動化部署可以通過多種方式來完成,以下是一個基本的步驟指南,使用Git進行版本控制,并結合SSH和Shell腳本來實現自動化部署。
配置Nginx或Apache以指向你的Laravel項目的public目錄。
Nginx示例配置:
server {
listen 80;
server_name example.com;
root /path/to/your/laravel/project/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
在本地機器上生成SSH密鑰對,并將公鑰添加到服務器的~/.ssh/authorized_keys文件中。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
cat ~/.ssh/id_rsa.pub | ssh user@your_server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
在項目根目錄下創建一個部署腳本,例如deploy.sh。
#!/bin/bash
# 設置變量
REPO_URL="git@github.com:your_username/your_laravel_project.git"
DEPLOY_DIR="/path/to/your/laravel/project"
BRANCH="main"
# 進入項目目錄
cd $DEPLOY_DIR
# 拉取最新代碼
git pull origin $BRANCH
# 安裝依賴
composer install --no-interaction --prefer-dist --optimize-autoloader
# 運行遷移
php artisan migrate --force
# 清理緩存
php artisan config:clear
php artisan cache:clear
php artisan view:clear
# 重啟Web服務器
sudo systemctl restart nginx
echo "Deployment completed successfully!"
確保腳本有執行權限:
chmod +x deploy.sh
你可以使用Jenkins、GitLab CI、GitHub Actions等工具來自動化部署過程。
GitHub Actions示例:
在項目根目錄下創建.github/workflows/deploy.yml文件:
name: Deploy to Production
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
- name: Install dependencies
run: composer install --no-interaction --prefer-dist --optimize-autoloader
- name: Run migrations
run: php artisan migrate --force
- name: Clear cache
run: |
php artisan config:clear
php artisan cache:clear
php artisan view:clear
- name: Restart Nginx
run: sudo systemctl restart nginx
通過上述步驟,你可以在Linux上實現Laravel項目的自動化部署。你可以選擇手動運行部署腳本,或者使用CI/CD工具來自動化整個過程。根據你的需求和項目規模,選擇最適合的方法。