리눅스 - 아파치

김민재·2021년 7월 21일
1

Gotcha Linux!

목록 보기
17/22

apache 웹서버 - intro


웹 서버를 리눅스에 설치하면 컴퓨터는 그 한 대의 제한에서 벗어나서
전 세계에 있는 웹 브라우저가 있는 사람이라면 내 컴퓨터에 접속해서 갖고 있는 정보를 제공할 수 있게된다.

인터넷은
클라이언트 또 하나는 서버로 이루어져 있다
클라이언트는 서버에게 요청을 그리고 서버는 클라이언트에게 응답한다. 즉, 요청하고
응답하는 과정을 통해서 정보를 클라이언트가 요청하면 서버는 정보에 응답하는 것이다.

컴퓨터를 클라이언트 정보를 요청하는 걸로 쓰기 위해서는 이 클라이언트 컴퓨터에는
웹 브라우저가 깔려 있어야하고 웹 브라우저에 google.com/index.html이라고 입력하면
웹 브라우저가 구글닷컴에 해당되는 컴퓨터에 index.html 을보고싶다는 요청을 한다. 그러면 서버 컴퓨터에는 웹 서버라고 하는 프로그램 중의 하나가 깔려 있어야 된다. 웹 서버라는 프로그램은 항상 켜져 있다가 이 요청이 들어오면 그 요청을 분석한다.

그러면 이 웹 서버는 컴퓨터에 연결되어 있는 하드디스크 또는 SSD 와 같은 저장 장치의 어딘가에 붙어 있는 Index.html 이 파일을 읽어서 가져온 다음에 그것을 Response를 웹 브라우저에게 해준다.

웹브라우저는 Index.html 파일의 내용을 해석해서 거기에 적혀 있는 대로 웹 브라우저의 본문에 표시해준다.

웹브라우저에 제품에 Firefox,Internet Explorer,Chrome 이런 것들이 있듯이 웹 서버 역시도 웹서버에 속하는 구체적인 소프트웨어로 Apache, Nginx, IIS와 같은 여러 제품들이 존재한다.

웹브라우저가 우리의 웹서버에 접속할 수 있게 하려면 웹서버 컴퓨터에 접속할 수 있는
주소를 알려줘야하는데 주소는 크게 도메인과 IP 어드레스가 있다.

apache 웹서버 - instal

아파치 설치가 끝나면 sudo service apache2 start는 웹서버를 키는 명령어
sudo service apache2 stop 하면 꺼진다. 만약에 껐다 켜야될 때는 restart를
하면 된다.

sudo htop하여 실행중인 프로그램들 리스트들이 화면에 표시가 되는데요
F4 Filter를 눌러 apache라고 검색하면 아파치라고 하는 프로그램이 많이뜨는데 이는
apache 같은 경우는 웹 서버로 많은 접속이 들어올 수 있는 독특한 프로그램이기 때문에
많은 접속이 들어왔을 때 그 접속을 분산해서 처리하기 위해서 여러 개의 아파치 웹서버가 자동으로 실행이 된다.

웹 서버에 접속하는 가장 간단한 방법은 셸에서 직접 웹 서버에 접속하는 겁니다.
셸에서 여러분이 웹 브라우징을 할 수 있는 프로그램들이 몇가지가 있는데 그 중의 하나인,
sudo ap-get install elinks, 이링크스라고 하는 프로그램을 설치한다.

설치되면 그 다음에 elinks라고 입력하고 엔터를 치면 url을 물어보는 화면이 나온다.
다시 화면에서 빠져나와 elinks 하고 http://10.0.2.15 나의 ip주소를 입력해주면
Ubuntu Apache2라는 내용의 글이 나오면 성공적으로 접촉한 것이다.

여러분이 자신의 컴퓨터에 접속할 수 있는 또 다른
방법이 로컬호스트

우리가 실습 하고 있는 환경은 한 대의 자기 컴퓨터가 있고 그 한 대의 컴퓨터 안에
웹서버를 깔고, 또 이 한 대의 컴퓨터 안에 웹 브라우저를 깔아서 이 컴퓨터 안에서
자신의 웹 서버에 리퀘스트(요청)을 보내고 리스폰스(응답)를 보내는 이런 식으로 우리가 실습를 진행을 했다.


웹 브라우저 입장에서는 웹 서버가 같은 컴퓨터이기에 ip말고도 자신이 설치되어 있는, 서버 컴퓨터에 존재하는 웹 서버에 접속한다라고 하는 주소가 로컬호스트이다. 127.0.0.1과 같은 것이다.

127.0.0.1은 자기 자신을 가리키는 ip이다. 이 ip는 언제나 바뀌지 않고 언제나 존재한다. ip addr 명령을 실행시킨 컴퓨터의 자체의 ip이다.
자기 자신을 가르킬 때 사용하는 약속되어 있는 특수한 ip address가 127.0. 0.1이다.
도메인 네임도 마찬가지로 똑같은 의미를 가지고 약속되어 있는 것이 localhost이다.

밑에 있는 10.0.2.15 ip는 어떤 네트워크에 접속했느냐에 따라 바뀐다.

apache 웹서버 - configuration


웹브라우저로 접속을 하여 서버 컴퓨터에 리퀘스트를 보내면 서버 컴퓨터에 설치되어서 실행되고 있는 프로그램 프로세스에서 웹서버, 아파치가 그것을 받습니다

웹서버는 어떻게 동작하면 그 요청을 받아 웹서버의 스토리지, (저장장치로 하드나
ssd 같은)에 어딘가에 저장되어 있는 요청한 파일을 읽는다.

요청이 들어 왔기 때문에 웹 서버는 어떤 특정한 디렉토리에서 파일을 읽는다. 이 파일을 읽은다음에 웹브라우저에게 답하면 웹브라우저는 파일 안에 저장되어 있는 html 을 해석해서 웹브라우저의 출력하면 이 과정이나 끝난다.


웹서버는 사용자가 요청한 index.html과 같은 파일을 어디에서 읽어 오는 걸까?

자 유닉스 계열에서 어떤 프로그램이 어떻게 동작할 것인가에 대한 그 동작 방법에 대한 설정
들이 etc 라는 곳에 저장된다.
아파치를 apt-get으로 설치를 하게되면
etc 밑에 아파치2하고 탭키를 누르면 아파치2라는 디렉토리에 설정 파일들이 저장이 되어 있다.

이 중에서 가장 중요한 건 apache2.conf 라는 파일이다.
웹브라우저가 접속할때 웹서버는 /etc/apache2 디렉토리 밑에 있는 여러가지 설정 파일들을 참고해서 사용자의 접속이 들어왔을 때 서버 컴퓨터에 어떤 스토리지에서 사용자가 요청한 파일을 뒤질 것인가를 그 설정 파일을 참고해서 뒤진다.
후에 거기에 있는 파일을 읽어서 그것을 웹브라우저 에게 보내주면 이 과정이 끝이난다.

apache2.conf 설정에 지정되어 있었던 /var/www/html 이 디렉토리는 설정을 바꾸면 다른 곳으로 이동시킬 수 있다. 이렇게 웹브라우저가 사용자가 요청한 파일을 찾는 최상위 디렉토리를 문서의 다큐먼트 루트라고 부르며 이는 웹 페이지를 찾는 최상위 디렉토리를 의미한다.

apache 웹서버 4 - log

/var/www/html란 디렉토리에 있는 파일을 웹서버가 찾아서 사용자의 요청에 대해서 응대 하는데 /var/www/html 디렉토리를 웹 서버가 사용하는 이유는 /etc/apache2/sites- enabled/000-default.conf 파일에 다큐먼트 루트가 /var/www/html라고 적혀있기 때문이다.

환경 설정, 설정 파일, 설정 컴필레이션, 컴 피그 이렇게 부르는 것들 모두 어떤 서버를 쓰건 간의 대부분 서버들은 etc 라는 디렉토리 밑에 자신의 이름으로 설정 파일이 있고 그 파일을 수정하면 동작하는 방식이 달라진다.

설정 파일에 보면 에러로그와 어세스 로그가 있는데 이건 아파치 웹서버가 동작할 때 잘 동작하는지 혹은 오류가 있는지를 확인할 때 아파치 로그 디렉토리로 지정된 특정한 디렉토리 아래에 있는 에러 점 로그 파일과 엑세스 전 로그 파일에 사용자가 관심 있어 할 만한 정보를 기록하겠다는 뜻의 내용이다.

access.log 파일은 누군가가 웹 서버에 접속할 때마다 그 파일의 끝에 접속한 사람의 정보가 추가되는데 이를 실시간으로 확인하고 싶을 때는 tail 명령을 쓰면 이 파일의 끝에 있는 정보만 출력하게 되고 추가로 -f 란 옵션을 주면 파일에 대해서 실시간으로 끝에 추가되는 정보를 화면에 출력해준다.

사용자들이 여러가지 접속을 하는데 그 접속에 현황을 보고 싶을 때 로그파일을 뒤진다 것을 의미하고 서버 프로그램들은 거의 공통적으로 가지고 있는 특성이다.
서버 프로그램을 쓰고 있고 프로그램이 동작하고 있는 상태를 확인하고 싶다면 서버의 로그가 어디 있을가를 고민하면된다.

또 하나는 error.log 파일이 또 있s는데 이 파일은 아파치 웹서버의 어떤 특정한 에러가 있을 때 파일을 열어서 어떤 문제가 있는지를 확인 할 수 있다.

profile
자기 신뢰의 힘을 믿고 실천하는 개발자가 되고자합니다.

0개의 댓글