- HTTP ( Hypertext Transfer Protocol )
- 웹 서버 ( Web Server )
-웹서버의 종류
- Apache
아파치 공식 홈페이지 : http://www.apache.org
현재는 일반적인 웹서버로 광범위하게 사용중이다.
- Web server 구성
프로그램: httpd-2.2.3-31 httpd-manual system-config-httpd
데몬 & 포트 & 프로토콜: /usr/sbin/httpd, 80, TCP( Stateless TCP)
설정 파일: /etc/httpd/conf/httpd.conf
하위 설정 파일: /etc/httpd/conf.d/*.conf
스크립트: /etc/init.d/httpd
실습
# rpm -qa | grep httpd
# grep http /etc/services | more
# cd /etc/httpd/conf
# ls -l
합계 52
-rw-r--r-- 1 root root 33726 7월 19 2016 httpd.conf
-rw-r--r-- 1 root root 13139 7월 19 2016 magic
-> Server에 아파치 버전 정보가 나온다 이러한 정보는 해킹할때 유용하게 쓰이므로 안보이도록 설정하는 것이 좋다.
- 사용자를 위한 웹 기본 설정
|
.... 중략 ..... <IfModule mod_userdir.c> # # UserDir is disabled by default since it can confirm the presence # of a username on the system (depending on home directory # permissions). # #UserDir disable /* 주석 추가 */ # # To enable requests to /~user/ to serve the user's public_html # directory, remove the "UserDir disable" line above, and uncomment # the following line instead: # UserDir public_html /* 주석 제거 */ </IfModule> .... 중략 ..... |
|
# service httpd restart
# firefox http://www.linux.example.com/~user01 &
|
# # Aliases: Add here as many aliases as you need (with no limit). The format is # Alias fakename realname # # Note that if you include a trailing / on fakename then the server will # require it to be present in the URL. So "/icons" isn't aliased in this # example, only "/icons/". If the fakename is slash-terminated, then the # realname must also be slash terminated, and if the fakename omits the # trailing slash, the realname must also omit it. # # We include the /icons/ alias for FancyIndexed directory listings. If you # do not use FancyIndexing, you may comment this out. # Alias /icons/ "/var/www/icons/" Alias /user01/ "/home/user01/public_html/" /* 추가 */ |
|
# service httpd restart
# firefox http://www.linux.example.com/user01/
-> /~user01 과 같은 페이지가 나옵니다.
- 아파치 웹서버 ( Apache Web Server )
|
..............중략............. # # ServerAdmin: Your address, where problems with the server should be # e-mailed. This address appears on some server-generated pages, such # as error documents. e.g. admin@your-domain.com # ServerAdmin root@linux.example.com # # ServerName gives the name and port that the server uses to identify itself. # This can often be determined automatically, but we recommend you specify # it explicitly to prevent problems during startup. # # If this is not set to valid DNS name for your host, server-generated # redirections will not work. See also the UseCanonicalName directive. # # If your host doesn't have a registered DNS name, enter its IP address here. # You will have to access it by its address anyway, and this will make # redirections work in a sensible way. # ServerName www.linux.example.com:80 ..........중략............... |
|
# service httpd restart
# lynx http://www.linux.example.com /* 확인 */
- CGI(Common Gateway Interface)
웹서버(정보 제공)와 클라이언트(정보 이용)간에 필요한 정보 교환을 가능하가 해 주는 일종의 웹인터페이스이다.
클라이언트가 서버에게 실행시켜달라고 요청함
CGI 제작 도구 -> PHP, PERL, PYTHON, etc
(실습구조)
http://www.linux.example.com ------------------------> /www1/index.html
http://www.linux.example.com/cgi-bin/test.cgi -------> /www1/cgi-bin/test.cgi
# mkdir /www1
# vi /www1/index.html
<H1><CENTER> www1 (linux:/www1) </CENTER></H1>
# vi /etc/httpd/conf/httpd.conf
|
..........중략............ #<VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com # DocumentRoot /www/docs/dummy-host.example.com # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common #</VirtualHost> NameVirtualHost 192.168.17.120:80 <VirtualHost 192.168.17.120:80> ServerAdmin root@linux.example.com DocumentRoot /www1 ServerName www.linux.example.com <Directory /www1> Options Indexes Includes </Directory> </VirtualHost> |
|
# lynx http://www.linux.example.com (# firefox http://www.linux.example.com )
-> 웹페이지 확인
- ScriptAlias 설정
# vi /etc/httpd/conf/httpd.conf
|
.....중략..... NameVirtualHost 192.168.17.120:80 <VirtualHost 192.168.17.120:80> ServerAdmin root@linux.example.com DocumentRoot /www1 ServerName www.linux.example.com <Directory /www1> Options Indexes Includes </Directory> ScriptAlias /cgi-bin/ /www1/cgi-bin/ /* 추가 */ </VirtualHost>
|
|
/* cgi 파일 작성 */
# mkdir /www1/cgi-bin
# vi /www1/cgi-bin/test.cgi
|
#!/bin/bash echo "Content-Type: text/html" echo "" echo "<pre>" echo "My username is : " whoami echo "" echo "My id is : " id echo "" echo "</pre>" |
|
# chmod 555 /www1/cgi-bin/test.cgi /* 실행권한 추가 */
[참고] Perl 스크립트 사용 | |||
① 펄(perl) 설치 확인 # rpm -q mod_perl
-> 설치가 안되어 있으면 설치한다.
② perl 스크립트를 사용하기 위한 주 설정 파일 설정 및 변경 사항 적용 # vi /etc/httpd/conf.d/perl.conf
-> perl.conf 파일의 가장 마지막 페이지에서 설정한다.
# service httpd restart -> 서비스 재 시작
③ /var/www/perl/test.pl 펄 스크립트 파일 생성 및 실행 권한 부여 # mkdir -p /var/www/perl # vi /var/www/perl/test.pl
# chmod 755 /var/www/perl/test.pl #
④ 확인 # firefox http://www.linux2XX.example.com/perl/test.pl |
[참고] PHP 스크립트 사용 | ||
① PHP 설치 확인 # rpm -q php
-> 설치가 안되어 있으면 설치한다.
② /www1/phpinfo.php 파일 생성 # echo "<?php phpinfo(); ?>" > /www1/index.php
③ 확인 # firefox http://www.linux2XX.example.com/index.php
④ 새로운 PHP 스크립트 생성 # vi /www1/test.php
⑤ 확인 # firefox http://www.linux2XX.example.com/test.php |
|
AuthName "restricted stuff" AuthType Basic AuthUserFile /etc/httpd/conf/mypasswd require valid-user |
|
-> /etc/httpd/conf/httpd.conf 파일에 AllowOverride 설정이 되어 있으면, 특정한 웹페이지에 대해서 사용자 인
증을 할 수 있다.
[참고] AllowOverride 설정 | |
옵 션 | 설 명 |
AuthConfig | 인증 방법 명령을 사용할 수 있으며, AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require 등을 쓸수 있다. |
Fileinfo | AddEncoding, AddLanguage, AddType, DefaultType, LanguagePriority 명령을 사용할 수 있도록 한다. |
Indexes | AddDescription, Addlcon, AddlconByEncoding, AddlconByType, Defaultlcon, Directorylndex, Fancylndexing, HeaderName, lndexlgnore, lndexOptions, ReadmeName 등 디렉토리 인텍싱 관리 명령을 사용할 수 있다. |
Limit | 서버 접근을 제어할 수 있는 allow, deny, order 명령을 사용할 수 있다. |
[참고] .htaccess 파일안에 사용할 수 있는 인증 지시자 | |
지시자 | 설 명 |
AuthType | 인증 타입은 Basic, Diget가 있지만, 현재 Basic만 지원한다. |
AuthName | 인증 영역에 대한 이름을 지정하는 지시자. 클라이언트의 웹 브라우저에 전달 되어 유저 인증 윈도우 내의 영역에 표시되며 주의할 점은 영역 이름을 기입할 때 스페이스가 들어가서는 안된다. 만일 영역 이름에 스페이스가 들어 갈 때는 반드시 큰 따옴표로 묶어 주어야 한다. |
AuthUserFile | 인증 사용자와 패스워드를 가진 패스워드 파일을 지정하는 지시자. 사용자 인증 패스워드 파일을 지정할 때 슬래쉬가 없는 경우, 즉 디렉토리르 지정하지 않으면 서버 루트 디렉토리를 기본으로 한다. |
AuthGroupFile | 인증 사용자들의 그룹 파일을 지정하는 지시자. 그룹 지정 형식은 그룹: 유저1 유저2 유저3 ... 같이 그룹과 유저 사이를 콜론으로 구분하고 유저와 유저는 스페이스로 띄어 구분한다. 디렉토리를 지정할 경우 서버 루트가 기본 디렉토리로 동작하게 된다. |
require user | 지정한 유저만 디렉토리 접근을 허용한다. |
require valid-user | 패스워드 인증이 올바르게 된 사용들만 접근을 허용한다. |
require group | 지정한 그룹에 있는 유저들만 디렉토리 접근을 허용한다.` |
|
........중략 ............... NameVirtualHost 192.168.17.120:80 <VirtualHost 192.168.17.120:80> ServerAdmin root@linux.example.com DocumentRoot /www1 ServerName www.linux.example.com <Directory /www1> Options Indexes Includes AllowOverride AuthConfig </Directory> ScriptAlias /cgi-bin/ /www1/cgi-bin/ </VirtualHost> |
|
# httpd -t /* 문법 확인 */
# service httpd restart
# firefox http://www.linux.example.com
- 가상 호스트 설정 ( Virtual Hosting )
-Virtual Hosting 종류
이름 기반 가상 호스트(Name-based Virtual Hosting) -> 이름이 다르면 다른 페이지
IP 기반 가상 호스트(IP-based Virtual Hosting) -> 아이피 요청에 따라서 다른 페이지
포트 기반 가상 호스트(Port-based Virtual Hosting) -> 포트번호 다르면 다른 페이지
혼합된 형태(Mixed Virtual Hosting
|
NameVirtualHost 192.168.17.120:80 <VirtualHost 192.168.17.120:80> ServerAdmin root@linux.example.com DocumentRoot /www1 ServerName www.linux.example.com <Directory /www1> Options Indexes Includes AllowOverride AuthConfig </Directory> ScriptAlias /cgi-bin/ /www1/cgi-bin/ </VirtualHost> <VirtualHost 192.168.17.120:80> ServerName www1.linux.example.com DocumentRoot /www1 </VirtualHost> <VirtualHost 192.168.17.120:80> ServerName www2.linux.example.com DocumentRoot /www2 </VirtualHost> <VirtualHost 192.168.17.120:80> ServerName www3.linux.example.com DocumentRoot /www3 </VirtualHost> |
|
# httpd -t
# service httpd restart
# lynx http://www1.linux.example.com
# lynx http://www2.linux.example.com
# lynx http://www3.linux.example.com
|
eth0 Link encap:Ethernet HWaddr 00:0C:29:D0:C3:B5 inet addr:192.168.17.120 Bcast:192.168.17.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fed0:c3b5/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6736 errors:0 dropped:0 overruns:0 frame:0 TX packets:3307 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8298662 (7.9 MiB) TX bytes:330796 (323.0 KiB) Interrupt:75 Base address:0x2024 eth0:1 Link encap:Ethernet HWaddr 00:0C:29:D0:C3:B5 inet addr:192.168.17.121 Bcast:192.168.17.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:75 Base address:0x2024 eth0:2 Link encap:Ethernet HWaddr 00:0C:29:D0:C3:B5 inet addr:192.168.17.122 Bcast:192.168.17.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:75 Base address:0x2024 |
|
# vi /etc/httpd/conf/httpd.conf
|
....중략..... <VirtualHost 192.168.17.120:80> ServerName www1.linux.example.com DocumentRoot /www1 </VirtualHost> <VirtualHost 192.168.17.121:80> ServerName www2.linux.example.com DocumentRoot /www2 </VirtualHost> <VirtualHost 192.168.17.122:80> ServerName www3.linux.example.com DocumentRoot /www3 </VirtualHost> |
|
# httpd -t
# service httpd restart
# lynx http://192.168.17.120
(복윈)
- 가상 인터페이스 삭제
# rm -f ifcfg-eth0:1 ifcfg-eth0:2
# service network restart
- httpd.conf 가상 호스트 설정 삭제
- 서버의 상태 / 통계 모니터링
|
..........중략........... # # Allow remote server configuration reports, with the URL of # http://servername/server-info (requires that mod_info.c be loaded). # Change the ".example.com" to match your domain to enable. # <Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from 192.168.17.120 </Location> ......중략........... |
|
-> 주석 제거
# service httpd restart
# firefox http://www.linux.example.com/server-info
# vi /etc/httpd/conf/httpd.conf
|
..........중략............... # # Allow server status reports generated by mod_status, # with the URL of http://servername/server-status # Change the ".example.com" to match your domain to enable. # <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 192.168.17.120 </Location> .............중략.............. |
|
-> 주석 제거
# service httpd restart
# firefox http://www.linux.example.com/server-status
- 서버의 사용량 확인
# cat /etc/httpd/conf.d/webalizer.conf
|
# # This configuration file maps the webalizer log analysis # results (generated daily) into the URL space. By default # these results are only accessible from the local host. # Alias /usage /var/www/usage <Location /usage> Order deny,allow Deny from all Allow from 127.0.0.1 Allow from ::1 # Allow from .example.com </Location> |
|
# firefox http://localhost/usage &
'Linux > Linux Network' 카테고리의 다른 글
MAIL Server (0) | 2017.09.13 |
---|---|
FTP (0) | 2017.09.13 |
DNS_2 ( Master DNS / Slave DNS ) (0) | 2017.09.11 |
DNS_1 ( 도메인 부하분산, 도메인 위임 ) (0) | 2017.09.08 |
이더채널 본딩 ( Ether Channel Bonding ) (0) | 2017.09.07 |