hoon's bLog

네트워크 및 서비스의 활용 | 네트워크 서비스 1 본문

IT/Linux Master 1급

네트워크 및 서비스의 활용 | 네트워크 서비스 1

개발한기발자 2023. 3. 10. 01:12
반응형

웹 관련 서비스

웹 관련 서비스의 이해

웹의 개요

  • WWW(World Wide Web)
  • 인터넷에 연결된 컴퓨터들을 통해 문서나 정보를 공유할 수 있도록 구성한 정보 공간이자 서비스
  • 인터넷상에서 정보를 하이퍼텍스트 방식과 멀티미디어 환경에서 검색할 수 있는 정보검색 시스템
  • 웹 브라우저라고 부르는 프로그램을 이용해서 탐색
  • HTML이라는 태그를 이용해서 만듦

웹 서비스 구성 요소

웹 서버

  • 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아 정보제공자가 작성한 웹 페이지나 웹 문서를 전달하는 역할을 수행
  • 아파치, IIS, Nginx, GWS, Cherokee, Lighttpd 등이 있음
  • 로그 관리, 인증, 가상 호스팅, 대용량 파일 지원, 대역폭 제한 등의 기능

웹 문서

웹 서버 프로그램에서는 동적인 페이지를 생성하여 클라이언트에서 송신하는 것이 불가능했기 때문에 이를 구현하기 위해 서버 프로그램과 외부 프로그램을 연계할 방법이 필요. 이 역할을 하는 프로그램을 CGI라 부름. (C, 펄, 파이썬, PHP, ASP, JSP, 자바 서블릿 등)

웹 브라우저

  • 웹 서버 통신하면서 HTML 문서나 파일을 연동하고 출력하는 응용 프로그램
  • 웹 서버와의 HTTP 프로토콜로 통신, 웹 페이지들은 주소처럼 이용되는 URL로 접근
  • Firefox, Opera, Chrome

파이어폭스

  • 모질라 재단에서 개발
  • 게코 레이아웃 엔진을 사용

오페라

  • 오페라 소프트웨어 ASA에서 개발
  • 탭 브라우징 기능, 스피드 다이얼 기능 최초로 선보임

크롬

  • 웹 키트 레이아웃 엔진을 이용해서 개발

웹 작동원리

  • HTTP 클라이언트는 HTTP 서버에 요청 방식, URI, 프로토콜 버전, MIME(Multipurpose Internet Mail Extensions) 등을 전송
  • HTTP 서버는 클라이언트의 요구에 대해 데이터, 실제 자료, 상태 코드 등으로 응답

주요 HTTP 요청 메서드

  • GET : 자료 요청
  • POST : 정보 저장 요청
  • HEAD : 헤더 정보만 요청
  • PUT : 서버에 자료 올림
  • DELETE : 서버의 자료 삭제

HTTP 응답

1xx : Informational

  • 100 : Continue
  • 101 : Switching Protocols

2xx : Successful

  • 200 : OK
  • 201 : Created
  • 202 : Accepted
  • 203 : Non-Authoritative Information
  • 204 : No Content
  • 205 : Reset Content
  • 206 : Partial Content

3xx : Redirection

  • 300 : Multiple Choices
  • 301 : Move Permanently
  • 302 : Moved Temporarily
  • 303 : See Other
  • 304 : Not Modified
  • 305 : Use Proxy

4xx : Client Error

  • 400 : Bad Request
  • 401 : Unauthorized
  • 402 : Payment Required
  • 403 : Forbidden
  • 404 : Not Found
  • 405 : Method Not Allowed
  • 406 : Not Acceptable
  • 407 : Proxy Authentication Require
  • 408 : Request Time-out
  • 409 : Conflict
  • 410 : Gone
  • 411 : Length Required
  • 412 : Precondition Failed
  • 413 : Request Entity Too Large
  • 414 : Request-URI Too Large
  • 415 : Unsupported Media Type

5xx : Server Error

  • 500 : Internal Server Error
  • 501 : Not Implemented
  • 502 : Bad GateWay
  • 503 : Service
  • 504 : Gateway Time-out
  • 505 : HTTP Version not supported

웹 관련 서비스의 운영

웹 서버 설치의 개요

  • Apache는 초기의 웹 서버인 NCSA httpd를 기반으로 패치해서 만듦
  • LAMP(Linux + Apache + MySQL + PHP) 연계해서 사용

Apache HTTP 서버와 PHP

  • 아파치 서버에 PHP 문서가 해석될 수 있도록 장착되는 것을 모듈

정적모듈

  • PHP가 아파치에 완전히 고정되므로 처리속도가 빠름
  • 아파치나 PHP 업데이트 시에 두 가지 프로그램을 다시 설치

동적 모듈

  • DSO 방식
  • 모듈이나 라이브러리를 언제든지 적재
  • 현재는 이 방식만 사용

Apache 2.x의 개요

  • 멀티스레딩의 지원
  • MPM(Multi-Processing Module)
  • 확장성에 초점을 두고, 하이브리드 웹 서버를 표방
  • prefork, worker 모듈을 많이 사용함

Apache, PHP, MySQL 연동 설치

Apache HTTP Server 설치하기

  1. 웹 데몬 정지 : killall httpd
  2. 이전 버전의 httpd 검색 및 삭제 : rpm -e httpd --nodeps
  3. 소스 파일의 압축을 품 : tar jxvf httpd-2.2.32.tar.bz2
  4. 압축이 풀린 후 생성된 디렉터리로 이동
  5. 환경 설정 : ./configure --prefix=/usr/local/apache --enable-mods-shared=all
  6. 컴파일 : make
  7. 설치 : make install

MySQL 설치하기

  1. MySQL 데몬 정지
  2. 이전 버전의 MySQL 검색 및 삭제
  3. 소스 파일 압축 풀기
  4. 디렉터리 이동
  5. 환경 설정 및 컴파일 : cmake . ~
  6. 설치
  7. 기본 관리 데이터베이스 생성
  8. mysql 데몬 생성
  9. 클라이언트 프로그램을 이용하여 mysql 서버에 접근
  10. root 패스워드 변경 : 'alter user' 구문 사용, 'flush privileges' 명령으로 권한 정보를 갱신

PHP 설치하기

  1. 웹 데몬 정지
  2. 이전 버전의 php 검색 및 삭제
  3. 소스 파일 압축을 품
  4. 디렉터리로 이동
  5. 환경 설정
  6. 컴파일
  7. 설치
  8. php.ini 파일 복사
  9. 아파치 웹 서버가 php 확장자를 가진 파일을 해석할 수 있도록 httpd.conf 파일에 설정
    $ vi /usr/local/apache/conf/httpd.conf
    AddType application/x-httpd-php .php .htm .html. inc .php5
    AddType application/x-httpd-php-source .phps
  10. 아파치 데몬 재시작
    $ /usr/local/apache/bin/apachectl restart

Apache 2.2 디렉터리 구조

  • bin : 데몬, 실행 유틸리티
  • build : 스크립트
  • cgi-bin : cgi 스크립트
  • include : 헤더파일

Apache 2.2 웹 서버 설정

Apache 2.2 웹 서버 설정의 개요

- 서버 운영에 필요한 최소한의 설정만 httpd.conf 파일에서 하고, 나머지 설정은 extra 디렉터리 안에 위치한 여러 파일들을 이용

extra 디렉터리 안의 파일

httpd-

  • mpm.conf : MPM(멀티 프로세스 모듈) 관련 설정
  • multilang-errordoc.conf : 에러 처리 문서에 대한 설정
  • autoindex.conf : 디렉터리 목록을 표시 설정
  • userdir.conf
  • info.conf : 웹 브라우저를 이용하여 웹 서버의 상태 정보를 파악
  • vhosts.conf
  • dav.conf : WebDAV(Web-based Distributed Authoring and Versioning). 웹 기반 저작 및 버전 관리
  • default.conf : 서버 운영의 기본적인 설정
  • languages.conf
  • manual. conf
  • ssl.conf

httpd 명령을 이용한 실행

[사용법]
$ /usr/local/apache/bin/httpd [option] filename

옵션

  • -t : httpd.conf 문법적 오류 검사
  • -f : 새로 설정한 conf 파일로 아파치 데몬을 구동
  • -S : 설정되어 있는 가상 호스트를 출력
  • -l : 컴파일된 모듈에 대한 목록을 출력

스크립트 파일을 이용한 실행

apachectl이라는 데몬 실행 제어 스크립트를 이용

[사용법]
$ apachectl [command]

command

  • help
  • start
  • stop
  • restart
  • configtest : httpd.conf 파일에 대한 문법적 오류를 검사
  • graceful : 연결을 끊지 않고, httpd.conf 설정만 읽어 들임
  • status, fullstatus : 상태를 간단히, 전체적으로 출력. mod_staus라는 모듈이 설치되어 있어야 하고, httpd.conf의 영역이 설정되어 있어야 함.

부팅 시 자동 실행되게 설정하기

- /etc/rc.d/rc.local 파일에 등록

Apache 웹 서버 작동 확인

httpd.conf 설정

/usr/local/apache/conf/httpd.conf 파일 설정

  • ServerName
  • DocumentRoot : HTML 문서 위치 경로
  • DirectoryIndex : 처음으로 인식하는 인덱스 문서

웹 문서 만들기

- httpd.conf 파일의 DocumentRoot 항목에서 확인한 디렉터리인 /usr/local/apache/htdocs에 index.html 파일을 간단히 생성

웹 데몬 시작하기

- apachectl 명령 사용. 실행 유무 확인(ps aux | grep httpd)

웹 브라우저로 확인하기

- 웹 브라우저로 확인 (URL : localhost)

개인 사용자 홈페이지 사용 설정하기

httpd.conf 설정

- 주석 처리 제거.

httpd-userdir.conf 설정

  • /usr/local/apache/conf/extra/httpd-userdir.conf 파일에서 사용자가 생성한 디렉터리 및 접근 제어 등의 설정.
  • UserDir 항목으로 기본 값은 public_html.

아파치 웹 데몬 재시작

- /usr/local/apache/bin/apachectl start

개인 사용자의 설정

  • 홈 디렉터리 내에 지정된 디렉터리인 public_html를 생성하고, 이 안에 index.html 만듦.
  • 이후 외부 사용자가 홈 디렉터리로 들어올 수 있도록 권한 설정.

웹 브라우저로 확인하기

http://호스트명/~사용자아이디

Apache 웹 접근 통제

  • 접근 통제가 필요한 경우에는 클라이언트의 IP 주소나 도메인에 대해 Order, Allow, Deny 지시자를 이용해서 제어할 수 있다.
  • Order는 Aloow 및 Deny 지시자의 순서를 지정하는데, 콤마로만 분리해야 하고, 중간에 공백이 들어가서는 안됨

[사용법]
Order Deny, Allow
Deny from 주소
Allow from 주소

Deny 지시자가 Allow 지시자보다 먼저 검사 되는데, 보통 대부분의 접근을 막고, Allow 지시자가 지정한 주소만 접속을 허가할 때 사용

Order Allow, Deny
Allow from 주소
Deny from 주소

Allow 지사자가 Deny 지시자보다 먼저 검사. 보통 대부분의 접근을 허가하고, Deny 지시자에 지정한 사용자만 접속을 거부할 때 사용

Order Mutual-failure
Allow from 주소
Deny from 주소

Allow 지시자에 있고, Deny 지시자에는 없는 호스트만 접근을 허용

Apache 사용자 인증

HTTP는 기본적으로 사용자 인증을 하지 않지만, 아파치 웹 서버에서는 특정 웹 페이지에 대해 다음과 같은 절차를 통해 사용자 인증을 할 수 있음

  1. 사용자 생성 및 사용자 계정 파일 생성
    $ htpasswd -c /etc/password posein
  2. httpd.conf 파일에 인증할 디렉터리 관련 설정
  3. 인증할 디렉터리에 관련 정보를 담고 있는 .htaccess 파일 생성

.htaccess 지시자

  • AuthType : 인증 형태(Basic, Digest)
  • AuthName : 인증 창에 표시되는 메시지
  • AuthUserFile : 사용자 계정 파일명
  • Require : 접속을 허가할 사용자를 설정. 전부 허가는 'Require Valid-user', 특정 계정만 허가 시 'Require user posein yuloje' 형태

관련 명령어 : htpasswd

아파치 사용자 인증 파일을 생성, 관리함

[사용법]
$ htpasswd [option] 계정 파일 사용자명

옵션

  • -c : 생성 시 한번 무조건 사용해야 하는 옵션

부가서비스와 연동

PHP와 연동

php 설치 여부 확인

  • php 모듈 설치 확인 : 'libphp5.so', /usr/local/apache/modules 디렉터리
  • httpd.conf 파일에 libphp5.so를 동적 모듈로 불러들이기 위한 LoadModule 지시자 설정이 되어있는지 확인
  • php의 정보제공 함수를 사용해서 확인. test.php(testinfo()) 생성 후 웹 브라우저로 확인

MySQL과 연동

기타 다른 서비스와의 연동

  • 최근에는 웹 애플리케이션 서버라 하여 HTTP 프로토콜 기반으로 특정 시스템에서 애플리케이션을 수행해 주는 미들웨어를 많이 사용.

WAS의 기본 기능

  • 프로그램 실행 환경 및 데이터베이스 접속 기능
  • 여러 개의 트랜잭션을 관리
  • 비즈니스 로직을 수행
  • Java EE 표준을 수용(자바의 기본적인 기능을 정의한 Java SE + 웹 서버 역할을 추가한 것)

웹 모듈은 자바 서블릿 또는 JSP로 구성. 비즈니스 모듈은 EJB(Enterprise Java Beans)로 구성

WAS 종류

  • Java EE 표준 준수 : Oracle 웹 로직, IBM 웹 스피어, 티맥스소프트의 제우스, 레드헷의 제이보스, Caucho의 레진, Apache의 Apache Tomcat
  • 기타 : .NET, 애플리케이션 서버, Zend의 Zend Server

웹 서버 암호화

  • SSL(Secure Layer Security)은 넷스케이프사에서 개발한 것으로 사용자인증과 웹서버의 데이터 및 콘텐츠를 암호화하는 수단.
  • 아파치 웹 서버에서 SSL을 사용하기 위해서는 mod_ssl 모듈을 이용. 이 모듈은 v2, v3, 확장 표준화한 TLS도 지원

SSL/TLS 동작 원리

  • 3-way handshake 후에 비밀키를 생성
  • 공개키는 단말의 신원 인증과 대칭키 교환에 사용
  • 메시지 무결성은 MAC(Message Authentication Code)에 의해 제공

SSL/TLS 주요 기능

  • 사설접속과 데이터 암호화
  • 서버에 통신하는 단말 인증
  • 신뢰된 접속 보장
  • 추가 443 포트 사용(https)
  • 전송 계층 암호화 방식이기 때문에 SMTP, FTP, NNTP, XMPP 등 다른 응용 계층 프로토콜에서도 사용 가능
728x90
반응형