관리 메뉴

공부공부 공부공부내용

vol2 _ 7 웹서버 (Apache, http) (DNS구축 과정포함) 본문

IT 기초, 네트워크, 리눅스/2. 리눅스 기초 vol2 (kvm 활용한 서비스 관리)

vol2 _ 7 웹서버 (Apache, http) (DNS구축 과정포함)

wkdth04 2020. 6. 4. 12:03

웹 서비스란

 - HTTP 프로토콜에 의해 내용이 전송된다.

 - 일반적으로 80/TCP 포트로 전송된다.  가끔은 8080/tcp  443/tcp(http)

 - 리눅스는 Apache 라는 웹서버를 사용한다.

 

first.cccr.co.kr

<Document>

</Document>

seccond.cccr.co.kr

<Document>

</Document>

 

 

실습은 세가지.

첫번째, 이름기반 가상호스트 (포트 변경도 중간에)

두번째, IP기반 가상호스트

 

<실습>

먼저 서버와 클라이언트 창을 띄우고 서버창에서 명령어를 통해 httpd 패키지를 설치한다.

사전환경설정바꿔보면 *필수

sudo yum install -y httpd    
sudo systemctl enable httpd
sudo systemctl start  httpd

sudo systemctl status  httpd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

아래는 학습과정

cd /var/www/                -> 웹페이지 컨텐츠 디렉토리를 보여준다. 위치 변경도 가능.
cd /etc/httpd/conf            -> 설정 파일들이 있는 곳  ls -al 로 확인
vi httpd.conf
cd conf.d/              -> 설정시 참고하는 컨프파일들

vi welcome.conf
cd ..
cd /usr/share/httpd/          -> ls -> 에러메세지 나타내주는 내용들 들어있음
cd /usr/share/httpd/
vi httpd-manual.conf

vi /etc/httpd/conf/httpd.conf  -> 포트 8080로 바꾸고  (listen부분)
firewall-cmd --add-port=8080/tcp  ->(8080 포트열어주기 기존 80은 서비스열때 자동열림, permanent 영구적으로 하지않을 거라 안함)


vi /etc/httpd/conf/httpd.conf
Document Root  "/var/www.http"  -> "/var/www/html2" 로 바꾸고 그밑에 
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html2"     
<Directory "/var/www/html2">        <----그밑은 여기 
    AllowOverride None
    Require all granted
    Options Indexes FollowSymLinks
</Directory>

echo "hello world" > /home/user/hello.html    <----www밑에 html2디렉토리(생성) 안에 hello 메세지 만들어놓고

Selinux 일단 꺼주기 (위치상관없음)
setenforce 0
getenforce

systemctl restart httpd 
아파치 설정파일도 변경


잘 되는지 http://192.168.122.200:8080/hello.html     웹페이지 뜨나 확인

vi /etc/httpd/conf
sudo cat /etc/passwd | grep "apache"
ps -df | grep httpd 보면 httpd 동작확인가능

yum install psmisc    ->  pstree 깔고  
pstree -a 로 확인     (서비스 동작하는지)

 

 

Dns 서버 구축

sudo yum install bind*           ->  dns 서비스 이용을 위한 bind먼저설치


vi /etc/named.conf 로 들어가서
options {
listen-on port 53 {any; };
listen-on-v6 port 53 {none; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };

firewall-cmd --add-service=dns  ***꼭....
systemctl start named.service    -> 이부분 오류났던 이유 named.conf 파일 오타... 
                    			-> journal -xe 로 확인해서 named-checkconf /etc/named.conf 들어가보니 옵션부분 any와 none 옆에 ';' 안해서,,,** 


(존추가)
zone "20200604.co.kr." IN {
        type master;
        file "data/20200604.co.kr.zone";
};

(empty 내용 붙여넣기->위에 생성한 20200406 파일에)
cp /var/named/named.empty /var/named/data/20200604.co.kr.zone 
 (아까 세컨드하고 퍼스트 등록해주기 위한 작업 /메세지창 두개 주소 )
chmod 754 /var/named/data/20200604.co.kr


vi /var/named/data/20200604.co.kr.zone   -> (First 등록 second 등록)
$TTL 3H
@       IN SOA  ns.20200604.co.kr root.20200604.co.kr. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

@       IN      NS      ns.20200604.co.kr.
        IN      A       192.168.122.200
www     IN      A       192.168.122.200
ns      IN      A       192.168.122.200
first   IN      CNAME   www
second  IN      CNAME   www

systemctl restart named.service
------------------------------------------------------------------

클라이언트
vi /etc/resolv.conf

# Generated by NetworkManager
search cccr.co.kr
nameserver 192.168.122.200
nameserver 8.8.8.8

sudo yum install bind-utils.x86_64
nslookup www.google.com 192.168.122.200
nslookup 20200604.co.kr 192.168.122.200
nslookup first.20200604.co.kr 192.168.122.200
nslookup second.20200604.co.kr 192.168.122.200

 

이름기반 가상호스트 (port기반 가상호스트 도 같이, 원래는 80포트 일반적이지만 8080바꿔본 것,포트부분 생략가능)

[server]
Vi /etc/httpd/conf.d/virtualhost.conf
Virtual host등록
<VirtualHost 192.168.122.200:8080>
	DocumentRoot        “/var/www/html”
	ServerName  	    “first.20200604.co.kr”	  → 들어오는 주소
</VirtualHost>하기

위에 그대로 복사해서  밑에 붙여넣기 일단 그리고 second로 바꿔주기
<VirtualHost 192.168.122.200:8080>
	DocumentRoot        “/var/www/html2”     -> **** html2*****
	ServerName  	    “second.20200604.co.kr”	  → 들어오는 주소
</VirtualHost>


cd /var/www/html
echo “hello” > index.html
cd ..
cd html2/
echo “world” > index.html
systemctl restart httpd.service

후 접근

[client]
sudo yum install curl

DNS 주소 등록
vi /etc/resolv.conf   ->	nameserver 8.8.8.8위에 추가
	# Generated by NetworkManager
	nameserver 192.168.122.200
	nameserver 8.8.8.8

nslookup www.20200604.co.kr 로 확인
curl 로 확인도 해보기
curl first.20200604.co.kr:8080   →> 메세지 hello 뜸
curl world.20200604.co.kr:8080   →> 메세지 world 뜸

<여기까지 방금문제 이름기반 가상호스트→ 금요일 시험에 냄>

 

IP 기반 가상 호스트

firewall-cmd --remove-port=8080/tcp
vi /etc/httpd/conf/httpd.conf
    Listen 80
vi /etc/httpd/conf.d/virtualhost.conf
<VirtualHost 192.168.122.200>
        DocumentRoot    "/var/www/html"
        ServerName      "first.20200604.co.kr"
</VirtualHost>

<VirtualHost 192.168.122.150>
        DocumentRoot    "/var/www/html2"
        ServerName      "second.20200604.co.kr"
</VirtualHost>
nmcli con mod enp0s8 +ipv4.addresses 192.168.122.150/24
nmcli con up enp0s8
systemctl restart httpd
브라우저에 192.168.122.150/index.html 입력 -> world

(예제)

Server에 네트워크 카드 추가

ip 할당 192.168.122.150

ip 기반 가상호스트 실습

 

하드웨어 네트워크카드 추가후 nmcli con add con-name ens9 type ethernet ifname ens9