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

准备工作

本机 win10 ; 远程 centos 7

远程需安装 lnmp 环境,git、composer 工具

 

本机创建秘钥对

ssh-keygen -t rsa -m PEM

 

 

远程创建用户

# 创建用户
useradd deploy
# 让用户拥有sudo权限 
# 在 CentOS 7 中,wheel组的成员可以使用 sudo 权限运行 linux 命令。
usermod -a -G wheel deploy
或 
gpasswd -a deploy wheel
# 设置用户密码
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

 
posted @ 2021-10-14 17:40  白開水  阅读(165)  评论(0编辑  收藏  举报