使用现代化工具 Capistrano 自动部署 PHP 应用代码到生产环境

准备工作

本机 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

 
分情破爱始乱弃,流落天涯思别离。 如花似玉负情意,影如白昼暗自迷。 随风浮沉千叶落,行色匆匆鬓已稀。
原文地址:https://www.cnblogs.com/cshaptx4869/p/15407697.html