在CentOS上为Laravel项目实现持续集成(CI)通常涉及以下几个步骤:
版本控制系统:确保你的Laravel项目托管在一个版本控制系统中,如Git。
CI/CD工具:选择一个CI/CD工具来自动化构建、测试和部署过程。流行的选择包括Jenkins、GitLab CI/CD、Travis CI、CircleCI等。
服务器准备:在CentOS上准备一个服务器,用于运行CI/CD流程和部署应用程序。
依赖安装:在服务器上安装必要的软件,如PHP、Composer、Nginx或Apache、MySQL等。
配置CI/CD管道:根据所选的CI/CD工具,创建一个配置文件(例如.gitlab-ci.yml或Jenkinsfile),定义构建、测试和部署的步骤。
自动化测试:编写自动化测试脚本,确保每次代码提交都能通过测试。
部署脚本:编写部署脚本,用于将代码从版本控制系统自动部署到服务器。
下面是一个简单的例子,展示如何在GitLab CI/CD中设置一个基本的Laravel项目部署流程:
stages:
- install
- test
- deploy
variables:
DEPLOY_ENV: production
APP_NAME: my-laravel-app
SERVER_USER: centos
SERVER_HOST: myserver.com
SERVER_PORT: 22
SERVER_PATH: /var/www/${APP_NAME}
before_script:
- 'which ssh-agent || ( yum install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $SERVER_HOST >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
install_dependencies:
stage: install
script:
- ssh $SERVER_USER@$SERVER_HOST "sudo yum update -y"
- ssh $SERVER_USER@$SERVER_HOST "sudo yum install -y git php php-mysqlnd composer nginx"
- ssh $SERVER_USER@$SERVER_HOST "sudo systemctl stop nginx"
- scp -r . $SERVER_USER@$SERVER_HOST:$SERVER_PATH
- ssh $SERVER_USER@$SERVER_HOST "cd $SERVER_PATH && composer install --no-interaction --prefer-dist --optimize-autoloader"
- ssh $SERVER_USER@$SERVER_HOST "sudo systemctl start nginx"
run_tests:
stage: test
script:
- ssh $SERVER_USER@$SERVER_HOST "cd $SERVER_PATH && vendor/bin/phpunit"
deploy:
stage: deploy
script:
- ssh $SERVER_USER@$SERVER_HOST "cd $SERVER_PATH && sudo systemctl restart nginx"
在这个例子中,我们定义了三个阶段:安装依赖、运行测试和部署。在before_script中,我们设置了SSH代理并添加了私钥,以便CI/CD系统可以安全地连接到服务器。
请注意,这个例子假设你已经有了一个名为SSH_PRIVATE_KEY的CI/CD变量,其中包含了用于连接到服务器的SSH私钥。你还需要根据实际情况替换SERVER_USER、SERVER_HOST、SERVER_PORT和SERVER_PATH等变量的值。
这只是一个基本的例子,实际的CI/CD配置可能会更复杂,取决于你的具体需求和服务器环境。你可能需要考虑缓存依赖项、数据库迁移、环境变量配置等因素。