웹 서버의 루트 디렉터리가 기본적으로 "/var/www"에 있는 이유는 무엇입니까?

웹 서버의 루트 디렉터리가 기본적으로 "/var/www"에 있는 이유는 무엇입니까?

턱시도 파일Linux 디렉토리 구조는 다음과 같습니다.

/var:

이 디렉토리에는 시스템이 실행되는 동안 변경되는 변수 데이터가 포함되어 있습니다.

주파수 호핑 켜짐/var다음과 같이 말해보세요:

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

그런 다음 로그, 메일, 스풀러 등이 해당 폴더에 저장된다고 말합니다.

전통적으로 Ubuntu Linux에 Apache, Nginx 또는 Arch를 정기적으로 설치하면 디렉터리가 /var/www/.

제 생각에는 파일이나 기타 거의 영구적인 콘텐츠가 포함된 디렉터리를 저장하는 데 이상적인 장소는 아닙니다.

왜 그렇게 자주 투자합니까 /var?

좀 더 주관적으로 말하자면, 디렉토리 구조를 기준으로 볼 때 이것이 이상적인 위치입니까?

답변1

의 사용법은 /var/www언뜻 보면 혼란스럽습니다.

FHS에 따르면 웹 서버 데이터는 /srv.

그러나 결정의 구조는 /srv전적으로 지역 관리자의 책임이라고 명시되어 있습니다! 그러므로 가방에는 아무 것도 넣어서는 안 되며 /srv,기본(아파치) 패키지는 그 안과 그 아래에 무엇이 있는지 /srv모르기 때문에 문서 루트는 가 될 수 없습니다 . /srv일반 텍스트 비밀번호 및 기타 내용이 포함된 전복 저장소일 수도 있습니다. 따라서 기본 external 이 있어야 합니다 /srv. 기본값은 입니다 /var/www.

/var/www주로 자리 표시자입니다. 패키지는 /usr/share정적 HTML 콘텐츠 또는 /var/lib동적 변수 콘텐츠 에 사용됩니다 . 많은 사람들은 HTML을 /var/www. 그래서 최근에 그들은 /var/www/html포장을 발명했습니다. 사람들이 새로운 디렉토리를 다시 만들어야 하기 때문에 그것을 사용하지 않기를 바랍니다.

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

답변2

실제로는 전혀 "전통적인" 위치가 아닙니다. 전통적으로 운영 체제 이후에 설치한 모든 항목은 에 들어가며 /usr/local실제로 이것이 오늘날까지 "고전적인 Apache 경로 레이아웃"(그들의 표현)이었습니다. 오랫동안 이랬습니다 /home/httpd.

보시다시피 특정 운영 체제(Red Hat Linux, Mac OS X, GNU 등)용으로 구성된 Apache는 이 위치를 사용자 정의합니다. Apache의 소스 코드는 이를 위해 신중하게 설계되었습니다. 실제로 소스 파일에서 ServerRoot 값을 추적하면 해당 파일에서 시작되는 것을 볼 수 있습니다.config.layout:

파일의 일부 발췌 내용을 보면 문서 루트 위치에 많은 변경 사항이 있음을 알 수 있습니다.

IIRC /var/www저는 Red Hat Linux 7.x(Red Hat Enterprise Linux 아님)의 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

답변3

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

나는 또한 정의가 다음에서 비롯된 것이라고 생각합니다.FHS더 정확하게 말하면(데이터가 "지속적으로 변경"될 필요는 없음):

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


그러나 [FHS](http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE16A)에는 www 데이터가 `/srv`에 들어가야 한다고 명시되어 있습니다.

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

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

/srv 하위 디렉터리의 이름을 지정하는 데 사용되는 방법은 현재 이를 수행하는 방법에 대한 합의가 없기 때문에 지정되지 않습니다. /srv에서 데이터를 구조화하는 한 가지 방법은 프로토콜을 사용하는 것입니다. ftp, rsync, www 및 cvs.

답변4

제 경험상(저는 웹 개발자입니다) 웹사이트 콘텐츠는 안정적이지 않습니다. 동적으로 생성된 콘텐츠는 물론이고 html 파일도 끊임없이 변경됩니다(수정, 누락 등).

그래서 제 관점에서는 그것들은 변수입니다. 따라서 아무 문제 없이 /var 디렉토리에 잘 들어맞습니다.

관련 정보