capistrano从安装到部署

由于capistrano是用ruby语言开发的,所以使用capistrano前,需要在部署项目的源服务器上(部署的目标服务器不需要)安装ruby及capistrano。

  1. 安装rbenv

    git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
    echo 'eval "$(rbenv init -)"' >> ~/.bashrc
    source ~/.bashrc
    type rbenv
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
  2. 安装ruby

    rbenv install 2.3.0 
    rbenv global 2.3.0

    (若安装失败,可手动下载后,复制到/tmp/ruby-build.xxxx.xxx目录,然后再执行rbenv install 2.3.0即可下载地址:https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.bz2

  3. 安装bundler

    gem install bundler
  4. 安装capistrano
    在项目的根目录中添加Gemfile

    source 'https://rubygems.org'
    gem 'capistrano', '~> 2'
    gem 'cap_crontab'
  5. 初始化capistrano项目

    前提是该项目未添加capistrano的配置文件,Capfile、config等。

    在项目根目录执行如下命令,capistrano就会自动在项目下创建配置文件:

    capify .

    若使用capistrano3.x,则使用cap install命令

  6. 编辑生成的config/deploy.rb文件

    以下为我们的deploy脚本,可参考ruby语法,由于需要适用于不同stage的部署,故提取了一些变量,可通过不同stage的配置文件进行设置。

    由于capistrano自带从scm上获取代码,编译打包,然后部署的流程,而我们将代码的编译打包工作交给了jenkins,只适用capistrano的自动部署和回滚功能,故需要重写deploy:update_code任务。

    require 'capistrano/ext/multistage'
    
    set :stages, %w{staging production}   // 支持的stage,对应config/deploy/下的配置文件
    set :default_stage, "staging"
    
    set :application, "p4j-service"      // 仅仅是后面需要使用的一个变量
    set :deploy_to, "/tmp/work/#{application}"  // 部署到目标服务器的路径
    set :keep_releases, 5    // 目标服务器上报存的版本数量,超过数量则会将旧的版本删除
    set :use_sudo, false
    
    
    default_run_options[:pty] = true
    default_run_options[:shell] = "/bin/bash"
    
    
    after :deploy, "deploy:cleanup" 
    
    
    namespace :deploy do
      desc "override update_code"
      task :update_code do
        release_path="#{deploy_to}/releases/"+Time.now.strftime("%Y%m%d%H%M%S")
        run "mkdir -p #{release_path} "
        Dir["./target/#{application}*.tar.gz"].each {|file|  top.upload file, "#{release_path}/#{application}.tar.gz" } 
      end
    
    
      desc "Start service"
      task :start do
        run "cd #{current_path} && if [ `ls | grep #{application} | grep -v tar.gz | wc -l` -lt 1 ] ; then tar -zxvf #{application}.tar.gz; fi && cd `ls | grep #{application} | grep -v tar.gz`/bin && chmod +x serviced.sh && ./serviced.sh start", pty: false
      end
    
    
      desc "Stop service"
      task :stop, :on_error => :continue do
        run "cd #{current_path}/#{application}/bin && ./serviced.sh stop"
      end
    
    
      desc "Restart service"
      task :restart do
       stop
       sleep 5
       start
     end
    end
  7. 添加不同stage的配置文件

    如果有其他的stage,则参考此文件添加即可,添加到项目根目录下的config/deploy/目录下,文件名为stage名称,扩展名为.rb。(如production.rb)

    set :env, 'production'  // stage
    set :user, 'dm'    // 部署使用的用户
    
    
    server "10.118.28.14", :app   // 部署的目标服务器IP
    server "10.118.28.16", :app

    至此,我们的项目已经可以使用capistrano自动部署了。

  8. 部署和回滚命令

    在需要自动部署的项目的根目录(自动部署的源服务器上),使用如下命令进行自动部署和自动回滚

    cap production deploy
    cap production deploy:rollback
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins 是一款持续集成工具,可以用来构建、测试、部署 Web 项目。下面是基于 Jenkins 部署 PHP 项目的步骤: 1. 安装 Jenkins 和必要的插件:Jenkins 需要安装在服务器上,安装方法可以参考官方文档。安装完毕后,需要安装 PHP 插件和 Git 插件。 2. 创建 Jenkins 任务:在 Jenkins 中创建一个新的任务,选择“构建一个自由风格的软件项目”。在“源码管理”中选择 Git,填写 Git 代码库的 URL 和认证信息。在“构建触发器”中选择“轮询 SCM”,以便 Jenkins 定期检查代码库中是否有新的代码提交。 3. 配置构建环境:在构建环境中配置 PHP 环境,以便 Jenkins 能够执行 PHP 脚本。可以使用插件中的“PHP”工具,也可以手动配置 PHP 环境变量。 4. 构建脚本:在“构建”中配置构建脚本,以便 Jenkins 执行构建操作。构建脚本可以使用 shell 脚本,也可以使用其他脚本语言。 5. 部署脚本:在构建完成后,可以使用部署脚本将 PHP 项目部署到服务器上。可以使用 scp 或者 rsync 等命令将代码复制到指定目录下,也可以使用其他部署工具,如 Capistrano 等。 6. 配置构建后操作:在 Jenkins 中配置构建后操作,可以执行测试、打包、部署等操作。可以使用插件中的“Publish Over SSH”插件将代码部署到远程服务器上。 7. 触发构建:在 Jenkins 中手动触发构建,以便测试是否部署成功。 以上是部署 PHP 项目的基本步骤,具体的实现可以根据具体的需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值