php capistrano,Capistrano 3.11, GitLab, PHP 本地自动发布

使用 capistrano 3.11 实现一个小的发布脚本

Capistrano是用ruby编写的可以在一台或多台服务器上运行脚本的开源工具,它主要用于部署web应用。它自动完成多台服务器上新版本的同步更新,包括数据库的改变。

Capistrano工具怎么样?

这个问题各个不同的开发团队有各自的答案,不管网上说这个工具有多好,只有符合自己的需求才是最好。

未使用Capistrano之前,每次发布代码,都需要以下几个步骤

连接服务器: 通过 SSH 登上 正式生产服务区, 进入项目目录

获取最新代码:执行 git pull 获取 master 分支最新代码

清除缓存:清除缓存

以往发布方式不足的地方

每次都是重复操作那几条相同的命令,机械,繁琐

出错 rollback 操作没有 Capistrano 简单

关键配置信息需要放在版本库中(数据库配置,接口配置信息)

个性化信息需要手动修改,或者手动发布。

Capistrano 安装

确保电脑安装好了 ruby 2.5以上, gem 2.7 以上

gem install capistrano

如果装不上,考虑 ruby 版本 和 gem 版本是不是太低

gem install bundle

初始化项目

cap install

编写Capistrano脚本

vim config/deploy.rb

lock "~> 3.11.0"

# 采用ssh 方式登录远程服务器

# remote server 是远程服务器器地址,一般是网站正式服务器地址

# server user 是登录到远程服务器的用户

# web, app, db 都是角色名,我三个都在同一个服务器,所以写在一起。

server 'remote server', user: 'server user', roles: %w{web app db}, primary: true

# release path 发布到正式服务器的路径,这个路径需要提前在服务器上创建好

set :deploy_to, "release path"

# application name 自定义的应用名称,没什么作用

set :application, "application name"

# 设置代码仓库地址, 我用的git

set :repo_url, "git lab"

# 设置代码版本控制工具

set :scm, "git"

# 设置获取哪个分支的代码,默认是 master

set :branch, "master"

# 设置发布采用缓存技术。这个很有用,如果未设置这个,每次发布都是全量发布,超慢,如果依赖的vendor多,会更慢。

set :repository_cache, "git_cache"

set :deploy_via, :remote_cache

# ssh 选项设置。 告诉 Capistrano , ssh key 在本机的位置。

set :ssh_options, {:forward_agent => true, user: fetch(:user), keys: %w( ssh key在本机的路径 ) }

set :format, :pretty

# 设置日志级别

set :log_level, :info

# 设置保存的版本数量,一般为5

set :keep_releases, 5

# 自定义的一些任务

namespace :deploy do

# 清除缓存

desc "clear cache"

task :clear_cache do

on roles(:app, :web) do

execute("rm -rf #{deploy_to}/current/var/cache/")

execute("mkdir -p #{deploy_to}/current/var/cache/")

end

end

# 改变项目所属组

desc "change group"

task :change_group do

on roles(:app, :web) do

execute("sudo chown -R user:group #{deploy_to}/current")

end

end

# 上传配置文件 , 将本地文件 lib/App/Config/config.yml 上传到服务器 #{deploy_to}/current/app/config/

desc "Upload config.yml"

task :upload_config_yml => 'lib/App/Config/config.yml' do |t|

on roles(:all) do

upload!(t.prerequisites.first, "#{deploy_to}/current/app/config/")

end

end

after :finishing, :upload_parameter_yml

after :finishing, :clear_cache

```

Capistrano 检查命令,编辑好Capistrano脚本后。先自己运行命令检查

cap deploy:check

如果报错,编辑 Capfile 文件,在最后添加 Rake::Task[:production].invoke

查看Capistrano全部任务

cap -T

Capistrano 回滚

cap deploy:rollback

Capistrano 发布代码

cap production deploy

本作品采用《CC 协议》,转载必须注明作者和本文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值