Faj*_*rmf 45 capistrano config web-deployment
我是新手Capistrano,我看到有共享文件夹和选项:linked_files.我认为共享文件夹用于在版本之间保存文件.但我的问题是,文件最终是如何进入共享文件夹的?
另外,如果我想将另一个目录符号链接到当前目录,例如某个路径上的静态文件夹,我该怎么把它放在linked_dirs?
最后,如何设置chmod 755为linked_files和linked_dirs.
谢谢.
Mic*_*ael 62
应用程序内的文件夹是共享目录中文件夹的符号链接.如果您的应用程序写入log/production.log,它将实际写入../shared/log/production.log.这就是文件最终出现在共享文件夹中的方式.
您可以通过查看Capistrano中的功能规格或测试来了解其工作原理.
如果你想chmod这些共享文件,你可以直接在ssh上执行一次,因为Capistrano创建后它们永远不会被修改.
要添加链接目录,请在deploy.rb:
set :linked_dirs, %w{bin log tmp/backup tmp/pids tmp/cache tmp/sockets vendor/bundle}
Run Code Online (Sandbox Code Playgroud)
要么
set :linked_dirs, fetch(:linked_dirs) + %w{public/system}
Run Code Online (Sandbox Code Playgroud)
xuu*_*uso 10
我为Capistrano 3编写了一个任务,将您的配置文件上传到每个服务器的共享文件夹中,它将按顺序检查这些目录:
并上传找到的所有配置文件.只有在文件发生变化时才会上传文件.另请注意,如果两个目录上都有相同的文件,则第二个目录将被忽略.
这是代码:https://gist.github.com/Jesus/448d618c83fb0445ebbf
最后一件事,这个任务就是上传配置.文件到远程共享文件夹,你仍然需要设置linked_files的config/deploy.rb,例如:
set :linked_files, %w{config/database.yml config/aws.yml}
Run Code Online (Sandbox Code Playgroud)
更新:
如果你正在使用Git,你可能想要忽略这些文件:
echo "config/deploy/config/*" >> .gitignore
Run Code Online (Sandbox Code Playgroud)
Capistrano 3.5 append为阵列领域引入.从官方文档中,您应该使用以下内容:
对于共享文件:
append :linked_files, %w{config/database.yml}
Run Code Online (Sandbox Code Playgroud)
对于共享目录:
append :linked_dirs, %w{bin log public/uploads vendor/bundle}
Run Code Online (Sandbox Code Playgroud)
您可以按照 3 个简单的步骤将不想更改的文件放入连续版本中;将您的文件添加到 linked_files 列表中。
set :linked_files, fetch(:linked_files, []).push('config.php')
Run Code Online (Sandbox Code Playgroud)
选择您要共享的所有文件。通过 scp 将该文件从本地发送到远程服务器
scp config.php deployer@amazon:~/capistrano/shared/config.php
Run Code Online (Sandbox Code Playgroud)
现在,通过下面给出的命令进行部署:
bundle exec cap staging deploy
Run Code Online (Sandbox Code Playgroud)
当然,分期可以根据生产、沙盒等要求进行更改。
另一件事是,因为您不希望您的团队成员提交此类文件。因此,将此文件放入您的 .gitignore 文件中。并将其推送到 git 远程仓库。
| 归档时间: |
|
| 查看次数: |
42667 次 |
| 最近记录: |