准备工作
本机 win10 ; 远程 centos 7
远程需安装 lnmp 环境,git、composer 工具
本机创建秘钥对
ssh-keygen -t rsa -m PEM
远程创建用户
# 创建用户
useradd deploy
# 让用户拥有sudo权限
usermod -a -G wheel deploy
# 设置用户密码
passwd deploy
已创建的用户 deploy 登录后操作
mkdir .ssh && cd .ssh
#用 sz 命令上传之前本地生成的公钥到 .ssh 目录
rz
#重命名
mv id_rsa.pub authorized_keys
本机安装 Capistrano
1,安装 ruby
先安装 ruby gem 环境:使用rubyinstaller官网推荐的配置即可,本文基于 Ruby+Devkit 2.6.3-1 (x64)
官网:https://rubyinstaller.org/
传统的win软件安装步骤,需要注意的是,如果只是为了使用Capistrano,不需要安装 MSYS2 system,且注意勾选添加到系统环境变量。
2,然后安装
gem install capistrano
capistrano地址:https://capistranorb.com/documentation/getting-started/installation/
3,安装 Capistrano 之后,为了使用 Capistrano,必须初始化项目。打开终端,进入项目的根目录,执行下面的命令:比如在:G:/test,运行下面命令生成 Capistrano 的配置文件:
cap install
这个命令会创建 Capfile 文件,config/ 目录和 lib/ 目录。现在,项目目录结构应该如下所示:
Capfile
config/
deploy/
production.rb
staging.rb
deploy.rb
lib/
capistrano/
tasks/
配置 deploy.rb 文件
lock "~> 3.16.0"
set :application, "my_app_name"
set :repo_url, "https://gitee.com/cshaptx4869/thinkphp-crontab.git"
namespace :deploy do
desc "Build"
after :updated, :build do
on roles(:web) do
within release_path do
execute :composer, "install"
end
end
end
end
配置 production.rb 文件
role :web, %w{deploy@192.168.0.121}
部署应用
正式部署应用之前,需要确保应用代码已提交并推送到 Git 仓库,然后在本地电脑打开终端,进入应用的最顶层目录,执行下面的命令进行部署:
# 检查
cap production deploy:check
cap production deploy

回滚应用
如果不慎把错误代码提交到生产环境,可以执行下面的命令回到之前的版本:
cap production deploy:rollback
参考:
https://laravelacademy.org/post/7508
https://laravelacademy.org/post/7530
https://stackoverflow.com/questions/57968022/capistrano-deployment-error-in-rails-application