티스토리 뷰

일단 Apache 란 무엇인가 ? Apache HTTP server로 세계에서 가장 널리 쓰이는 웹서버 소프트웨어이다. 

그래서 웹서버를 만들 때 Apache2를 까는경우가 굉장히 많다. (사실 난 허접이라 apache2말고는 안써봤다.)

Apache2 설치방법 : 터미널에서 sudo apt-get apache2 하면된다.


이번 주제인 Apache2에서  외부에서 들어오는 포트관리하는 법을 알아보자 


1. 기본

나는 집에있는 라즈베리파이 우분투에 apache2를 설정했다. 

일단.. 브라우저로 아이피에 접속을하면 

Apache2 Default Page 가 뜬다. 

그런데 여기서 생긴 의문 ? 

아파치2하나당 하나의 웹페이지 서버밖에 못만드는 것인가? 80번 포트말고 다른 포트로는 접속이 안되는걸까 ?

결국 아파치 포트를 관리해야하는데 어떻게 해야하는가 ?

구글링 해보니까 /etc/apache2 폴더에 있는 httpd.conf를 수정해야한다고 한다. 그래서 찾아보니 으잌? 없다..

그래서 왜 나는 없습니까 껄껄 하고 찾아보니 

this File httpd.conf is still exits in RedHat , Centos , Ferodra however Now This file does not exist in ubuntu.

이제 우분투에는 없다고한다. 옛날에 만져봤던거 같긴한데..

그럼 port관리를 어디서 해야하나? /etc/apache2/ 로 가봤다.

이상한게 잔뜩있다. 가장 대표적인 apache2.conf에 가서 뭐가 무슨일을 하는지 찾아봤다.

apache2.conf : 웹서버가 시작될 때 포함할 configuration파일들을 모으는 역할을 한다.

ports.conf : listening ports를 설정할 수 있다. (Listening 포트로 들어왔을 때 아파치가 반응함 )

Configuration files :

mods-enabled => module을 관리함

conf-enabled  => global한 configuration 조각들 관리

sites-enabled  => virtual hosts관리.


2. 포트 관리

어떤 포트로 들어왔을 때 아파치가 반응하라는것은 ports.conf에서 관리하면된다.

vi로 들어가보면.. 

띠용. Listen 80번 포트 88 번 포트를 열어놓았군. 원하는 포트를 추가하면된다. 

대부분 80번 포트만 열려있는데. Virtualhost가 뭔지 모를 때 (불과 하루전) 다른페이지는 88번 포트로 열면 되겠다! 라고 판단하여 열어놓았다.

SSL일때 (http://terms.naver.com/entry.nhn?docId=1180906&cid=40942&categoryId=32851) 443번 포트도 열게 해 놓았다. (기본적으로 설정되어 있었다.)

그리고 위에 ports.conf부분은 포트만 추가/제거 하고 virtual host 부분은 /etc/apache2/sites-enabled/에서 바꾸라고 적어놓았다.


3. Virtualhost관리

그럼 이제 다양한 주소에서, 다양한 포트로 들어왔을 때, 원하는 웹서비스를 실행시키기 위해서 어떻게 분산 시켜주는지 알아보자.

참고링크 : (https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts#step-four-%14-create-new-virtual-host-files)

저는 제가 다시보기위해 대충 적어놓을 것이기때문에, 영어를 공부겸.. 이걸 읽으시는게 더 도움이 되실껍니다. 

일단 (1.기본)에서 보았듯? /etc/apache2/sites-enabled/ 에서 관리한다.

일단 virtualhost 파일을 만들어준다. /etc/apache2/sites-enabled/ 에 들어가면 기존  000-default.conf가 존재하기 때문에 이 구성을 비슷하게 이용할 것이므로 

$ cd /etc/apache2/sites-enabled/ 

$ sudo cp 000-default.conf test.conf

복사한뒤 

$ sudo vi test.conf

conf 파일을 수정한다.

<VirtualHost *:80>

       ServerName lyrics.rakjoon.net

       ServerAdmin webmaster@localhost

       DocumentRoot /var/www/html

       ErrorLog ${APACHE_LOG_DIR}/error.log

       CustomLog ${APACHE_LOG_DIR}/access.log combined


</VirtualHost>


<VirtualHost 아파치로 접근할때 들어온 IP : 들어온 Port>

ServerName : 아차피로 들어올때 접근한 서버네임 (www.naver.com같은 ?)

ServerAlias : (ServerName말고 다른 주소들 => www.naver.com 과 naver.com과 같은 virtualhost에 물리고 싶을 때)

ServerAdmin : 서버 어드민의 email 

DocumentRoot : 우분투에 실행할 도큐먼트의 위치. 이 위치 안의 index.html이 실행되겠죠 ?

ErrorLog : 에러 로그 (일반적으로 ${APACHE_LOG_DIR} 은 /var/log/apache2/ 위치입니다. )

CustomLog : 커스텀한 로그

</VirtualHost>

참고 : https://httpd.apache.org/docs/2.4/vhosts/



위에 적어놓은 소스를 보면 

외부에서 어떤 IP로 접근하든 ( 여기서 말하는 IP는 서버의 아이피 입니다. 한서버가 단일 아이피만 갖으리란 법은 없겠죠 ? )

브라우저에서 lyrics.rakjoon.net으로 접근한다면

/var/www/html/을 루트로 삼아 실행해라. 

즉 ServerName 설정만 다르게 하면 웹에서 어떤 주소로 접속하냐에 따라 같은서버IP에서 다른걸 보여 줄 수 있습니다.  (Name-based Virtual Hosts)

참고 : https://httpd.apache.org/docs/2.4/vhosts/name-based.html




그리고 저장! 기본적인 Vi 사용법은 익혀놓으시길 바랍니다.

000-default.conf 는 80번대 포트를 모두 점유하고 있기때문에  겹치지 않게 default도 바꿔주세요. 

그리고 아파치를 재시작 하면 끝.

$ sudo service apache2 restart 



정리하기 위해 올리는거라. . 잘못된 부분이 있으면 알려주시면 감사하겠습니다.!

댓글
댓글쓰기 폼