在Linux环境下部署Laravel项目的CI/CD(持续集成/持续部署)流程,可以使用多种工具和技术。以下是一个基本的步骤指南,使用Git作为版本控制系统,Jenkins作为CI/CD工具,以及Docker进行环境隔离。
1. 准备工作
1.1 安装必要的软件
确保你的Linux服务器上已经安装了以下软件:
- Git
- Docker
- Docker Compose
- Jenkins
- PHP
- Composer
1.2 配置Docker
创建一个Dockerfile来定义Laravel项目的环境:
# 使用官方PHP镜像
FROM php:7.4-fpm
# 安装必要的扩展
RUN docker-php-ext-install pdo_mysql mbstring xml zip opcache
# 安装Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 设置工作目录
WORKDIR /var/www/html
# 复制项目文件
COPY . /var/www/html
# 安装依赖
RUN composer install --no-interaction --prefer-dist --optimize-autoloader
# 暴露端口
EXPOSE 9000
# 启动PHP-FPM
CMD ["php-fpm"]
创建一个docker-compose.yml文件来管理Docker容器:
version: '3'
services:
app:
build: .
container_name: laravel_app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /var/www/html
volumes:
- ./:/var/www/html
networks:
- laravel
nginx:
image: nginx:stable-alpine
container_name: nginx
restart: unless-stopped
tty: true
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
networks:
- laravel
networks:
laravel:
driver: bridge
volumes:
laravel_app:
创建一个nginx.conf文件来配置Nginx:
server {
listen 80;
server_name yourdomain.com;
root /var/www/html/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
2. 配置Jenkins
2.1 安装Jenkins插件
在Jenkins管理界面中,安装以下插件:
- Git Plugin
- Docker Plugin
- Docker Pipeline Plugin
- Publish Over SSH Plugin
2.2 配置Jenkins Job
创建一个新的Pipeline Job,并配置以下内容:
- Source Code Management: 选择Git,并填写你的仓库URL和凭证。
- Build Triggers: 选择Poll SCM,并设置定时任务(例如
H/5 * * * *表示每5分钟检查一次代码变更)。 - Pipeline: 选择Pipeline script from SCM,并填写你的仓库路径和脚本路径(例如
Jenkinsfile)。
3. 创建Jenkinsfile
在你的Laravel项目根目录下创建一个Jenkinsfile,定义CI/CD流程:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git url: 'https://github.com/your-repo/laravel-project.git', branch: 'main'
}
}
stage('Build') {
steps {
script {
dockerImage = docker.build("laravel-app:${env.BUILD_ID}")
}
}
}
stage('Deploy') {
steps {
script {
dockerImage.inside {
sh 'composer install --no-interaction --prefer-dist --optimize-autoloader'
sh 'php artisan migrate'
sh 'php artisan config:cache'
sh 'php artisan route:cache'
sh 'php artisan view:cache'
}
}
}
}
}
post {
always {
cleanWs()
}
}
}
4. 运行Jenkins Job
保存并运行Jenkins Job,Jenkins将会自动执行以下步骤:
- 从Git仓库拉取最新代码。
- 构建Docker镜像。
- 将Docker镜像部署到目标服务器。
通过以上步骤,你就可以在Linux环境下实现Laravel项目的CI/CD流程。根据实际需求,你可以进一步优化和扩展这个流程。
以上就是关于“Linux环境下Laravel如何部署CI/CD”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm