在CentOS上實現Laravel項目的自動化部署可以通過多種方式來完成,以下是一個基本的步驟指南,使用了Git進行版本控制,并結合Shell腳本來實現自動化部署。
首先,確保你的CentOS服務器上安裝了以下軟件:
sudo yum update -y
sudo yum install -y git nginx php-fpm mysql-server
配置Nginx以指向你的Laravel項目目錄。假設你的項目目錄是/var/www/laravel_project
。
sudo nano /etc/nginx/conf.d/laravel.conf
添加以下內容:
server {
listen 80;
server_name your_domain.com;
root /var/www/laravel_project;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
}
重啟Nginx:
sudo systemctl restart nginx
編輯PHP-FPM配置文件:
sudo nano /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
創建數據庫并設置權限:
CREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
在你的服務器上克隆你的Laravel項目:
cd /var/www
git clone https://github.com/your_username/laravel_project.git
在項目根目錄下創建一個.env
文件,并設置必要的環境變量:
cd /var/www/laravel_project
cp .env.example .env
nano .env
設置以下變量:
APP_NAME=Laravel
APP_ENV=production
APP_KEY=your_app_key
APP_DEBUG=false
APP_URL=http://your_domain.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=your_password
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
安裝Composer并安裝項目依賴:
sudo yum install -y composer
cd /var/www/laravel_project
composer install --no-interaction --prefer-dist
運行數據庫遷移和優化命令:
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
創建一個自動化部署腳本deploy.sh
:
nano deploy.sh
添加以下內容:
#!/bin/bash
# Clone the latest version of the project
cd /var/www
git pull origin main
# Install dependencies
cd laravel_project
composer install --no-interaction --prefer-dist
# Run migrations and optimize
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
# Restart Nginx and PHP-FPM
sudo systemctl restart nginx
sudo systemctl restart php-fpm
echo "Deployment completed successfully!"
賦予腳本執行權限:
chmod +x deploy.sh
在你的Git倉庫(如GitHub)中設置Webhook,指向你的服務器上的部署腳本URL。例如:
http://your_domain.com/deploy.sh
通過以上步驟,你可以在CentOS上實現Laravel項目的自動化部署。每次你推送代碼到Git倉庫時,Webhook會觸發部署腳本,自動拉取最新代碼、安裝依賴、運行遷移并重啟Web服務器。這樣可以大大簡化部署流程,提高效率。