Capistrano로 배포 할 때 정적 파일을 서버에 유지합니다
-
06-07-2019 - |
문제
파일을 업로드하고 있습니다 public/files
웹 인터페이스를 통해 일정한 기준으로 Rails 응용 프로그램의 폴더.
거의 2GB를 사용하기 때문에 소스 제어를 유지하고 싶지 않습니다. cap deploy
해당 파일을 저장합니다 releases/
디렉토리를 저장소에 저장된 원시 사본으로 바꾸십시오.
서버에서 해당 파일을 보관하는 가장 좋은 방법이 무엇인지 궁금합니다. current
예배 규칙서. 내 아이디어 중 일부는 다음과 같습니다.
- 소스 컨트롤에서 디렉토리를 제거하고 Capistrano가 관리하지 않는 외부 디렉토리 링크로 바꾸십시오.
- 배포하기 전에 디렉토리를 /tmp에 복사 한 다음 배포가 완료된 후 /tmp에 디렉토리를 복사하는 capistrano 작업을 만듭니다.
이 작업을 수행하는 표준 방법이 있습니까?
해결책
컴퓨터의 다른 디렉토리에 파일을 Symlink로 만들 수 있습니다. 예를 들어 /공유 디렉토리와 동일한 수준 /현재 및 /릴리스와 동일한 수준으로 표시 할 수 있습니다.
Capistrano는 /log 및 /tmp 디렉토리를 관리합니다.
다른 팁
향후 기록의 경우, 이것은 공유 디렉토리로 수행했던 작업입니다.
task :link_shared_directories do
run "ln -s #{shared_path}/files #{release_path}/public/files"
end
after "deploy:update_code", :link_shared_directories
이제 우리는 간단히 사용할 수 있습니다 : deploy.rb의 linked_files :
set :linked_files, %w{config/database.yml}
이 경우 [target_dir]/shared/config/database.yml 파일은 서버에 있어야합니다.
제휴하지 않습니다 StackOverflow