laravel项目在centos上如何实现自动化部署

在CentOS上实现Laravel项目的自动化部署可以通过多种方式来完成,以下是一个基本的步骤指南,使用了Git进行版本控制,并结合Shell脚本来实现自动化部署。

前提条件

  1. CentOS服务器:确保你有一台运行CentOS的服务器。
  2. Web服务器:如Nginx或Apache。
  3. PHP环境:确保服务器上安装了PHP及其必要的扩展。
  4. 数据库:如MySQL或PostgreSQL。
  5. Git:用于版本控制。

步骤指南

1. 安装必要的软件

首先,确保你的CentOS服务器上安装了以下软件:

sudo yum update -y
sudo yum install -y git nginx php-fpm mysql-server

2. 配置Nginx

配置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

3. 配置PHP-FPM

编辑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

4. 配置数据库

创建数据库并设置权限:

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;

5. 克隆项目到服务器

在你的服务器上克隆你的Laravel项目:

cd /var/www
git clone https://github.com/your_username/laravel_project.git

6. 设置环境变量

在项目根目录下创建一个.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}"

7. 安装依赖

安装Composer并安装项目依赖:

sudo yum install -y composer
cd /var/www/laravel_project
composer install --no-interaction --prefer-dist

8. 运行迁移和优化

运行数据库迁移和优化命令:

php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache

9. 设置自动化部署脚本

创建一个自动化部署脚本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

10. 设置Webhook

在你的Git仓库(如GitHub)中设置Webhook,指向你的服务器上的部署脚本URL。例如:

http://your_domain.com/deploy.sh

总结

通过以上步骤,你可以在CentOS上实现Laravel项目的自动化部署。每次你推送代码到Git仓库时,Webhook会触发部署脚本,自动拉取最新代码、安装依赖、运行迁移并重启Web服务器。这样可以大大简化部署流程,提高效率。