Capistrano - jak umieścić pliki w folderze udostępnionym?

Jestem nowy w Capistrano i zobaczyłem, że jest folder współdzielony, a także opcja :linked_files. Myślę, że folder udostępniony jest używany do przechowywania plików między wydaniami. Ale moje pytanie brzmi, w jaki sposób pliki trafiają do folderu udostępnionego?

Ponadto, jeśli chcę połączyć symbolicznie inny katalog z bieżącym katalogiem, np. katalog statyczny przy jakiejś ścieżce, jak umieścić go w linked_dirs?

Na koniec jak ustawić chmod 755 na linked_files i linked_dirs.

Dziękuję.
Author: Sheharyar, 2013-09-29

5 answers

Foldery wewnątrz aplikacji są dowiązaniami symbolicznymi do folderów w katalogu udostępnionym. Jeśli Twoja aplikacja pisze do log/production.log, to faktycznie napisze do ../shared/log/production.log. W ten sposób pliki trafiają do folderu udostępnionego.

Możesz zobaczyć, jak to działa, patrząc na specyfikację funkcji lub testy w Capistrano .

Jeśli chcesz chmod tych udostępnionych plików, możesz to zrobić tylko raz bezpośrednio przez ssh, ponieważ nigdy nie będą modyfikowane przez Capistrano po ich utworzeniu.

Aby dodać linked katalog, w twoim deploy.rb:

set :linked_dirs, %w{bin log tmp/backup tmp/pids tmp/cache tmp/sockets vendor/bundle}

Lub

set :linked_dirs, fetch(:linked_dirs) + %w{public/system}
 58
Author: Michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-05 14:07:54

Napisałem zadanie dla Capistrano 3, aby przesłać pliki konfiguracyjne do folderu współdzielonego każdego z serwerów, sprawdzi te katalogi w kolejności:

  1. config/deploy/config/: stage/*.yml
  2. config/deploy/config/*.yml

I przesłać wszystkie znalezione pliki konfiguracyjne. Załaduje pliki tylko wtedy, gdy się zmieniły. Zauważ również, że jeśli masz ten sam plik w obu katalogach, drugi zostanie zignorowany.

Oto kod: https://gist.github.com/Jesus/448d618c83fb0445ebbf

Jeszcze jedno, to zadanie polega na załadowaniu konfiguracji. pliki do zdalnego folderu udostępnionego, musisz jeszcze ustawić linked_files w config/deploy.rb, np:

set :linked_files, %w{config/database.yml config/aws.yml}

Aktualizacja:

Jeśli używasz Gita, prawdopodobnie będziesz chciał zignorować te pliki:

echo "config/deploy/config/*" >> .gitignore
 9
Author: xuuso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-07 14:43:09

Capistrano 3.5 +

Capistrano 3.5 wprowadzono {[2] } dla pól tablicy. z oficjalnych dokumentów , powinieneś użyć tych:

Dla Udostępnionych Plików:

append :linked_files, %w{config/database.yml}

Dla Współdzielonych Katalogów:

append :linked_dirs, %w{bin log public/uploads vendor/bundle}
 7
Author: Sheharyar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-19 00:31:57

Istnieją 3 proste kroki, które możesz wykonać, aby umieścić plik, którego nie chcesz zmieniać w kolejnych wydaniach; dodaj swój plik do listy linked_files.

set :linked_files, fetch(:linked_files, []).push('config.php')

Wybierz wszystkie pliki, które chcesz udostępnić. Umieść ten plik z lokalnego serwera na zdalnym serwerze przez scp

scp config.php deployer@amazon:~/capistrano/shared/config.php

Teraz uruchom za pomocą polecenia podanego poniżej:

bundle exec cap staging deploy

Oczywiście, staging można zmienić zgodnie z wymaganiami może być produkcja, piaskownica itp.

Jeszcze jedno, bo nie chcesz, aby członkowie Twojego zespołu zatwierdzili takie pliki. Więc włóż ten plik do swojego .plik gitignore. I wciśnij go do git remote repo.

 4
Author: Ankit Vishwakarma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-06 16:23:21

Dla Capistrano 3.5 + , Jak określono w official doc :

append :linked_dirs, ".bundle", "tmp"
 2
Author: Elodie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-23 09:33:25