나의 IT일지
WEB 서버(HTTP) 본문
서버는 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 프로그램으로, 이러한 서비스를 제공받는 프로그램을 클라이언트라고 한다. 쉽게 말하면, 서비스를 제공하는 프로그램이 설치되어 있는 운영체제는 서버, 서비스를 제공받는 프로그램이 설치되어 있는 운영체제를 클라이언트라고 한다.
- web: apache, IIS(windows에서만 사용)
- mail : sendmail, postfix, qmail
- name : BIND
- FTP: vsftpd, proftp, wu_ftp
- telnet: telnet
- SSH : ssh
- DB : MySQL, MariaDB
- etc : NFS, SAMBA ....
위의 리스트는 서버 프로그램을 기능별로 구분한 것으로, 해당 프로그램을 개별적으로 운영체제에 다운로드해야 하며, 설치하면 클라이언트에게 해당 기능을 제공할 수 있다.
서버 관련 명령어들 |
yum -y install 프로그램 : 프로그램을 설치하는 명령어 systemctl [ start / stop / restart ] [데몬] : 프로그램을 실행, 정지, 재시작하는 명령어 systemctl [ enable / disable] [데몬] : 운영체제를 부팅할 때, 프로그램 활성화, 비활성화 하는 명령어 setenforce [ 0 / 1 ] : SELinux(linux의 자체적으로 가지고 있는 커널기반 방화벽)을 비활성화 / 활성화하는 명령어 |
HTTP
우리가 사용하는 인터넷 브라우저는 웹 클라이언트로, http를 이용하여 클라이언트가 데이터를 요청하고 서버가 요청 데이터에 대해서 응답한다.
이때, http란 클라이언트와 서버사이의 Hyper Text를 전송하기 위해서 사용되는 통신규약(프로토콜)으로, 클라이언트에서 HTTP관련 요청데이터를 전송하면 서버는 Hyper Text가 포함된 응답 데이터를 전송하게 된다.
web서버와 클라이언트의 데이터 요청/응답방식은 다음과 같다.
- 클라이언트가 http를 기반으로 데이터를 요청하는 요청 데이터를 만든다.
- TCP나 UDP를 기반으로, 80번 포트를 사용해서 서버의 IP주소에 전달이 된다.
- 요청데이터를 받은 서버는 http를 기반으로 응답 데이터를 만든다.
- TCP나 UDP를 기반으로, 80번 포트를 사용해서 클라이언트의 IP주소에 전달이 된다.
웹 프록시 |
클라이언트와 서버사이에 있는 서버로, 클라이언트가 데이터를 요청하면 클라이언트의 데이터가 직접 서버에 접근하는 것이 아닌 프록시가 대신해서 데이터를 웹에게 전달하며, 웹에게 받은 응답데이터를 프록시가 대신 전달한다. 프록시가 응답데이터를 클라이언트에게 전달할 때, 해당 응답데이터는 프록시의 캐시에 저장을 하게 된다. 그래서 다음에 서버에게 요청할 경우 프록시가 대신 데이터를 전송하기 때문에, 주로 서버의 부하를 줄이기 위해 사용한다. |
URL
URL은 인터넷에서 웹 페이지, 이미지, 비디오 등 리소스의 위치를 가리키는 HyperText로, 다음과 같이 구성되어 있다.
scheme://host.domain:port/url-path?query
- scheme(protocol) : 사용할 프로토콜, 웹에서는 http 또는 https를 사용, ftp는 ftp을 사용, 텔넷은 telnet을 사용
- host, domain, port : 서버의 호스트명, 도메인명, 포트번호
- url-path : 서버의 경로에 있는 파일의 경로 상세 정보, 사용자가 구축할 웹사이트에 접근할 때 해당 위치에 "~[유저명]"를 사용해서 접근 가능
- query(parameter) : 웹 서버에 전달할 추가적인 정보, 데이터베이스에 고유 번호로 데이터를 저장하기에 고유번호를 지정함으로써 해당 데이터를 호출
URL, URI, URN |
- URL (uniform resource locator) : 데이터의 위치와 통신방법을 나타내는 지시자 protocol + host + domain + port + url-path |
- URI (uniform resource identifier) : 데이터를 식별하기 위한 식별자 protocol + host + domain + port + url-path + parameter |
- URN (uniform resource name) : 데이터의 위치와 데이터를 특정하는 이름 host + domain + port + url-path + parameter |
Apache 서버
Apache서버는 Windows운영체제에서만 사용할 수 있는 IIS서버와는 달리, 모든 운영체제에서 사용하는 HTTP 웹 서버로, 클라이언트 프로그램(Edge, Chrome, Firefox)에 http를 이용한 URL의 입력을 통해 웹서버에 있는 사용자가 구현할 웹사이트에 접근이 가능하다.
Apache 프로그램의 데몬, 환경설정파일
- 데몬 : httpd
- 홈 디렉터리 : /var/www/html
- 환경설정 파일
- 주 환경파일 : /etc/httpd/conf/httpd.conf
- 보조 환경 디렉토리 : /etc/httpd/conf.d/
- log파일 : access_log , error_log (서버에 접속 흔적을 나타내는 파일)
프로그램설치
- yum -y install httpd* : HTTP 웹 서버인 Apache 프로그램을 설치하는 명령어
방화벽 해제
"HTTP"를 사용하기 위해서는 클라이언트가 HTTP서버에 접근해야 하는데, 접근하기 위해선 서버 운영체제의 방화벽을 해제할 필요가 있다. 만약 방화벽이 설정 되어있으면, 방화벽에 HTTP 포트가 설정되어 있지 않아서 해당 포트로 서버에 접근이 불가능하게 된다.
- systemctl stop firewalld : 방화벽을 정지시키는 명령어
- setenforce 0 : SELinux(linux의 자체적으로 가지고 있는 커널기반 방화벽)을 비활성화하는 명령어
WebServer 실행
WebServer의 파일에 내용 추가,수정을 했을 경우, 해당 파일의 내용을 적용하기 위해서, 서버를 재실행 해야 한다.
- systemctl restart httpd : 웹 서버 프로그램을 실행하는 명령어
해당 데몬을 실행한 뒤, DNS서버에 있는 도메인이나 IP주소를 검색하면 다음과 같은 웹사이트가 나타난다.
위의 웹사이트는 웹 서버의 IP주소를 통해 접속한 웹 사이트로, 주 환경파일(/etc/httpd/conf/httpd.conf)의 환경설정에 따라 서버의 홈 디렉토리에 있는 "index.html"파일을 통해 사이트를 구축한다.
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
서버 쪽 index.html 파일 | 클라이언트 쪽 웹 사이트 |
사용자 웹사이트 구축
웹 서버에 사용자를 만들어서 해당 사용자의 웹 사이트를 구축하는 것으로 여러 웹사이트를 구축할 수 있다.
계정 생성
- 계정 생성 : useradd [사용자명]
- 계정 디렉토리에 'public_html'디렉토리 생성 : mkdir public_html
- 계정 디렉토리와 하위 디렉토리의 허가권을 755로 변경 : chmod 755 [계정디렉토리] -R
[root@localhost home]# ll
합계 2
drwx------. 3 apchtest apchtest 78 4월 3 07:50 apchtest
drwx------. 15 test test 4096 4월 2 05:57 test
[root@localhost home]# cd apchtest
[root@localhost apchtest]# mkdir public_html
[root@localhost apchtest]# cd ..
[root@localhost home]# chmod 755 apchtest -R
[root@localhost home]# ll
합계 2
drwxr-xr-x. 4 apchtest apchtest 97 4월 3 07:55 apchtest
drwx------. 15 test test 4096 4월 2 05:57 test
[root@localhost home]# cd apchtest
[root@localhost apchtest]# ll
합계 0
drwxr-xr-x. 2 root root 6 4월 3 07:55 public_html
사용자 웹 환경설정 수정
유저가 웹사이트를 구축하기 위해서는 사용자 웹 환경설정파일(/etc/httpd/conf.d/userdir.conf)에서 해당 내용을 다음과 같이 수정해야 한다. (UserDir disable 주석처리, UserDir public_html 주석해제)
<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 disabled
#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disabled" line above, and uncomment
# the following line instead:
#
UserDir public_html
</IfModule>
이제 사용자의 홈디렉토리에 있는 "public_html"디렉토리에 "index.html"파일을 만들어서 내용을 작성하면, 작성한 내용이 해당 웹 사이트에 사용할 수 있게 된다.
index.html 파일 | 웹 사이트 |
가상 호스트 등록
사용자의 웹 사이트로 접근하기 위해서는 도메인 "test.co.kr/~[유저명]"로 접근이 가능하다. 그렇다면 해당 도메인을 윈하는 도메인으로 바꿔서 사용자의 웹사이트에 접근할 수 없는 것일까? 가상도메인을 사용하면 가능하다.
가상 호스트이란, 하나의 서버 IP주소에 여러개의 도메인을 사용할 수 있도록 하는 기능으로, 하나의 웹 서버에 원하는 도메인을 추가함으로써, 해당 도메인으로 사용자 웹 사이트로 접근할 수 있다.
도메인 등록
원하는 도메인을 사용하기 위해서는 DNS서버에 원하는 도메인을 서버IP주소로 등록해야 한다.
/etc/named.rfc1912.zones 파일 | /var/named/apchtest.co.kr.zone 파일 |
가상 호스트 구축
웹 서버의 보조환경 디렉토리인 "/etc/httpd/conf.d/"디렉토리에 가상 호스트 설정파일인 "vhost.conf"파일을 생성하고 해당 내용을 추가한다.
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName test.co.kr
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/apchtest/public_html
ServerName apchtest.co.kr
</VirtualHost>
- DocumentRoot : 웹 사이트의 홈디렉토리 지정
- ServerName : 웹 사이트의 도메인명 지정
위처럼 지정을 하고 DNS와 HTTP를 재시작한 뒤, 웹 클라이언트에 지정한 도메인명으로 접속하면 사용자 웹사이트로 접속되는 것을 확인 할 수 있다.
'운영체제 > Linux - CentOs' 카테고리의 다른 글
메일 시스템 (0) | 2023.04.10 |
---|---|
데이터 베이스 관리 서버(DBMS) (0) | 2023.04.09 |
도메인 네임 시스템(DNS) (0) | 2023.04.02 |
동적 IP 할당 서버(DHCP) (0) | 2023.03.27 |
파일 전송 시스템(FTP) (0) | 2023.03.26 |