自动化部署
#!/bin/bash
# 自动化部署脚本
# 1. 环境变量配置
ENV="production"
APP_PATH="/var/www/app"
BACKUP_PATH="/var/www/backup"
RELEASE_PATH="/var/www/releases"
# 2. 创建备份
backup() {
echo "Creating backup..."
TIMESTAMP=$(date +%Y%m%d%H%M%S)
tar -czf "${BACKUP_PATH}/backup_${TIMESTAMP}.tar.gz" "${APP_PATH}"
}
# 3. 拉取代码
pull_code() {
echo "Pulling latest code..."
cd "${APP_PATH}"
git pull origin master
}
# 4. 安装依赖
install_dependencies() {
echo "Installing dependencies..."
cd "${APP_PATH}"
composer install --no-dev --optimize-autoloader
npm install --production
npm run build
}
# 5. 更新数据库
update_database() {
echo "Updating database..."
cd "${APP_PATH}"
php artisan migrate --force
}
# 6. 清理缓存
clear_cache() {
echo "Clearing cache..."
cd "${APP_PATH}"
php artisan config:cache
php artisan route:cache
php artisan view:cache
}
# 7. 重启服务
restart_services() {
echo "Restarting services..."
sudo systemctl restart php-fpm
sudo systemctl restart nginx
}
# 8. 主函数
main() {
backup
pull_code
install_dependencies
update_database
clear_cache
restart_services
echo "Deployment completed successfully!"
}
# 执行主函数
main