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.
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.
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}
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:
- config/deploy/config/: stage/*.yml
- 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
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}
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.
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"
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