[Linux] Apache(아파치) 디렉토리와 httpd.conf , httpd-vhosts.conf

Yuri Lee·2021년 7월 1일
0

Apache HTTPD란?

  • Apache HTTPD[아파치 HTTPD]는 다양한 기능과 안정성, 편의성, 속도 등을 고루 갖추었으며, 전 세계적으로 가장 많이 알려지고 사용되고 있고 Apache License 2.0을 준수하는 소스가 공개된 무료 웹 서버이다.

디렉터리 구성

  • conf : 서버 환경 설정 파일들이 모여있다. httpd.conf가 가장 중요한 파일이다.
  • htdocs : 클라이언트에게 실제로 보여지는 웹 사이트 소스를 포함한다. 옵션에 따라 다른 위치로 옮길 수 도 있다. 당연히 공개해서는 안 될 파일들을 이 곳에 두는 것은 위험하다.
  • logs : 접속, 오류 기록 등을 저장하는 곳이다.
  • modules : Apache에 기능을 추가하기 위해 로드시킬 모듈들이 들어있다.

httpd.conf

  • Apache의 기본이자 핵심적인 설정 파일이다. Apache의 대부분 핵심 기능을 여기에서 설정한다. 초기 설정값 또한 그대로 사용하기에 별 무리가 없어 처음에는 조금만 수정해서 사용해도 될 만큼 일반적이다.
ServerRoot "/etc/httpd"                 httpd가 구성파일에서 참조된 파일을 찾는 위치 지정 (아파치 서버의 루트 디렉토리)
Listen 80                              모든 인터페이스의 80/tcp 포트에서 수신 대기
Include conf.modules.d/*.conf         ServerRoot 에 상대적으로 파일의 경로를 지정하여 포함시킬 수 있다.
User apache                               root권한이 필요한 모든 작업 후 해당 유저, 그룹으로 작업 수행
Group apache                             ex) 자식 프로세스가 생성될때 해당 프로세스의 소유자와 소유 그룹은 apache 이다.
ServerAdmin root@localhost          httpd 오류 관련 메일을 받을 수 있는 주소 설정
<Directory />                             지정된 디렉터리 및 하위 디렉터리에 대한 구성 지시문 설정
    AllowOverride none                  .htaccess 파일에서 디렉터리별 구성 설정 확인되지 않음
    Require all denied                    httpd는 이 디렉터리의 콘텐츠를 제공하는것을 거부한다.
</Directory>
DocumentRoot "/var/www/html"     httpd가 요청된 파일을 검색할 위치 지정(아파치 웹 문서들의 루트 디렉터리)
<Directory "/var/www">
AllowOverride None
    Require all granted                   이 디렉터리에 대한 엑세스 허용
</Directory>
<Directory "/var/www/html">
    Options Indexes FollowSymLinks  디렉터리에 대해 특정 옵션 설정, indexes 옵션은 디렉터리가 요청되고 해당 디렉터리에 index.html이 없을 경우 디렉터리 목록 표시
    AllowOverride None
    Require all granted
</Directory>
<IfModule dir_module>                  지정된 확장 모듈이 로드되는 경우에만 해당 콘텐츠 적용
    DirectoryIndex index.html            디렉터리가 요청될 때 사용할 파일 지정
</IfModule>
<Files ".ht*">                                지정된 파일에 대해 구성 지시문 설정
    Require all denied                      
</Files>
ErrorLog "logs/error_log"                 발생하는 오류를 로깅할 위치 설정 (상대경로 이므로 앞에 ServerRoot지시문이 붙음)
LogLevel warn
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined      로깅할 파일과 LogFormat 지시문으로 관리자가 필요한 정보를 로깅
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
AddDefaultCharset UTF-8                      text/plain 및 text/html 리소스의 Content-type 헤더에 charset 부분 추가
IncludeOptional conf.d/*.conf                 Include와 유사하나 지정한 파일이 없어도 오류가 발생하지 않음

httpd-vhosts.conf

가상 호스트

  • 가상 호스트는 일반적으로 클라이언트가 여러 IP / 도메인 / 포트 번호로 서버에 접속할 때 각각 다른 웹 사이트를 띄우기 위한 기술이다. 즉, 가상 호스트 설정을 통해 하나의 웹 서버로 여러 웹 사이트를 운영할 수 있다. 이 설정 파일은 그 각각의 가상 호스트에 대한 설정을 지정하는 파일이다. 사용하기 위해선 httpd.conf에서 #Include conf/extra/httpd-vhosts.conf 라인을 주석 해제 해야 한다

https://itragdoll.tistory.com/56
https://opentutorials.org/course/3647/23838

profile
Step by step goes a long way ✨

0개의 댓글