Rails 앱을 어떤 디렉토리에 배포해야합니까?


24

Linux 시스템에서 프로덕션 Rails 앱을 배포 할 수있는 합리적이고 논리적 인 디렉토리는 무엇입니까?

일부 후보자 ...

/var/rails  <= There's a /var/www so this would be consistent with that 
               pattern. But I.T. guys have complained about stuff in /var 
               before.

/home/my_home_dir/rails  <= OK, not /var, but I'm not the only developer. 
                            Seems like it really ought to be a systemwide
                            location.

/home/rails  <= I don't know. That just seems weird.

/rails  <= Seems even weirder.

여기서 가장 놀랍고 가장 정상적인 일은 무엇입니까?

(배경 정보-Rails 앱은 publicJavaScript, CSS 및 약간의 HTML을 포함 하는 디렉토리 와 함께 루비로 작성된 서버 측 코드입니다 . public디렉토리는 Apache vhost에 매핑됩니다. Apache는 모듈을 통해 루비 코드를 처리합니다 승객 또는라고합니다 mod_rails.)


도움을 주셔서 감사합니다. 나는 함께 갈 것 같아요 /opt/deployed_rails_apps. (나는 긴 설명 디렉토리 이름과 탭 완성을 /var/...좋아한다 .) 또한 좋은 곳이지만, 거기에 물건을 배치하려고 할 때 IT에서 엄중 한 불평을 받았다. 그것이 내 자신의 기계라면 나는 /var또는 함께 갈 수 있습니다 /srv.


이 다른 관련 질문을보고 싶을 수도 있습니다 : serverfault.com/questions/29129/…
chmeee

부수적 인 질문이지만 여전히 관련 나는 ~ / Documents / quotes (디렉토리)에 포함 된 rails 프로젝트에서 작업하고 있었고 그것을 배포 한 후 약 6 개월 후에 놀랍게도 동일한 폴더 구조가 / var /에 있다는 것을 알았습니다. www / html / quotes-배포시 레일이 var 폴더에 복사합니까? 나는 그것이 다른 디렉토리에서 어떻게 도착했는지 전혀 모른다. 도움을 주시면 감사하겠습니다
BKSpurgeon

답변:


5

/ opt 가 이와 같은 응용 프로그램 의 장소 라고 생각 합니다. chmeee가 제안한 FHS 준수에 동의하지만 Rails 앱 자체가 서비스라는 데 동의하지 않습니다.


실제로 레일 소프트웨어가 시스템의 어느 곳에 나 (젬 또는 패키지로) 포함되어 있지 않다면, 그가 원하는 것은 레일을 사용하여 무언가를 제공하는 실제 애플리케이션 인 '서비스'에 대한 디렉토리 구조입니다.
chmeee

Rails 자체가 아니라 자신이 만든 앱 (즉, "Rails 앱")에 대해 이야기하고 있다는 것을 알았습니다. 어느 쪽이든, / srv는 잘못된 것 같습니다.
Argalatyr

7

CentOS Linux 배포판 (및 이후 RedHat)에서 httpd 패키지 (Apache 2 용)를 설치하면이 패키지가 생성되어 /var/www호스트가 여기에서 웹 컨텐츠를 가리킬 것으로 예상합니다. 기본 가상 호스트는 일반적으로에 덤프되며 /var/www/htdocs후속 사이트 / 앱은에 배치해야합니다 /var/www/sitename.

실제 위치는별로 중요하지해야하지만 참조하는 것이 일반적이다 /opt/www/sitename, /var/www/sitename또는 간단하게, /opt/www또는 /var/www.

와 같은 다른 위치 중 일부가 /home실제로 적합하지 않은 몇 가지 이유를 이미 언급했습니다 .

개인적 /var/www/sitename으로 Apache와 Rails에 친숙하고 시스템 전체에 적합하기 때문에 선호합니다 .


1
웹 응용 프로그램은 / var / www로 이동해야합니다. 특히 Apache of Lighttpd와 같은 적절한 웹 서버를 통해 제공되는 경우에는 더욱 그렇습니다. SELinux 정책은 / opt /가 아닌 / var / www의 Rails 앱에 올바르게 적용되기 때문에 더욱 그렇습니다.
wzzrd

6

당신은 따라 할 수 있습니다 파일 시스템 계층 표준 (FHS)를 하고있는 장소

/srv : Data for services provided by this system

편집하다:

나는 그것을 배치하지 않을 것입니다 /opt:

/opt : Add-on application software packages

목적은 다음과 같습니다.

/ opt는 애드온 응용 프로그램 소프트웨어 패키지 설치를 위해 예약되어 있습니다.

/ opt에 설치 될 패키지는 별도의 / opt / 또는 / opt / 디렉토리 트리에서 정적 파일을 찾아야합니다. 여기서 소프트웨어 패키지를 설명하는 이름이며 공급자의 LANANA 등록 이름입니다.

개발 된 애플리케이션이 '소프트웨어 패키지'라고 생각하지 않습니다.

의 근거 /srv

이를 지정하는 주된 목적은 사용자가 특정 서비스에 대한 데이터 파일의 위치를 ​​찾을 수 있도록하고 읽기 전용 데이터, 쓰기 가능한 데이터 및 스크립트 (예 : cgi 스크립트)에 대해 단일 트리가 필요한 서비스를 합리적으로 배치 할 수 있도록하기위한 것입니다.

Rails 앱은 cgi 스크립트이므로에 배치해야합니다 /srv.


나는 FHS가 말하는 것에 너무 광신적이지 않을 것입니다. 가장 중요한 것은 사용자 정의 패키지를 운영 체제 파일에서 멀리 유지하는 것입니다. 그리고 가장 좋은 장소는 "/ usr / local"과 "/ opt"입니다.
Andrioid

1
나는 광신적이지는 않지만 파일 시스템 구성을 좋아합니다. 어쨌든 나는 / usr / local 및 / opt가 소프트웨어 패키지에 적합하다는 데 동의하지만 rails 앱은 소프트웨어 패키지라고 생각하지 않습니다
chmeee

1
FHS의 말에 따르면 /srv가장 적합한 디렉토리 인 것 같습니다. 을 사용하고 /srv/rails/application_name있습니다.
Teemu Leisti

0

나는 보통 그것들을 / opt / app_name에 넣었다.


0

데비안 / 우분투 기반 시스템에서 이러한 응용 프로그램은 컴파일되지 않은 파일이기 때문에 / usr / share 폴더 (예 : / usr / share / ruby)에 설치됩니다 (/ usr / lib로 이동). 응용 프로그램은 표준 응용 프로그램이 아니기 때문에 / usr / local / share에 넣어 시스템 업데이트로 덮어 쓰지 않도록 할 수 있습니다.

/ opt도 여기에 가능성이 있습니다.


0

배치를 유지합니다

/home/www.example.com/application

인수 :

홈에는 단일 웹 사이트의 모든 이동 부분이 포함됩니다. 웹 사이트가 더 있으면 어디에서 찾을 수 있는지 알 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.