2018.02.05-18일차 Web Server
* 강사님 강의 노트 :
* Web Server(Apache)
1> 개념
- apache 웹 서버는 공개형 웹 서버 프로그램으로써 다양한 플랫폼에서 동작할 수 있도록 설계가 되어있음
- apache 웹 서버는 클라이언트가 웹 브라우저를 통해서 요청한 데이터를 클라이언트 웹 브라우저로 보내는 역할
다시 말하면, 웹 서버는 클라이언트의 요청을 기다리고 있다가 요청을 받게 되면 해당 데이터를 보내는 프로그램
2> 특징
- standalone (계속 가동중, 요청 기다림)
3> 설정파일
/etc/httpd/conf/httpd.conf
-httpd의 설정파일
31줄 : 웹 서버 설정파일, 바이너리 파일, 로그 파일, 모듈 파일 등이 저장되어 있는 기본 디렉터리를
지정
41줄 : 지정한 IP Address를 80번 포트로 듣겠음
42줄 : 모든 IP Address를 80번 포트로 듣겠음
ex> 포트를 바꾸는 경우는 보통 서버 리뉴얼을 하는 경우 바꿔서 작업하고 작업 완료시 포트를 원래로 바꿔줌
ex> clubbox에 각 메뉴 탭들을 보면 사용하는 web언어와, 포트가 각 메뉴마다 다른 것을 확인 할 수 있다.
=> 41, 42 둘 중 하나만 써야..,
( 참고로 serverTokens 항목이 centOS 6.x이하에는 있었는데 centOS 6에서는 없어짐
ServerTokens
- 오류 및 서버 메시지를 출력되는 서버에 대한 정보를 설정
CentOS 7 에서는 ServerTokens를 사용하기 위해서 별도로 추가를 해야함
ServerSignature on
값의 종류
Full → 아파치 서버 버전, 운영체제 정보, 모듈 정보
OS → 아파치 서버 버전, 운영 체제 정보
Major→ 어퍼차 서버의 주 버전
Min → 아파치 서버의 모든 버전
Minor→ 아차피 서버의 하위 버전
Prod → 아파치 서버의 정보 )
56줄 : 모듈 관련 파일을 httpd.conf 설정파일에 포함하겠음
(ls -l /etc/httpd/conf.modules.d/*.conf # /conf.modules.d 하위에 모든 파일목록)
66, 67줄 : 실행되는 httpd의 사용자 및 그룹 권한을 설정하는 항목
(보안상 nobody로 사용함)
69줄은 서버 설정
86줄: 관리자 e-mail 주소를 적어주는 항목
- 웹 문서 로딩시 에러가 발생 했을 경우 에러 페이지에 보여질 관리자 e-mail 주소를 알려줌
94줄 : 클라이언트에게 보여줄 호스트 네임을 지정하는 항목 만약 DNS가 없을 시 IP Address
입력해야함
101~104줄 : 최상위 디렉터리에 대한 기본 옵션과 권한을 나타내는 설정
AllowOverride 지시자는 어떻게 접근을 허용할 것인지에 대한 설정
Require all denied는 요구하는 모든 것들을 거부하겠음
denied를 granted로 변경하면 허용하겠다라는 의미
118줄 : 관리자의 문서 // index.html 관련
- 서버의 웹 문서가 들어있는 경로를 지정
- 참고로 맨 마지막에 /를 추가하지 않음(dir. 티낼 필요 없음!)
- 심볼릭 링크파일이나 alias로 다른 경로를 가르키도록 설정할 수 있음
다시 말해, 웹 문서가 들어있는 경로
// centOS 6.x 버전대와 달리 centOS 7은 123, 130 라인을 추가해줘야..,
123~127줄은 /var/www 디렉터리에 대해서 별도로 기본 옵션과 권한을 나타내는 설정
130 ~156줄은 /var/www/html 디렉터리에 대해서 기본 옵션과 권한을 나타내는 설정
143줄 : Options 지시자는 지정한 디렉터리 하위에 모든 파일과 디렉터리를 적용할
접근 제어를 설정
Indexes는 URL(Uniform Resource Locator : 자원 위치 지정자)을 지정한 디렉터리에
index.html과 같은 지정한 파일이 없을 경우 해당 디렉터리의 파일 목록을 보여줌
FollowSymLinks는 디렉터리내에서 심볼릭 링크의 사용을 허가함
4> 명령어
web server(apache)
서비스명은 httpd.service
* Web Browser
1> 개념
- 사용자가 웹 서버에게 필요한 데이터를 요청하도록 해주며 웹 서버가 응답하게 되면 데이터를 컴파일을 통해서
사용자에게 보여주는 역할
2> Web Browser의 종류
Windows → Internet Explorer, Edge
Linux → Firefox
Google → Chrome
Apple → Safari
3> 관련 용어
Web Server는 80번 포트를 사용(Well-known)
HTTP(Hyper Text Transfer Protocol)
- WWW(World Wide Web) 상에서 정보를 주고받을 수 있는 프로토콜.
주로 html 문서를 주고받는데 쓰임.
- 클라이언트와 서버 사이에 이루어지는 요청(Request)/응답(Response) 프로토콜.
Web Document(웹 문서 : HTML 문서)
- 웹 문서는 이미지가 포함된 정적인 형태의 html 문서만을 제공함
4> 특징
① 정적 웹 서버의 동작 방식
- 기본적으로 apache 웹 서버는 HTML(HyperText Markup Language)과 같은 정적인 데이터만 처리하게 됨
- 정적이라고 하는 것은 접속 후 데이터를 요청할 때마다 똑같은(변하지 않음) 데이터만 보낸다는 것을 의미
- 호출한 파일을 클라이언트로 가지고 와서 실행함
CSSL(Client Side Script Language) : html, java scripts
- 보안상 취약
- 누구든지 다 볼 수 있음
② 동적 웹 서버의 동작 방식
- 동적인 데이터를 처리하기 위해서 웹 스크립트 언어인 C, ASP(Active Server Page), PHP(Personal
Hypertext Preprocessor), JSP(Pava Server Page), Python, Perl 등
모듈(Module)은 '전체를 다루는 일부'라고 의미를 둘 수 있음
- 프로그램 내부적으로 하나의 종합된 동작을 하도록 작은 부분을 분할함
더 찾아봥~!
- 호출한 파일을 서버에서 실행시켜서 실행 결과 값을 가져옴
- 호출한 파일을 서버에서 실행시켜서 실행 결과 값을 가져옴
SSSL(Server Side Script Language) : asp, php 등등
- 보안상 강함
- 나 혼자 보는 것
(참고로 Linux는 웹 서버는 Apache, FTP 서버는 vsftpd 사용함
Windows Server는 IIS(Internet Information Service)를 사용함
IIS가 웹 서버와 FTP Server를 포함하고 있음)
ex>
사용자들이 naver 요청하면 모두 같은 웹 브라우저를 보게됨 → 정적
여기서 로그인을 하면 모두 다른 화면이 나옴. 나혼자 보는 것→ 동적
인터넷 키면, 웹서버(Apache), DNS, DB 등 같이 구동중..,
// 실습
패키지명은 httpd 설치되어 있는지 유무를 확인
패키지명은 httpd로 시작함
[root@junga ~]# rpm -qa | grep httpd
[root@junga ~]#
[root@junga ~]# yum -y install httpd*
httpd-manual-2.4.6-67.el7.centos.6.noarch
httpd-2.4.6-67.el7.centos.6.x86_64
httpd-tools-2.4.6-67.el7.centos.6.x86_64
httpd-devel-2.4.6-67.el7.centos.6.x86_64
// 2018.02.05
[root@junga ~]# rpm -qa | grep httpd
httpd-manual-2.4.6-67.el7.centos.6.noarch
httpd-2.4.6-67.el7.centos.6.x86_64
httpd-tools-2.4.6-67.el7.centos.6.x86_64
httpd-devel-2.4.6-67.el7.centos.6.x86_64
[root@junga ~]#
[root@junga ~]# ls -l /etc/httpd/conf/httpd.conf
-rw-r--r-- 1 root root 11753 10월 20 01:44 /etc/httpd/conf/httpd.conf
[root@junga ~]#
[root@junga ~]# cp /etc/httpd/conf/httpd.conf /backup
[root@junga ~]#
[root@junga ~]# ls -l /backup/
합계 52
-rwxr-xr-x 1 root root 8702 1월 12 13:06 00_header
-rw-r--r-- 1 root root 501 1월 23 13:14 fstab
-rw-r--r-- 1 root root 5078 1월 12 13:06 grub.cfg
-rw-r--r-- 1 root root 11753 2월 5 12:46 httpd.conf
-rw------- 1 root root 3907 1월 17 14:02 sshd_config
-r--r----- 1 root root 3938 1월 17 13:10 sudoers
-rw------- 1 root root 5030 1월 19 14:47 vsftpd.conf
[root@junga ~]#
[root@junga ~]# vi /etc/httpd/conf
conf/ conf.d/ conf.modules.d/
[root@junga ~]# vi /etc/httpd/conf
conf/ conf.d/ conf.modules.d/
[root@junga ~]# vi /etc/httpd/conf/httpd.conf
[root@junga ~]#
[root@junga ~]# systemctl restart httpd.service
[root@junga ~]#
[root@junga ~]# vi /etc/httpd/conf/httpd.conf
42 Listen 50000
:wq
[root@junga ~]#
[root@junga ~]# systemctl restart httpd.service // 파이어 폭스 킨 후 port 50000번 눌러보기!
[root@junga ~]#
[root@junga ~]# vi /etc/httpd/conf/httpd.conf
43 ServerTokens OS //ServerTokens 관련
44 ServerSignature on
:wq
[root@junga ~]#
[root@junga ~]# systemctl restart httpd.service // 파이어 폭스 킨 후 192.168.46.90/lskjdflksjdflkjsldkf 한 후 에러보기!
[root@junga ~]#
[root@junga ~]#
[root@junga ~]# ls -l /etc/httpd/conf.modules.d/ // 56줄
합계 28
-rw-r--r-- 1 root root 3739 10월 20 01:44 00-base.conf
-rw-r--r-- 1 root root 139 10월 20 01:44 00-dav.conf
-rw-r--r-- 1 root root 41 10월 20 01:44 00-lua.conf
-rw-r--r-- 1 root root 742 10월 20 01:44 00-mpm.conf
-rw-r--r-- 1 root root 957 10월 20 01:44 00-proxy.conf
-rw-r--r-- 1 root root 88 10월 20 01:44 00-systemd.conf
-rw-r--r-- 1 root root 451 10월 20 01:44 01-cgi.conf
94 #ServerName 192.168.46.90:80
:wq
[root@junga ~]# systemctl restart httpd.service
[root@junga ~]# :
[root@junga ~]# touch /var/www/html/index.html
[root@junga ~]#
[root@junga ~]# vi /var/www/html/index.html
Hello~!
Nice to meet you.
:wq
// 파이어폭스> 192.168.46.90 입력 후 확인!
// 118줄 관련 실습(DocumentRoot)
[root@junga ~]# vi /etc/httpd/conf/httpd.conf
101 <Directory />
102 AllowOverride none
103 Require all denied
104 </Directory>
118 DocumentRoot "/web/server/apache"
123 <Directory "/web/server">
130 <Directory "/web/server/apache">
// centos 6.x 버전대와 달리 123, 130 라인을 추가해줘야..,
<실습 2>
www.mybravo.com/hello 도 내용이 나오게 하기
[root@junga ~]# mkdir /web/server/apache/hello
[root@junga ~]#
[root@junga ~]# touch /web/server/apache/hello/index.html
[root@junga ~]#
[root@junga ~]# vi /web/server/apache/hello/index.html
[root@junga ~]#
[root@junga ~]#
// index 목록 보이게 설정
[root@junga ~]# rm -rf /web/server/apache/hello/*
[root@junga ~]#
[root@junga ~]# ls -l /web/server/apache/hello/
합계 0
<실습 1>
web 에 문자 쳤을 때 위에서 한 작업처럼(httpd, /var/www/html/ ~ 글 쓴 내용이 나오도록 DNS 설정)
ns : mylifebravo.com
host name : www. ← 별도로 추가
[root@junga ~]# rpm -qa |grep bind
bind-libs-9.9.4-51.el7_4.2.x86_64
bind-pkcs11-devel-9.9.4-51.el7_4.2.x86_64
keybinder3-0.3.0-1.el7.x86_64
bind-sdb-9.9.4-51.el7_4.2.x86_64
bind-devel-9.9.4-51.el7_4.2.x86_64
bind-pkcs11-libs-9.9.4-51.el7_4.2.x86_64
bind-sdb-chroot-9.9.4-51.el7_4.2.x86_64
bind-pkcs11-9.9.4-51.el7_4.2.x86_64
bind-utils-9.9.4-51.el7_4.2.x86_64
bind-license-9.9.4-51.el7_4.2.noarch
bind-libs-lite-9.9.4-51.el7_4.2.x86_64
bind-lite-devel-9.9.4-51.el7_4.2.x86_64
bind-chroot-9.9.4-51.el7_4.2.x86_64
rpcbind-0.2.0-42.el7.x86_64
bind-dyndb-ldap-11.1-4.el7.x86_64
bind-9.9.4-51.el7_4.2.x86_64
bind-pkcs11-utils-9.9.4-51.el7_4.2.x86_64
[root@junga ~]#
[root@junga ~]# vi /etc/named.conf // (13, 19 => any;)
[root@junga ~]#
[root@junga ~]# vi /etc/named.rfc1912.zones // (25~, 49~; 정방향, 역방향 필요 없음!!!)
[root@junga ~]#
[root@junga ~]# vi
1 $TTL 1W ;
2 @ IN SOA ns.mylifebravo.com. root(
3 2018020500 ; serial
4 6H ; refresh(6 hours)
5 30M ; retry (30 minutes)
6 1W ; expire (1 week)
7 1W ; minimum(1 week)
8 )
9 IN NS ns.mylifebravo.com.
10 IN A 192.168.46.90
11
12 ns IN A 192.168.46.90
13 www IN A 192.168.46.90 // 마지막에 추가후 named.service 재시작
: w /var/named/mylife.for.zone
[root@junga ~]#
[root@junga ~]# ls -l /var/named/mylife.for.zone
-rw-r--r-- 1 root root 249 2월 5 13:48 /var/named/mylife.for.zone
[root@junga ~]# ls -l /var/named/
합계 20
drwxr-x--- 7 root named 61 2월 5 13:42 chroot
drwxr-x--- 7 root named 61 2월 5 13:42 chroot_sdb
drwxrwx--- 2 named named 6 1월 22 22:30 data
drwxrwx--- 2 named named 6 1월 22 22:30 dynamic
drwxrwx--- 2 root named 6 8월 23 22:38 dyndb-ldap
-rw-r--r-- 1 root root 249 2월 5 13:48 mylife.for.zone
-rw-r----- 1 root named 2281 5월 22 2017 named.ca
-rw-r----- 1 root named 152 12월 15 2009 named.empty
-rw-r----- 1 root named 152 6월 21 2007 named.localhost
-rw-r----- 1 root named 168 12월 15 2009 named.loopback
drwxrwx--- 2 named named 6 1월 22 22:30 slaves
[root@junga ~]#
[root@junga ~]# cp /var/named/mylife.for.zone /var/named/mylife.rev.zone
[root@junga ~]# [root@junga ~]# vi /var/named/mylife.rev.zone
1 $TTL 1W ;
2 @ IN SOA ns.mylifebravo.com. root(
3 2018020500 ; serial
4 6H ; refresh(6 hours)
5 30M ; retry (30 minutes)
6 1W ; expire (1 week)
7 1W ; minimum(1 week)
8 )
9 IN NS ns.mylifebravo.com.
10 IN A 192.168.46.90
11
12 90 IN PTR ns.mylifebravo.com.
[root@junga ~]#
[root@junga ~]# ls -l /var/named/
합계 24
drwxr-x--- 7 root named 61 2월 5 13:42 chroot
drwxr-x--- 7 root named 61 2월 5 13:42 chroot_sdb
drwxrwx--- 2 named named 6 1월 22 22:30 data
drwxrwx--- 2 named named 6 1월 22 22:30 dynamic
drwxrwx--- 2 root named 6 8월 23 22:38 dyndb-ldap
-rw-r--r-- 1 root root 249 2월 5 13:48 mylife.for.zone
-rw-r--r-- 1 root root 257 2월 5 13:49 mylife.rev.zone
-rw-r----- 1 root named 2281 5월 22 2017 named.ca
-rw-r----- 1 root named 152 12월 15 2009 named.empty
-rw-r----- 1 root named 152 6월 21 2007 named.localhost
-rw-r----- 1 root named 168 12월 15 2009 named.loopback
drwxrwx--- 2 named named 6 1월 22 22:30 slaves
[root@junga ~]#
[root@junga ~]# chmod 660 /var/named/mylife.for.zone [root@junga ~]# chmod 660 /var/named/mylife.rev.zone
[root@junga ~]#
[root@junga ~]# chown root:named /var/named/m*
[root@junga ~]#
[root@junga ~]# ls -l /var/named/m*
-rw-rw---- 1 root named 249 2월 5 13:48 /var/named/mylife.for.zone
-rw-rw---- 1 root named 257 2월 5 13:49 /var/named/mylife.rev.zone
[root@junga ~]#
[root@junga ~]# named-checkzone mylifebravo.com /var/named/mylife.for.zone
zone mylifebravo.com/IN: loaded serial 2018020500
OK
[root@junga ~]#
[root@junga ~]# systemctl restart named.service
[root@junga ~]#
[root@junga ~]# nslookup
> mylifebravo.com
Server: 168.126.63.1
Address: 168.126.63.1#53
** server can't find mylifebravo.com: NXDOMAIN
> exit
[root@junga ~]#
[root@junga ~]# vi /etc/resolv.conf
3 nameserver 192.168.46.90
[root@junga ~]#
[root@junga ~]# nslookup
> mylifebravo.com
Server: 192.168.46.90
Address: 192.168.46.90#53
Name: mylifebravo.com
Address: 192.168.46.90
> exit
[root@junga ~]#
[root@junga ~]# vi /etc/httpd/conf/httpd.conf
[root@junga ~]#
[root@junga ~]# ls -l /var/www/html/
합계 4
-rw-r--r-- 1 root root 26 2월 5 13:31 index.html
[root@junga ~]#
[root@junga ~]#
[root@junga ~]# vi /var/named/mylife.for.zone
[root@junga ~]#
[root@junga ~]# systemctl restart named.service
[root@junga ~]#
[root@junga ~]# vi /etc/resolv.conf
[root@junga ~]#
[root@junga ~]# nslookup
> www.mylifebravo.com
Server: 192.168.46.90
Address: 192.168.46.90#53
Name: www.mylifebravo.com
Address: 192.168.46.90
> exit
[root@junga ~]#
DNS 복습~!!!
'BigData_Off1 > 리눅스2' 카테고리의 다른 글
2018.02.07-20일차 DB (0) | 2018.02.07 |
---|---|
2018.02.06-19일차 Web Server2 (0) | 2018.02.06 |
DNS 2(slave DNS), Web Server (0) | 2018.02.02 |
2018.01.30 ~ 02.02-14-17일차 DNS(개념, 실습1-4) (0) | 2018.01.30 |
Autofs 2(① autofs 2nd, ② 실습1) (0) | 2018.01.29 |