웹 서버의 루트 디렉토리가 기본적으로“/ var / www”에있는 이유는 무엇입니까? Linux 디렉토리 구조에 대해 다음과 같이 말합니다.

Tuxfiles 는 Linux 디렉토리 구조에 대해 다음과 같이 말합니다.

/var:

이 디렉토리에는 시스템이 실행될 때 지속적으로 변경되는 변수 데이터가 있습니다.

FHS/var 는 다음과 같이 말합니다.

/var가변 데이터 파일을 포함합니다. 여기에는 스풀 디렉토리 및 파일, 관리 및 로깅 데이터, 임시 및 임시 파일이 포함됩니다.

그런 다음 로그, 메일 및 스풀러와 같은 항목이 해당 폴더에 있다고 말합니다.

전통적 으로 Ubuntu Linux에 Apache 또는 Nginx를 설치하면 디렉토리가에 배치됩니다 /var/www/.

그것은 거의 영구적 인 파일이나 다른 내용으로 디렉토리를 넣는 이상적인 장소처럼 보이지 않습니다.

왜 그렇게 자주 넣 /var습니까?

더 주관적으로 디렉토리 구조에 따라 이상적으로 가야합니까?



답변

실제로는 “전통적인”위치가 아닙니다. 전통적으로 OS 이후에 설치 한 모든 /usr/local것은 실제로 “클래식 Apache 경로 레이아웃”(그들의 말)입니다. 오랫동안, 그것은이었다 /home/httpd.

당신이보고있는 것은 Red Hat Linux, Mac OS X, GNU 등 특정 OS 용으로 구성된 Apache가 위치를 사용자 정의한다는 것입니다. Apache의 소스는이를 위해 잘 설계되어 있습니다. 실제로 소스 파일에서 ServerRoot의 값을 추적하면이 파일에서 시작되는 것을 볼 수 있습니다 config.layout.

이 파일에서 발췌 한 일부 문서는 docroot 위치에 많은 종류가 있음을 보여줍니다.

IIRC /var/www는 Red Hat Enterprise Linux가 아닌 Red Hat Linux 7.x 2000-2001 릴리스를 통해 제 삶에 들어 왔습니다. 위에서 언급 한 모든 이유로, 나는 그것이 타당하지 않다고 생각했지만, 현실은 현대 시대에 다른 많은 도구와 기술이 위치 이동에 관여하고 있다는 것입니다.

#   Classical Apache path layout.
<Layout Apache>
    prefix:        /usr/local/apache2
    datadir:       ${prefix}

#   GNU standards conforming path layout.
#   See FSF's GNU project `make-stds' document for details.
<Layout GNU>
    exec_prefix:   ${prefix}
    datadir:       ${prefix}/share+

#   Mac OS X Server (Rhapsody)
<Layout Mac OS X Server>
    prefix:        /Local/Library/WebServer
    datadir:       ${prefix}

#   Darwin/Mac OS Layout
<Layout Darwin>
    prefix:        /usr
    datadir:       /Library/WebServer

#   Red Hat Linux 7.x layout
<Layout RedHat>
    prefix:        /usr
    datadir:       /var/www

#   SuSE 6.x layout
<Layout SuSE>
    prefix:        /usr
    datadir:       /usr/local/httpd

#   BSD/OS layout
<Layout BSDI>
    prefix:        /var/www
    datadir:       ${prefix}

#   Solaris 8 Layout
<Layout Solaris>
    prefix:        /usr/apache
    datadir:       /var/apache


답변

사용법은 /var/www첫눈에 혼란을줍니다.

FHS에 따르면 웹 서버 데이터는로 이동해야합니다 /srv. 이것이 주요 규칙입니다.

그러나 또한 구조를 결정하는 /srv것은 로컬 관리자의 단독 책임 이라고 말합니다 . 따라서 (apache) 패키지는 그 안에있는 것과 그 아래에있는 것을 모르기 때문에 패키지는에 아무 것도 넣지 않아야 /srv하며 기본 문서 루트는 없어야 합니다. 일반 텍스트 암호 및 기타 사항이 포함 된 하위 버전 저장소 일 수도 있습니다. 따라서 외부에 기본값이 있어야합니다 . 그 기본값이 됩니다./srv/srv/srv/var/www

/var/www대부분 자리 표시 자입니다. 패키지 /usr/share는 정적 HTML 컨텐츠 또는 /var/lib동적 가변 컨텐츠에 사용됩니다. 많은 사람들이 실수로 HTML을 넣어야한다고 생각했습니다 /var/www. 패키지도 가끔 사용하기 때문에 문제가됩니다. 그래서 최근에 그들은 /var/www/html패키지 를 발명했습니다 . 바라건대 사람들은 그것을 사용하지 않을 것입니다. 왜냐하면 다시 새로운 디렉토리를 발명해야하기 때문입니다.

요약 : /srv그에 따라 Apache 가상 호스트를 사용 하고 구성해야합니다.


답변

나는 akond의 답변에 동의하지만 더 중요한 측면이 있다고 생각합니다. 와 같은 대부분의 다른 위치 /usr/local는 일반적으로 시스템 (패키지 관리자)에 의해 관리됩니다. /var일반적으로 패키지 관리자 (시스템 전체 ‘데이터’)에서 관리하지 않는 파일이있는 곳입니다.

또한 FHS 의 정의 가 좀 더 정확 하다고 생각합니다 (데이터가 “일관 적으로 변경 될 필요는 없습니다”).

/ var에는 가변 데이터 파일이 포함되어 있습니다. 여기에는 스풀 디렉토리 및 파일, 관리 및 로깅 데이터, 임시 및 임시 파일이 포함됩니다.

그러나 FHS 는 또한 www 데이터가/srv

/ srv에는이 시스템에서 제공하는 사이트 별 데이터가 포함됩니다.

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

/ srv의 하위 디렉토리 이름을 지정하는 데 사용 된 방법은 현재 지정 방법에 대한 합의가 없으므로 지정되지 않았습니다. / srv에서 데이터를 구성하는 한 가지 방법은 프로토콜입니다. ftp, rsync, www 및 cvs.


답변

다른 사람들이 말했듯이 그 이유는 대부분 역사적입니다. /var캐시 파일, 로그, 런타임 데이터 (예 : 잠금 파일), 메일 서버 스토리지, 프린터 스풀링 등 항상 변경되는 시스템 데이터에 사용되었습니다. 기본적으로 넣을 수없는 모든 항목에 대해 /usr( (로컬 데이터가 포함되어 있기 때문에) 들어가는 타사 프로그램 /opt이 아니며, 파기 및 변동성이 없습니다 /tmp.

유닉스 / 리눅스가 개발됨에 따라 다양한 이기종 디렉토리가 결합되어 혼란스러워졌습니다. 최근 몇 년간, 특히 머신이 제공하는 컨텐츠 (이제 [ Filesystem Hierarchy Standard 2.3, p.15 ]에 /srv따라가 아닌 /var/www) 가 이동하는 경향이있었습니다 .

비슷한 일이 일어난 /var/run몇 년 전에 – 여러 배포판의 집중 노력으로, 그것은에서 이동 된 /var/run/run이전에 사용의 기능을 융합하는 /var/lock, /var/run하고 /dev/shm.


답변

내 경험 (웹 개발자)에서 웹 사이트 컨텐츠는 안정적이지 않습니다. html 파일 (동적으로 생성 된 내용은 신경 쓰지 않음)의 경우에도 계속 변경 (수정, 누락 등) 될 수 있습니다.

제 관점에서 보면 그것들은 변수입니다. 따라서 그것들은 / var 디렉토리에 완벽하게 적합하며 아무런 문제가 없습니다.


답변

IIRC는 예전에는 항상 /var자체 파일 시스템 (별도의 디스크 또는 디스크 슬라이스)으로 마운트 되었습니다.

이것에 대한 이유 중 하나는 다른 사람들이 말했듯이 해당 파일 시스템에 대한 읽기 / 쓰기가 많기 때문입니다 (logs / et al). 별도의 디스크 / 슬라이스를 갖는 것은 (대부분 읽어 대 더 나은 I / O의이 유형에 맞게 조정 할 수 있음을 의미 /, /usr등).

다른 이유는 그 당시에 쓰기 작업 중 시스템이 충돌 한 경우 루트 파일 시스템이 손상되어 복구하기 어려운 상태로 남겨질 가능성이 매우 높기 때문입니다. 따라서에서 분리 할 필요가 있습니다 /.

파일 시스템 및 디스크 기술은 시간이 지남에 따라 크게 향상되었으므로 발생 가능성이 훨씬 낮습니다.


답변

/var FTP 또는 기타 업로드를 허용하는 여러 개의 가상 호스트가있는 웹 사이트가있는 경우 (예 : 웹 호스트 또는 이와 유사한 경우) 다중 사용자 액세스를위한 사용자 중립적 인 “기본”위치를 선택하는 것이 좋습니다.

/home생각하지 않거나 악의적 인 사용자가 /home파티션 제한에 업로드하면 (예 /var: /home, 등 의 기존 설정이 별도의 파티션에 있다고 가정) 다른 사용자 셸 계정에 나쁜 일이 발생할 수 있기 때문에 다른 사용자 계정에 영향을 줄 수 있기 때문에 최적의 상태 가 아닐 수 있습니다.

물론 나는 이것에 대해 /srv더 낫다고 생각 하지만 /varUNIX 전통에서는 더 오래되었습니다.