아파치 웹 서버(Apache Web Server) 설치와 설정(Ubuntu)
아파치 웹 서버 설치 명령어는 다음입니다.
sudo apt-get install apache2
웹 서비스는 80번 포트를 사용해 요청하고 마찬가지로 80번 포트를 사용해 결과를 보내줍니다.
따라서 웹 서버가 작동하는 컴퓨터의 80번 포트를 방화벽으로 열어주어야 합니다.
방화벽을 사용한 적이 없다면 먼저 방화벽을 사용하는 명령(enable)을 내리고 80번 포트를 열어줍시다.
sudo ufw enable sudo ufw allow 80
이제 웹 브라우저의 주소창에 웹 서버를 설치한 컴퓨터에서 자신의 주소(localhost)를 넣어보거나, 다른 컴퓨터나 스마트폰에서 웹 서버가 설치된 컴퓨터의 IP 주소를 입력하면 서버의 /var/www/html/ 디렉터리에 있는 index.html 파일을 볼 수 있습니다.
다른 장치에서 볼 수 없으면 웹 서버를 설치한 컴퓨터가 사설 IP 주소를 가지고 있기 때문일 것입니다.
이 경우, 공인 IP 주소를 갖도록 네트워크 연결 구조를 바꾸거나, 공유기의 포트포워딩 기능 등을 사용하여 해결할 수 있습니다.
이 문제는 여기서 언급하지 않고 지금은 아파치 웹 서버 설정 파일 구조를 알아봅시다.
설정 파일들은 /etc/apache2/ 디렉터리에 들어있습니다. 내용물은
- conf-available, conf-enabled 디렉터리
- mods-available, mods-enabled 디렉터리
- sites-available, sites-enabled 디렉터리
- apache2.conf, ports.conf, magic, envvars
이 중 apache2.conf 파일로 기본적인 설정을 합니다.
그리고 디렉터리로 되어있는 conf, mods, sites는 각각 available 디렉터리에 고급 설정이나 추가 기능 파일들이 들어있습니다.
이 중 사용하고자 하는 기능들을 enabled 디렉터리에 심볼릭 링크를 만들어 사용합니다.
apache2.conf 파일을 열어보면 몇 군데에 걸쳐 아래 내용을 볼 수 있는데
# Include module configuration: IncludeOptional mods-enabled/*.load IncludeOptional mods-enabled/*.conf # Include list of ports to listen on Include ports.conf # Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf
각 enabled 디렉터리에 심볼릭 링크를 걸면 추가 기능을 사용할 수 있는 이유를 알 수 있습니다.
추가 기능 모듈들이 들어있는 mods 디렉터리의 경우 conf 파일뿐만 아니라 load 파일도 필요한 것도 알 수 있습니다.
당연하지만 각 available 디렉터리에서
sudo ln -s 추가할기능 해당enabled디렉터리
이렇게 심볼릭 링크를 만들어도 되지만 이 작업을 해주는 간단한 명령어가 있습니다.
- conf-available의 기능 추가 : a2enconf
- conf-available의 기능 삭제 : a2disconf
- mods-available의 기능 추가 : a2enmod
- mods-available의 기능 삭제 : a2dismod
- sites-available의 기능 추가 : a2ensite
- sites-available의 기능 삭제 : a2dissite
어떤 약자인지 쉽게 알 수 있어 외우기도 쉽습니다.
예를 하나 들어 웹 서버 루트 디렉터리가 아니라 사용자마다 자신의 웹 사이트를 만들 수 있도록 설정을 바꿔보겠습니다.
sudo a2enmod userdir
위 명령 하나로 끝입니다. mods-available 디렉터리에서 userdir.conf와 userdir.load 두 파일의 심볼릭 링크가 mods-enabled 디렉터리에 만들어졌습니다.
웹 서버가 되었던 어떤 서버 프로그램이 되었던 설정을 바꿨으면 재시작 해야 합니다.
sudo service apache2 restart
사용자마다 홈 디렉터리에 public_html 디렉터리를 만들고 그 안에 웹 페이지를 만들어 웹 브라우저로 볼 수 있습니다.
public_html인 이유는 mods-available/userdir.conf 파일에 그렇게 설정되어있기 때문입니다.
public_html에 index.html 파일을 만들고 브라우저 주소창에 서버 컴퓨터의 ‘IP 주소/~아이디’를 넣으면 index.html 파일의 내용을 볼 수 있습니다.
index라는 이름은 주소의 경로에 파일명이 없으면 기본값으로 index를 찾게되어있기 때문에 알아서 나오는 것이고 다른 파일명이라면 ‘IP 주소/~아이디/파일명’처럼 파일명까지 넣어주어야 합니다.