在CentOS上实现Laravel的自动化部署可以通过多种方式完成,以下是使用Docker和GitLab CI/CD的示例流程:
安装Docker及相关工具:
sudo yum install -y epel-release
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
创建Dockerfile:
在你的Laravel项目根目录下创建一个Dockerfile
,内容如下:
FROM php:7.4-fpm
# 安装依赖
RUN yum install -y git zip unzip
# 安装Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 设置工作目录
WORKDIR /var/www/html
# 复制项目文件
COPY . /var/www/html
# 安装项目依赖
RUN composer install --optimize-autoloader --no-dev
# 配置文件权限
RUN chown -R www-data:www-data /var/www/html
RUN chmod -R 755 /var/www/html/storage
RUN chmod -R 755 /var/www/html/bootstrap/cache
创建docker-compose.yml:
version: '3'
services:
web:
build: .
volumes:
- .:/var/www/html
ports:
- "8000:8000"
depends_on:
- db
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: laravel
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
db_data:
初始化Docker Compose:
docker-compose up -d
配置Nginx(可选): 如果你想使用Nginx作为Web服务器,可以按照以下步骤进行配置:
server {
listen 80;
server_name your_domain_or_IP;
root /var/www/html/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php-fpm/php7.4-fpm.sock;
}
location /\.ht {
deny all;
}
}
重启Nginx:
sudo systemctl restart nginx
配置.gitlab-ci.yml:
在你的Laravel项目根目录下创建一个.gitlab-ci.yml
文件,内容如下:
stages:
- build
- test
- deploy
build:
stage: build
script:
- composer install --optimize-autoloader --no-dev
- php artisan key:generate
- php artisan config:cache
test:
stage: test
script:
- vendor/bin/phpunit --coverage-clover build/logs/clover.xml
deploy:
stage: deploy
script:
- rsync -avz --delete --exclude='.git' --exclude='.env' . user@your_server_ip:/path/to/your/laravel/public
only:
- master
配置SSH密钥: 在GitLab CI/CD Runner上配置SSH密钥,以便能够安全地访问你的服务器。
部署到服务器:
在.gitlab-ci.yml
中配置的deploy
阶段会自动将代码同步到你的服务器。
通过以上步骤,你可以在CentOS上实现Laravel的自动化部署。根据你的具体需求,可以选择使用Docker或GitLab CI/CD来实现更高效的部署流程。