일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 카카오
- 리눅스
- 명령어
- 개발자 회고록
- 백준 javascript
- 문자열
- 프로그래머스
- java 백준 1차원 배열
- 연습문제
- GoingBus
- toCharArray
- 리눅스마스터 1급 정리
- map
- 자바
- 리눅스마스터 3과목
- 스프링 빈
- 월간코드챌린지
- 자바스크립트 코딩의 기술
- Memoir
- 고잉버스
- 코테
- JavaScript
- 스프링 컨테이너
- 코딩테스트
- Kotlin
- 리눅스마스터1급
- 반복문
- Linux
- 백준 java
- Java
- Today
- Total
hoon's bLog
네트워크 및 서비스의 활용 | 네트워크 서비스 1 본문
웹 관련 서비스
웹 관련 서비스의 이해
웹의 개요
- 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 설치하기
- 웹 데몬 정지 : killall httpd
- 이전 버전의 httpd 검색 및 삭제 : rpm -e httpd --nodeps
- 소스 파일의 압축을 품 : tar jxvf httpd-2.2.32.tar.bz2
- 압축이 풀린 후 생성된 디렉터리로 이동
- 환경 설정 : ./configure --prefix=/usr/local/apache --enable-mods-shared=all
- 컴파일 : make
- 설치 : make install
MySQL 설치하기
- MySQL 데몬 정지
- 이전 버전의 MySQL 검색 및 삭제
- 소스 파일 압축 풀기
- 디렉터리 이동
- 환경 설정 및 컴파일 : cmake . ~
- 설치
- 기본 관리 데이터베이스 생성
- mysql 데몬 생성
- 클라이언트 프로그램을 이용하여 mysql 서버에 접근
- root 패스워드 변경 : 'alter user' 구문 사용, 'flush privileges' 명령으로 권한 정보를 갱신
PHP 설치하기
- 웹 데몬 정지
- 이전 버전의 php 검색 및 삭제
- 소스 파일 압축을 품
- 디렉터리로 이동
- 환경 설정
- 컴파일
- 설치
- php.ini 파일 복사
- 아파치 웹 서버가 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 - 아파치 데몬 재시작
$ /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는 기본적으로 사용자 인증을 하지 않지만, 아파치 웹 서버에서는 특정 웹 페이지에 대해 다음과 같은 절차를 통해 사용자 인증을 할 수 있음
- 사용자 생성 및 사용자 계정 파일 생성
$ htpasswd -c /etc/password posein - httpd.conf 파일에 인증할 디렉터리 관련 설정
- 인증할 디렉터리에 관련 정보를 담고 있는 .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 등 다른 응용 계층 프로토콜에서도 사용 가능
'IT > Linux Master 1급' 카테고리의 다른 글
네트워크 및 서비스의 활용 | 네트워크 서비스 3 (2) | 2023.03.11 |
---|---|
네트워크 및 서비스의 활용 | 네트워크 서비스 2 (3) | 2023.03.10 |
리눅스 시스템관리 | 시스템 및 보안 관리 (1) | 2023.03.09 |
리눅스 시스템관리 | 장치관리 (0) | 2023.03.08 |
리눅스 시스템관리 | 일반 운영관리 3 (4) | 2023.03.08 |