zoukankan      html  css  js  c++  java
  • 使用现代化工具 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

     
    分情破爱始乱弃,流落天涯思别离。 如花似玉负情意,影如白昼暗自迷。 随风浮沉千叶落,行色匆匆鬓已稀。
  • 相关阅读:
    java面试的那些事
    java多线程实现复制大文件
    java心跳发送
    Java实现缓存(LRU,FIFO)
    java并发阻塞队列
    java之路
    Intellij IDEA中使用Protobuf的正确姿势
    Flink JobManager HA模式部署(基于Standalone)
    查看Flink的Job Graph时的问题
    Flink从Kafka 0.8中读取多个Topic时的问题
  • 原文地址:https://www.cnblogs.com/cshaptx4869/p/15407697.html
Copyright © 2011-2022 走看看