使用 Capistrano 3 将 PHP 文件部署到public_html而不是发布文件夹


Deploy PHP Files with Capistrano 3 to public_html instead of releases folder

我是卡皮斯特拉诺3的新手。
我想将我的 php 应用程序部署到public_html文件夹(我正在使用 cPanel)

我将deploy_to设置为这样:

set :deploy_to, '/home/username/public_html'当我跑步时:
cap production deploy它已成功上传到我的服务器,但它部署到releasescurrent文件夹,而不是public_html根目录

我的

问题是,如何使卡皮斯特拉诺上传到我的public_html根文件夹?

您需要部署到类似/home/username/code 的内容

然后,您可以创建从/home/username/public_html 到/home/username/code 的符号链接

该命令如下所示:

ln -s /home/username/code /home/username/public_html

您可以通过先在public_html外部部署文件进行处理,然后将当前版本符号链接到public_html fodler,如下所示:

1)在您的config/deploy.rb或config/deploy/****.rb文件中,将deploy_to设置为public_html之外的另一个文件夹,例如

set :deploy_to , '/home/username/deploy'

2) 在 config/deploy.rb

config/deploy/****.rb 文件中,添加一个变量,其中包含public_html

set :public_html_path, '/home/username/public_html'

3) 添加自定义任务release_public_html,以便在创建当前版本的符号链接后对public_html文件夹进行符号链接

after "deploy:symlink:release", "deploy:symlink:release_public_html"
namespace :deploy do
  namespace :symlink do
    desc "Symlink release to current"
    task :release_public_html do
      on release_roles :all do
    public_html_path = "#{fetch(:public_html_path)}"
        execute :rm, "-rf", public_html_path
        execute :ln, "-s", current_path, public_html_path
      end
    end
  end
end