컬쥐네 다락방

리눅스 | Apache, 가상 호스트 본문

클라우드/리눅스

리눅스 | Apache, 가상 호스트

코딩하는 갱얼쥐 2022. 3. 10. 17:47

apache 

 

웹 서버

웹 서비스를 제공하는 서버

특징 

인터넷만 연결되어 있으면 어느 곳에서든 웹 서버에 방문이 가능하다.

네트워크를 통해 약속된 주소로 요청시 지정된 컨텐츠를 제공한다.

기본적으로 정적인 컨텐츠만 제공한다.

별도의 구성 시 동적인 컨텐츠를 제공할 수 있다.

 

웹서버의 기본적인 동작

웹 브라우저로 Client가 페이지 요청

HTTP (Hypertext Transfer Protocol)을 사용하여 웹 브라우저와 웹 서버간 의사소통을 한다.

Client가 페이지 요청 시 웹서버는 요청 받은 페이지를 보여준다.

정적 웹은 파일을 읽어서 보여주고, 동적 웹은 프로그램을 실행시켜 결과를 보내준다.

 

Apache의 특징

1. 공개형 웹 서버 프로그램이며 뛰어난 성능과 기능을 가지고 있다.

2. 다양한 플랫폼에서 동작할 수 있도록 유연하게 설계됐다.

3. 보조적 프로그램이 다양하다.

4. 공개된 형태로 개발된다.

5. 다양한 상황에 따른 서비스를 지원한다.

6. 동적 공유 객체를 지원한다.

7. 모듈 사용으로 기능 추가가 용이하다.

8. 유연한 설정이 가능하다.

 

Apache 설정

패키지 설치

yum -y install httpd

서비스 시작 및 활성화

systemctl start httpd
systemctl enable httpd

방화벽 설정

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

Apache의 구성

1. /etc/httpd/conf/httpd.conf

2. 키/값 구성 지시문과 HTML 유사 블록 2부분으로 구성

3. 블록 외부의 키/값 구성은 전체 서버 구성에 영향

4. 블록 내부의 지시문은 지정된 구성이나 설정한 요구 조건이 충족될 때만 적용

 

ServerRoot "/etc/httpd" # 구성 파일이 참조하는 위치의 기준점

Listetn 80 # httpd에 모든 인터페이스의 포트 80/TCP에서 수신 대기(중복 사용 금지)

Include conf.modules.d/*.conf # 모듈을 로드할 구성파일

User apache # httpd 데몬이 시작되면 실행되는사용자 및 그룹 지정
Group apache

ServerAdmin root@localhost # httpd에서 오류가 발생했을 때 문제를 보고 하는 곳

<Directory /> # 지정된 디렉토리및 모든 하위 디렉토리에 대한 구성 지시문 설정
AllowOverride none
Require all denied
</Directory>

DocumentRoot "/var/www/html" # httpd가 요청된 파일을 검색할 위치 결정
<Directory "/var/www/">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module> # 지정된 디렉토리가 요청될 때 사용할 파일을 지정
DirectoryIndex index.html
</IfModule>

Apache 웹 페이지 설정

기본 웹페이지 설정 위치 :

/var/www/html/ 에 사용하고자 하는 웹페이지 저장

/etc/httpd/conf/httpd.conf 에 설정함으로써 기본 위치 변경 가능

# echo “test page” > /var/www/html/index.html
# cat /var/www/html/index.html
test page
# curl 서버 IP 주소
test page

가상 호스트 (Virtual Hosts)

한 시스템에서 여러 개의 도메인과 호스트 이름을 구분하여 웹 서비스 가능

연결된 서버의 IP 주소와 클라이언트가 요청한 호스트 이름의 조합에 따라 다양한 구성 설정 사용 가능

이름 기반의 가상 호스팅이 가능하다 

ex) 네임서버가 각 호스트명이 올바른 IP 주소로 대응하도록 가상 호스트 설정, 하나의 IP 주소를 가지고 여러 호스트에 대해 웹 서비스 제공

IP 기반의 가상 호스팅이 가능

ex) 하나의 아파치 웹 서버에서 물리적인 네트워크 카드에 여러 개의 IP할당, 각 호스트가 서로 다른 IP 주소를 이용할 수 있도록 하는 방식

 

가상 호스트 구성

기본 구성 내에 <VirtualHost>블록을 사용해서 구성한다.

편리한 관리를 위해 /etc/httpd/conf/httpd.conf 내에 정의하지 않고 /usr/shar/doc/httpd-2.4.6/ 디렉토리 내의 템플릿 파일로 구성한다.

가상 호스트 구성 템플릿 파일인 /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf 파일을 이용한다.

해당 파일을 /etc/httpd/conf.d/ 디렉토리 내에 이름을 바꿔서 복사한다

# cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/site1.conf

/etc/httpd/conf.d/site1.conf 파일 정의

<Directory /srv/site1/www> # 아래 정의된 DocumentRoot에 엑세스 가능
Require all granted # 디렉토리를 따로 생성할 것
AllowOverride None
</Directory>
<VirtualHost 192.168.0.1:80> # 블록의 기본 태그, 해당 IP와 포트 고려
DocumentRoot /srv/site1/www # DocumentRoot 정의 가상호스트 내에서만 유효
ServerName site1.example.com # 가상호스트 도메인네임 ServerAlias문이 사용될 수도 있음
ServerAdmin webmaster@site1.example.com # 가상 호스트 관리자의 이메일 주소
ErrorLog "logs/site1_error_log" # 가상호스트 오류 메시지 위치
CustomLog "logs/site1_access_log" combined # 가상 호스트 액세스 메시지
</VirtualHost>

'클라우드 > 리눅스' 카테고리의 다른 글

리눅스 | 데이터 베이스  (0) 2022.03.11
리눅스 | HTTPS (HTTP Secure)  (0) 2022.03.11
리눅스 | DNS 란?  (0) 2022.03.08
리눅스 | 방화벽 (firewall)이란?  (0) 2022.03.07
리눅스 | SSH란?  (0) 2022.03.07
Comments