728x90
반응형
728x90
반응형

대부분 아파치 톰캣을 이용해서 웹 서버를 띄우고 개발을 진행을 합니다.

아파치와 톰캣이 무엇인지 알기 위해서 WEB과 WAS에 대해서 알아야합니다.

 

WEB Server HTML 문서같은 정적 컨텐츠를 처리하는 것입니다. (HTTP 프로토콜을 통해 읽힐 수 있는 문서)

클라이언트가 GET, POST 등의 메소드를 이용해 요청 하면 프로그램이 결과를 돌려주는 기능을 합니다.

WAS Server asp, php, jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리하는 것입니다.

DB와 연결되어 데이터를 주고 받거나 프로그램으로 데이터 조작이 필요한 경우 사용합니다.

apache web server(html) 이고

tomcat Servlet/JSP container = WAS(Web Application Server)

아파치는 jsp처리를 못하기 때문에 jsp를 받아서 톰캣에서 처리하고 다시 아파치로 넘겨주는 작업을 합니다.


웹 컨테이너란 웹 서버에서 JSP를 요청해 톰캣에서 JSP파일을  서블릿으로 변환하여 컴파일하여 서블릿의 결과를 웹서버의 전달하는 것입니다.


출처 : http://gap85.tistory.com/45


*정적 컨텐츠와 동적 컨텐츠의 차이

 

 장점

단점 

 정적 컨텐츠

 *요청에 의한 파일만 전송하면 되기 때문에 속도가 빠르다. 

 *비용이 적다.

 *저장된 정보만 보여 줄 수 있기 때문에 서비스가 제한적이다.

 *관리가 힘들다.

 동적 컨텐츠

 *데이터의 조작이 가능하기 때문에 서비스가 다양하다.

 *관리가 쉽다.

 *정적 컨텐츠에 비해 속도가 느리다.

 *WAS서버가 필요하기 때문에 추가적인 비용이 든다.


출처: http://titus94.tistory.com/4

728x90
반응형

'프로그래밍 > Web' 카테고리의 다른 글

아파치 버전 확인하는 방법  (0) 2022.10.21
HTTP란 무엇인가??  (0) 2017.12.15
JSP 처리과정!!  (0) 2017.11.30
서버와 클라이언트 생활코딩 강의  (0) 2017.07.14
728x90
반응형

25. 인터넷, 네트워크 그리고 서버

25.1 Internet

프로그램을 설치하고 명령어를 실행하는 것도 중요하지만 인터넷, 네트워크, 서버의 기초를 이해하는 것이 더 중요하다고 합니다. 내 컴퓨터에서 url주소를 google.com을 입력하고 enter를 치면 서버에서는 내 컴퓨터에 구글 화면을 전송하여 뜨게 해줍니다. 인터넷은 request와 response를 주고 받는 것이라고 할 수 있는데요.

예를 들어 클라이언트 컴퓨터에 게임 프로그램을 설치해 게임의 내용이 게임 회사의 서버로 전송하게 됩니다. 게임 회사의 서버를 게임 서버라고 부르며 채팅 프로그램이 깔려있다면 채팅 서버라고 부릅니다.

인터넷에 google.com을 입력하면 구글 홈페이지가 나옵니다. 이를 Domain name이라고 부릅니다. 

IP주소를 입력해봅시다.

ping google.com 리눅스에 ip주소를 검색하는 명령어입니다. 결과는 172.21.25.78이 나오는데 이를 IP(Internet Protocol) adress라고 부릅니다. 구글에 접속하는 방법은 2가지가 되겠네요. 도메인에 google.com을 입력하는 것과 172.21.25.78을 입력하는 방법이 있습니다. 2가지 방법이 있는 이유는 예를 들어 설명해보겠습니다. 친구와 통화를 하기 위해서는 전화를 걸어야합니다. 전화를 거는 방법에도 2가지가 있는데요. 번호를 입력하는 것을(IP address)과 전화번호부에 이름을 검색하여 전화하는 방법(domain name)이 있습니다. 친구가 1명이라면 번호를 외우기 쉽겠지만 모든 번호를 외우는 것은 불가능하죠. 

여기서 또 문제가 있습니다. 내가 IP주소를 저장한 적이 없음에도 불구하고 172.21.25.78주소가 구글 홈페이지라는 것을 알 수 있는 이유는 무엇일까요?

바로 DNS(Domain Name System)때문입니다. DNS는 이 세상의 모든 도메인이 각각 어떤 IP주소를 갖는 지 알 수 있는 거대한 전화번호부와 같습니다.

IP주소를 입력하게 되면 컴퓨터가 DNS서버에 접속하여 자신의 데이터를 찾아서 내 컴퓨터에 구글 IP주소를 알려줍니다.

친구를 자신의 집으로 초대할 때 자신의 주소를 알아야만 다른 사람이 찾아올 수 있는 것과 같은 개념입니다.



25.2 Internet2

서버 운영하는 법에 대해 구체적으로 알아보겠습니다.

ip addr : 자신의 ip주소를 알 수 있는 명령어입니다.

 컴퓨터에 누군가 접속하기 위해  10.0.2.15주소로 접속하면 방문할 수 있다는 의미죠.

 GUI방식에서는 도메인에 ipinfo.io/ip를 입력하면 자신의 IP주소가 뜹니다.

curl ipinfo.io/ip : 역시 IP주소를 알려주는 명령어입니다.

두 개의 명령어 결과가 다른 이유는 ip addr은 컴퓨터의 실제 IP주소이고 

curl은 온라인 서비스 입장에서 자신에게 접속한 IP주소이기 때문입니다.



집은 장비마다 통신사가 별도의 계약을 체결을 하여 인터넷을 사용합니다. 

각각의 장비마다 다른 IP주소를 부여하게 되면 편리하지만 비용이 비싸다고 합니다.



비용 절감을 위해 통신사와 집은 하나의 회선만 계약을 하고 공유기(router)라는 장치를 통해 연결합니다.

통신사가 갖는 IP주소는 router가 갖게 됩니다. 각각의 장비들은 통신을 위해서는 IP주소가 반드시 필요하죠.

대표 router의 대표IP주소(Public Address)를 통해 각각의 장비(lap top, TV, Desktop, smart phone)가 IP주소(Private Address)를 갖게 됩니다.

서버 컴퓨터로 사용하기 위해서는 public address와 private address의 주소가 같아야 합니다. 대부분의 사용자들의 컴퓨터들은 같지 않기 때문에 서버 컴퓨터로 사용할 수 가 없습니다. 하지만 방법은 있다고 합니다.

예를 들어 설명을 해보겠습니다. 회사에는 대표 번호가 있어 대표 번호를 통해 각 부서에 연결을 시켜줍니다.

부서의 번호를 내선 번호라고 하죠. 대표 번호가 없이도 내선 번호끼리 통화를 할 수 잇습니다. 컴퓨터 역시 외부 컴퓨터가 접속할 수 없어도 라우터 간 컴퓨터는 접속할 수 있습니다.



26. 웹 서버(Apache)

26.1 apache intro

Web Server는 1대의 제한에서 벗어나 전세계 모든 사람들에게 내 컴퓨터에 접속해 정보를 제공하는 효과를 줍니다.

클라이언트가 index.html을 찾으려는 요청이 들어오면 웹 서버(apache, nginx, iis)는 저장 장치(ssd, hdd) 어딘가에 있는 index.html파일을 읽어 웹 브라우저(ie, firefox, chrome)에게 응답합니다.


26.2 apache install

 · super apt-get install apache2 : 아파치 웹 서버 프로그램을 설치

 · sudo service apache2 start : 아파치 웹 서버 프로그램 시작
 · sudo service apache2 stop : 아파치 웹 서버 프로그램 종료
 · sudo service apache2 restart : 아파치 웹 서버 프로그램 재시작
 · sudo apt-get install elinks : elinks 웹 브라우저 프로그램을 설치
 · elinks ->google.com -> q를 통해 빠져 나올 수 잇습니다.



 · elinks http://10.0.2.15/ : Ubuntu logo Apache2가 나오면 성공적으로 설치되어 잘 접속되었다는 의미입니다.

웹 서버의 주소를 알기 위해 ip addr명령어를 사용하였는데 이 외에도 자신의 컴퓨터로 접속하는 방법으로 localhost가 있습니다. 현재 1대의 컴퓨터에서 Web Browser와 Web Server가 서로 정보를 주고 받는 것을 진행하였습니다. 

WB를 통해 WS에 접속할 때 ip addr명령으로 서버의 IP주소를 알아내어 접속하는 것도 방법이지만 localhost(127.0.0.1) 자기 자신의 컴퓨터를 가리키는 주소입니다.



26.3 apache configuration

 · cd /etc : etc디렉토리로 이동, 여러 가지 동작 방법 설정들이 저장되어 있습니다.

 · cd apache2/ : etc/apache2로 이동, apache2에 대한 설정 파일이 있습니다.

 · nano apache2 : 설정 파일에 대한 설명이 있으며, 

sites-enabled/*.conf는 sites-enabled디렉토리 안 conf파일을 모두 읽는 다는 의미입니다.

 · ls -al : apache2프로그램의 파일 목록을 보여줍니다. sites-enabled 디렉토리 파일이 있습니다.


 · cd sites-enabled : sites-enabled디렉토리로 이동합니다.

 · ls -l : 000-default.conf파일이 있습니다.

 · nano 000-default.conf : /var/www/html 디렉토리가 있습니다.

 · cd /var/www/html : 디렉토리로 이동합니다.

 · ls -al : index.html 파일이 있습니다.

 · elinks http://10.0.2.15/index.html : index.html파일로 이동합니다.



 · sudo nano helloserver.html : helloserver.html편집기로 이동합니다.

 · 간단한 <html><body>hello server! hello killershin!</body></html>문법을 입력합니다

 · ctrl+x -> y 저장을 합니다.

 · elinks http://10.0.2.15/helloserver.html : 웹 브라우저(elinks)의 helloserver.html요청에 웹 서버(아파치)가 응답합니다.



26.4 apache.log

 · cd /var/log/apache2/ : apache2 디렉토리로 이동합니다

 · ls -al : access.log파일과 error.log파일이 위치합니다.

 · tail -f /var/log/apache2/access.log : 파일의 끝에 있는 정보만 출력, -f는 파일에 대해 실시간으로 끝에 정보를 추가시켜주는 옵션


27. 원격제어 (SSH)

27.1 SSH Intro

리눅스가 집중받는 이유는 서버 사용자 중 압도적인 다수가 리눅스를 사용하기 때문입니다.

IOT 사물 인터넷 안에 설치되어 있는 운영체제는 리눅스라고 합니다. 사물 인터넷은 인터넷을 통해 다루는 컴퓨터

자신의 컴퓨터를 통해 인터넷 너머에 있는 원격 제어를 해야 하는 경우에 SSH를 사용합니다. 대표적으로 팀 뷰어 프로그램이 있죠. 원격 제어를 하면 인터넷만으로 컴퓨터를 다룰 수 있습니다.

SSH client server관계는 Web client server관계와 일치한다고 합니다.



27.2 SSH2

sudo apt-get purge openssh-server openssh-client : ssh 강력한 삭제 명령어

sudo ssh apt-get install openssh-server openssh-client : ssh-server카테고리

sudo service ssh start : ssh 시작

sudo ps aux | grep ssh : 현재 실행 프로세스 중에 ssh 보여주게 된다.

ssh egoing@192.168.0.255 : 다른 컴퓨터에 입력 egoing컴퓨터로 접속한다.




생활코딩 리눅스 강의

728x90
반응형

'OS > Linux' 카테고리의 다른 글

리눅스 명령어 이해하기10!!  (0) 2017.09.02
리눅스 명령어 이해하기9!!  (0) 2017.09.01
리눅스 명령어 이해하기7!!  (0) 2017.08.30
리눅스 명령어 이해하기6!!  (0) 2017.08.29
리눅스 명령어 이해하기5!!  (0) 2017.08.28
728x90
반응형

14. 프로세스

14.1 컴퓨터의 구조

CPU(중앙처리장치) : Processor

RAM(메모리) : 가격이 비싸다 | 용량이 작다 | 속도가 빠르다

HDD, SSD, SD(Storage, 저장장치) : 가격이 싸다 | 용량이 크다 | 속도가 느리다

프로그램은 storage에 저장되어 실행을 할 때는 프로그램을 읽어 메모리에 적재시킵니다.

실행되지 않는 프로그램은 메모리에 올라가지 않겠죠.

메모리에 올라온 상태의 프로그램을 cpu가 읽어 동작하여 데이터를 처리합니다.

즉, CPU가 빠르기 때문에 느린 storage를 이용할 수 없기 때문에 빠른 메모리에 필요한 프로그램을 적재하여 사용하는 것입니다. 이것이 컴퓨터 시스템이 갖고 있는 기본 아키텍쳐(설계)입니다.

프로세스 : 프로그램을 실행하면 메모리에 적재되어 cpu(프로세서)에 의해 처리되는 것들이 실행되고 있는 상태



14.2 프로세스 모니터링 (ps, top, htop)

프로세스 리스트를 살펴보는 방법에 대해 알아보겠습니다.

 · ps : 프로세스 리스트를 보여주는 명령어입니다.

 · ps aux : 백그라운드에서 돌아가는 수많은 프로그램을 보여주는 명령어입니다.

 · ps aux | grep apache : apache를 포함하는 프로세스를 화면에 출력합니다.

PID는 프로세스 아이디로 각각에 프로세스마다 식별자를 갖습니다. 

 · sudo kill 1347 : 강제로 프로그램을 종료시키는 명령어입니다.

 · sudo top : 작업관리자 화면으로 각각의 항목이 프로세스 리스트입니다.

 · sudo htop : top보다 시각적으로 그래피컬한 프로그램입니다.

load average : 프로세스 점유율을 1분간, 5분간, 15분간 평균치를 나타냅니다.

CPU의 숫자에 따라 load average숫자가 갖는 의미가 다를 수 있습니다.

f10은 나가기, f4는 특정 프로세스 확인



15. 파일을 찾는 법

15.1 locate와 find

파일의 위치 찾는 방법에 대해 알아보겠습니다.

파일은 데이터를 보관하기 위한 용도와 실행파일로 구분 됩니다.

 · locate [파일명] : [파일명]과 일치하는 파일들을 찾아 줍니다.

locate *.log : 확장자가 로그로 끝나는 파일을 모두 찾아줍니다.

find는 실제 디렉토리를 검색하여 찾아줍니다. 현재 상태를 가져올 수 있습니다.

find usage (find 사용법)

 · find --help | head : find 도움말의 한 줄만 출력하는 명령어

find / : 루트 디렉토리부터 찾겠다 find . : 현재 디렉토리부터 찾겠다.

 · find / -name *.log : 컴퓨터에 있는 모든 디렉토리를 뒤져 log라는 파일을 찾는다.

permission denied 권한이 없다고 뜨면

 · sudo find /-name *.log

 · find -type f -name "tecmint.txt" -exec rm -rf {} \; : 현재 머물고 있는 디렉토리에 파일에서 tecmin.txt를 찾아 삭제를 실행하라는 의미를 갖습니다.


15.2 whereis와 $PATH

 · whereis : 실행파일을 찾아주는 명령어입니다.

 · whereis ls : /bin/ls는 빈 디렉토리 밑에 있다 /usr/share/man/ma1/ls.1.gz ls메뉴얼 정보의 위치를 알려줍니다.

 · Echo $PATH : 선택한 정보가 path라고 담겨있는 정보, : 을 통해 경로가 구분되어 있습니다.

$PATH는 리눅스가 기본적으로 갖고 있는 변수로 환경변수라고 부릅니다.



16. 백그라운드 실행

여러 개의 일을 한 화면에 진행하는 것을 멀티 태스팅(Multitasking)이라고 합니다.

리눅스 유닉스 계열에서도 Background, foreground를 바꿀 수 있는데요.

 · nano : 나노 에디터 편집기가 나타납니다.

<html>

<body></body>

</html>

ctrl+0 저장 후 -> hello.html 이라는 html파일을 생성합니다.

여기서 프로그램을 종료하지 않고 다른 작업을 할 수 있는 방법이 있습니다.

 · ctrl+z를 누르면 프로그램이 꺼진 것 같지만 꺼지지 않고 다른 작업을 진행 하도록 하는 기능입니다.

 · fg : foreground의 약자로 hello.html이 다시 켜집니다.

 · jobs : 백그라운드 작업들의 목록을 보여줍니다.  nano, vim이라는 프로그램이 백그라운드로 실행되고 있네요.

vim : nano와 경쟁관계에 있는 에디터 입니다.

 · fg %[번호] : 번호 프로그램이 foreground 프로그램이 실행됩니다.

fg %2 : 2번 프로그램이 foreground 프로그램이 실행됩니다.



 · kill $4 : 4번 프로그램을 강제 종료시키는 명령어입니다.

 · kill -9 $4 : kill보다 강력한 명령어로 기능은 동일합니다.

 · ls -R / > result.txt 2> error.log : 실행된 결과가 result. txt에 저장, 에러가 난다며 error.log에 저장하는 명령어

 · ls -alR / > result.txt 2> error.log & : 만약 1-2시간 걸리는 작업의 명령어라면 &를 입력하고 작업을 진행하다 보면

exit라는 출력 메시지가 뜨면서 작업이 완료되었음을 알려줍니다. 



17. 항상 실행 (daemon, service)

17.1 데몬의 개념

Daemon : 사전적으로 반신반인의 의미를 가집니다. 데몬은 항상 실행되고 있다는 특징을 가집니다.

ls, mkdir, rm프로그램은 데몬이 아니라 필요할 때 키고 필요가 없다면 끌 수 있는 프로그램입니다.

예를 들어 설명하자면

컴퓨터, 전자레인지, 티비는 항상 켜져 있지 않은 반면에

모뎀, 도어락, 냉장고는 항상 켜져 있는 상태이죠 이를 데몬이라고 합니다.

리눅스에서도 데몬이 있는데요. 바로 server로 불리는 프로그램입니다.

클라이언트    인터넷    서버

서버는 언제 클라이언트(웹 브라우저)가 접속할지 모릅니다.

따라서 서버(웹 서버)는 카운트 파트너로 항상 켜져 있습니다. = daemon 또는 service라 부릅니다.


17.2 service와 자동실행

웹 서버 중 대표적인 예로 apache가 있습니다.

 · sudo apt-get install apache2 : apache2 프로그램을 설치합니다

 · cd /etc/init.d/ : apache2 프로그램이 위치하고 있습니다, 데몬 프로그램들이 위치하는 디렉토리입니다.

 · ls : apache2 apache2가 설치되었음을 알 수 있습니다.

 · sudo service apache start : 아파치2 프로그램을 실행하는 명령어입니다.

 · ps aux : 현재 실행 중인 프로세스 리스트입니다.

 · ps aux | grep apache2 : 아파치가 실행되고 있음을 알 수 있습니다.

 · sudo service apache stop : 아파치2 프로그램을 종료하는 명령어입니다.

데몬은 컴퓨터가 실핼될 때 자동으로 실행되고 있어야합니다. 언제나 실행되고 있어야 하죠.

/etc/rc3.d/링크 : CLI방식

/etc/rc5.d/링크 : GUI방식

s는 시작 k는 종료를 의미합니다.

./S02apache2 : 프로그램이 없음에도 불구하고 아파치를 구동시키는 명령어입니다.





생활코딩 리눅스 강의



728x90
반응형

'OS > Linux' 카테고리의 다른 글

리눅스 명령어 이해하기7!!  (0) 2017.08.30
리눅스 명령어 이해하기6!!  (0) 2017.08.29
리눅스 명령어 이해하기4!!  (2) 2017.08.27
리눅스 명령어 이해하기3!!  (0) 2017.08.26
리눅스 명령어 이해하기2!!  (4) 2017.08.25
728x90
반응형

+ Recent posts