[Centos 7] Apache 서버 구동 (httpd 패키지)

2022. 12. 1. 16:13리눅스(Linux)

$ apache 패키지 설치

# yum install -y httpd

$ 설정 파일

# cd /etc/httpd

conf 

   - 운영에 필요한 파일들 

conf.d

   - 확장적인 요소에 해당한 파일들

conf.modules.d 

   -  모듈에 필요한 파일들 

logs 

   - 에러로그, 액세스 로그 정보

modules 

   - 모듈정보

run 

   - 상태 정보

 

# ll /etc/httpd/conf
합계 28
-rw-r--r-- 1 root root 11753  1월 14 02:38 httpd.conf
-rw-r--r-- 1 root root 13064  3월 24 23:58 magic 
   - 시그니처 값을 분석해서 파일이 text, gz, audio 등등 구분 

# cp -a /etc/httpd/ /backup/ 
   - 백업하고 시작, a 옵션 사용시 허가권 소유권 까지 복사
# vi /etc/httpd/conf/httpd.conf
     4 # See <URL:http://httpd.apache.org/docs/2.4/> for detailed information. 
        - apache 매뉴얼 볼 수 있는 URL

     42 Listen 80 
        - 여러개 등록 가능
        
     56 Include conf.modules.d/*.conf 
        - 모듈 설정파일 불러오는 지시자
        
     66 User nobody 
     67 Group nobody
        - 아파치권한을 허용, nodoby변경하면 클라이언트 접근 권한이 거의 없다.
        
     86 ServerAdmin root@localhost 
        - http 오류관련 메일을 받을 주소 명시
        
     95 ServerName www.itbank.com:80 
        - 웹서버의 이름 명시 
        
    119 DocumentRoot "/apache/html"   
        - 클라이언트가 서버에게 요청한 파일을 검색할 위치 지정.
        - "/var/www/html"(default)에서 "/apache/html" 변경 후 진행
        
    102 <Directory />  
        - root / 하위 디렉터리의 적용
        
    103     AllowOverride none 
        - 추가 인증 기능
        - 클라이언트가 디렉터리를 인증할 때마다 인증하면 비효율적이다.
        - none(추가 인증을사용하지 않겠다)으로 변경
        
    104     Require all denied   
        - 모든 디렉터리에 접근권한을 거부시키겠다 (기본값)
        
    105 </Directory>
    
   *주석 지우고 진행*
   
    129 <Directory "/var/www/html">
    130     Options Indexes FollowSymLinks
         - 내 디렉터리 구조를 공개하는 것이기 때문에 거의 사용하지 않는다 / 지워버림
         - Indexes: main page를 주려고 했는데 없으면 해당 디렉터리를 나열해서 
         사용자가 선택할 수 있도록 보여주는 옵션
         - FollowSymLinks : 바로가기 링크 보여주는 옵션
         
    131     AllowOverride None  
    132     Require all granted
    133 </Directory>
    138 <Files ".ht*">  
         - 로그인 할 때 .htaccess, .htpasswd  파일 사용 
         
    139     Require all denied
    140 </Files>
    149 ErrorLog "logs/error_log" 
         - 모든 에러를 logs/error_log로 저장하겠다
    156 LogLevel warn 
         - 로그레벨 설정
         
   *주석 지우고 진행*
    
    158 <IfModule log_config_module>
    159     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
         - 마지막 로그 포맷 정보 형식 명시, http header 정보에서 가져온다
         
    160     LogFormat "%h %l %u %t \"%r\" %>s %b" common
    161
    162     <IfModule logio_module>
    163       LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combi        nedio
    164     </IfModule>
    165     #CustomLog "logs/access_log" common
    166     CustomLog "logs/access_log" combined → 새로 정의한 로그포맷
    167 </IfModule>
    
    168 <IfModule dir_module>   
    169     DirectoryIndex index.html   
        - Main Page를 식별하는 방법,  DirectoryIndex에 적혀있는 html을 읽어오고 
        DocumentRoot내부에 있는 Page들 중에서 찾은 후 클라이언트에게 연결을 해준다.
        - 여러개 이름 명시 가능
        
    170 </IfModule>
    296 #EnableMMAP off 
        - 메모리 매핑, 웹서버 처리성능이 올라감, 메모리소모량도 같이 올라감
        
    297 EnableSendfile on
    302 IncludeOptional conf.d/*.conf 
        - conf.d 에 있는파일 불러오기

# apachectl configtest 
Syntax OK
   - httpd.conf 설정값의 오류가 없는지 확인

# mkdir -p /apache/html 
   - 지정한 파일위치에 파일을 만들지 않으면 오류가 생긴다.
   
# cat > /apache/html/index.html
Document Root Test

# systemctl start httpd
# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload
   - apache 패키지 데몬 실행 및 방화벽 허용
# vi /etc/httpd/conf.d/welcome.conf
18 Alias /.noindex.html /usr/share/httpd/noindex/index.html
   - 각 html 매핑 시켜주는 작업파일 

# vi /usr/share/httpd/noindex/index.html 
   - testing 123 html 페이지 볼 수 있음

$ 가상 호스트 (virtual host)

   - host name에 따른 여러 도큐먼트 루트를 사용할 때 쓴다, 하위 도메인

   - ex) www.naver.com, comic.naver.com, news.naver.com

# vi /etc/httpd/conf/httpd.conf
    121 <Directory "/apache/html">
    122     AllowOverride None
    123     Require all granted
    124 </Directory>
    125
    126 <Directory "/apache/virtual"> 
    127     AllowOverride None
    128     Require all granted
    129 </Directory>
       - 기존 디렉터리 구문 밑에 새로 작성

# mkdir -p /apache/virtual
# cat > /apache/virtual/index.html
Virtual Host Test


# vi /etc/httpd/conf.d/vhost.conf
## Local Host ##
<VirtualHost *:80>
        DocumentRoot    /apache/html
        ServerName      www.itbank.com
</VirtualHost>

## Virtual Host ##
<VirtualHost *:80>
        DocumentRoot    /apache/virtual
        ServerName      vvv.itbank.com  
        ErrorLog        logs/vvv-error_log
        CustomLog       logs/vvv-access_log combined
</VirtualHost>

# apachectl configtest
Syntax OK
# systemctl restart httpd
# vi /var/named/itbank.zone
$TTL 1D
@       IN SOA ns1.itbank.com.          root (
                                        0       ; serial
                                        60      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1.itbank.com.
        IN      NS      ns2.itbank.com.
ns1     IN      A       192.168.1.100
ns2     IN      A       192.168.1.150
www     IN      A       192.168.1.100
vvv     IN      A       192.168.1.100  
   -  새로운 호스트 추가

# systemctl restart named

 [ win client ]
C:\Users\ITBANK_TAEHEI>ipconfig /flushdns

Windows IP 구성

DNS 확인자 캐시를 플러시했습니다.
   - DNS 테스트 작업시 캐시를 초기화해줘야한다.
   - www.itbank.com, vvv.itbank.com 차례로 접속 테스트

$ 사용자별 웹디렉터리 (userdir) 

   -  Userdir은 Apache 모듈로 여러 사용자가 있는 시스템에 Userdir 지시어를 사용하면 각 사용자는 자신의 홈디렉토리 안에 웹사이트를 만들 수 있다.

   - http://example.com/~username/에 접근하면 사용자 "username"의 홈디렉토리에서 Userdir 지시어로 지정한 하위디렉토리에 있는 페이지를 가져오게 된다.

# vi /etc/httpd/conf.d/userdir.conf
     11 <IfModule mod_userdir.c>
     12     #UserDir disabled
     13     UserDir public_html
     14 </IfModule>
     15 <Directory "/home/*/public_html">
     16     ## Apache 2.4 users use following ##
     17     AllowOverride none
     18     Options none
     19     Require method GET POST OPTIONS
     20
     21 </Directory>

# mkdir /home/s1/public_html
# chmod 701 /home/s1
# cat > /home/s1/public_html/index.html
s1 Home Dir
# systemctl restart httpd

http://www.itbank.com/~s1/ 접속