我正在尝试将公共文件夹符号链接到我的rails应用程序到我服务器上的public_html文件夹,我似乎无法正确使用它。
我的deploy.rb文件中有一个名为:link_release_to_public
的任务:
namespace :deploy do
task :link_release_to_public do
run "cd ~"
run "rm -rf ~/public_html"
run "ln -sf ~/#{current_path}/public ~/public_html"
end
end
在其中,我删除现有的“public_html”文件夹,然后使用以下命令创建符号链接:
ln -sf ~/rails_app/releases/current/public ~/public_html
目标是用符号链接替换〜/ public_html到当前版本的公共文件夹。
运行cap deploy:link_release_to_public
成功完成,但是,不是将文件直接链接到〜/ public_html文件夹,而是创建“public_html”文件夹,然后在〜/ public_html中符号链接“public”,以便:{{ 1}}。
如果我直接在服务器上执行完全相同的步骤(通过SSH),它就能完美运行。我不明白我做错了什么。
答案 0 :(得分:1)
试试这个:
ln -sf ~/rails_app/releases/current/public/ ~/public_html
注意...current/public/
末尾的斜杠。它指示ln
命令对目录进行符号链接,而不是创建新的符号链接并对其进行符号链接。
答案 1 :(得分:1)
问题在于如何将命令放入任务中。我更改了任务,以便同时发出remove和symlink命令,而不是单独发出:
namespace :deploy do
task :link_release_to_public do
run "cd ~"
run "rm -rf ~/public_html && ln -sf ~/#{current_path}/public ~/public_html"
end
end
我运行了命令,它通过将符号链接设置为〜/ public_html按预期工作。