準備工作
本機 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{[email protected]}
部署應用
正式部署應用之前,需要確保應用代碼已提交併推送到 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