반응형
728x90
반응형

먼저, Vhost란 Virtual Host의 줄임말이다.

원래 Apache를 설치하면 /var/www/html 디렉토리에 있는 웹 문서를 로드하여 웹 서버를 서비스하는데, 이 상태는 하나의 host가 서비스되는 것이다. 아래와 같이 말이다.

 

그러나 Vhost 를 이용하면 달라진다. 아래의 그림처럼 디렉토리 별로 완전히 다른 호스트로 구분되어, 하나의 웹 서버에 여러 호스트를 운영할 수 있는 것이다.

이 때, 호스트의 분기는 rewrite 등의 모듈을 함께 이용하기 때문에 rewrite까지 이번 포스팅에서 다룰 것이다.

VHOST 설정

VHOST 설정을 위해서는 각 가상 호스트 별로 설정 파일을 마련해야한다. 바로 다음과 같은 경로에!

sudo vim /etc/apache2/sites-available/001-phindol.conf

001-phindol.conf 라는 설정 파일을 만듦으로써 하나의 가상 호스트를 생성하는 것이라고 보면 되겠다. phindol은 임의 이름이다.

sites-available 를 헤깔리면 안된다. 이 .conf 파일의 내용은 아래와 같다. 각 지시자들은 검색을 통해서 확인하도록 한다.

<###VirtualHost *:80###>
    ServerName phindol.com
    ServerAlias *.phindol.com
    ServerAdmin ysho0707@gmail.com
    DocumentRoot /var/www/html/phindol.com
    # chmod -R 755 path

    ErrorLog ${APACHE_LOG_DIR}/phindol/error.log
    CustomLog ${APACHE_LOG_DIR}/phindol/access.log combined

    <###Directory /var/www/html/phindol.com###>
        Options All
        AllowOverride All
        Require all granted
# rewrite 명령어
# sudo a2enmod rewrite
# sudo systemctl restart apache2
        RewriteEngine on
        RewriteCond %{REQUEST_URI} ^(.*)\.(html|htm|php|lib|act|pcls|pexe)$
        RewriteRule . /var/www/html/phindol.com/System/enter.php [L]
    <###/Directory###>
<###/VirtualHost###>

(###은 알아서 지우도록 하자)

참고)
/var/www/html/sub에 해당하는 부분에서 Permission 에러가 난다면 위의 주석 처리된 chmod 755 권한으로 갱신한다.

위에서 sites-available 디렉토리 내에 생성을 했다면 다음은 sites-enabled 디렉토리 내에 심볼릭 링크를 생성해야한다.

아래와 같이 하며 명령어는 다음과 같다.

sudo ln -s /etc/apache2/sites-available/001-phindol.conf /etc/apache2/sites-enabled/001-phindol.conf

sites-available 디렉토리 내의 conf 파일과 동일한 이름으로 심볼릭 링크를 지어준다.

vhost를 추가할 때에는 아래의 명령으로 추가됨을 반영하자.

sudo a2ensite phindol(sites-available, enable등에서 지정했던 이름 ex] 001-phindol.conf 에서의 phindol)

 

윈도우 host 파일 설정

conf 파일의 설정을 봤다면 알겠지만 취급할 virtual host의 도메인은 "phindol.com" 이다.

그러나 우리는 해당 도메인을 구매하여 구비하지 않았기 때문에 실제로 테스트를 할 수 없다. 이러한 경우 윈도우의 host 파일을 수정하여 나의 컴퓨터 내에서 해당 도메인에 대한 접속을 바꿔주는 것이다.

C:\Windows\System32\drivers\etc

위 경로를 관리자 권한으로 열고, 아래의 그림처럼 수정한다. ( 탭 단위로 구분한다 )

우분투 20.04에서 테스트 할 경우 127.0.0.1 이 먹히지 않는 경우가 있어 확인해 봤더니 다음과 같은 이유였다.

그리고 나서 아파치를 재시작한다.

#은 지우고 실행한다.

성공적인 결과가 말을 해주고 있다.

왼쪽은 http://localhost/ 도메인으로 vhost 설정이 되지 않은 메인 host이고 오른쪽은 vhost 설정이 된 가상 host이다. vhost 설정을 하면서 rewrite라고 하는 주소를 고쳐쓰는 모듈을 설정했는데 왼쪽과 오른쪽에서 rewrite 모듈이 실행 안되고/되고 의 결과를 본다면, vhost 설정을 통해 하나의 아파치 웹 서버에서 서로 독립적인 사이트처럼 실행된다는 사실을 확인할 수 있다.

로그 폴더의 생성

vhost 설정 중 log 각 vhost 마다 로그 폴더를 따로 두었는데, 이에 따른 생성 및 권한 설정을 해야한다.

sudo mkdir /var/log/apache2phindol

Rewrite 모듈 설정

Rewrite는 Request를 정해진 Rule에 의해서 다른 URL or File로 보내는 모듈을 뜻한다. 

예를 들어, 다음 그림과 같다고 보면 된다.

그렇다면, redirect와 다른 점은 무엇일까?

redirect 는 클라이언트 사이드에서 처리가 이루어지며, 클라이언트의 주소 표시줄에 변경된 주소가 표시된다.
rewrite 는 서버 사이드에서 처리가 이루어지며, 클라이언트의 주소 표시줄에 변경된 주소가 표시되지 않는다.

위의 vhost .conf 파일 설정 중 rewrite 부분을 다시 확인 한다면,

이 부분이다. 각 지시자들에 대한 설명은 검색을 통해 확인한다.

RewriteEngine ~ RewiteRule 까지가 본인이 정한 Rewrite 룰인 것이다. 저 룰이 실행되려면 다음과 같은 명령을 명령 라인에 실행한 뒤 아파치를 재실행 하면 된다.

sudo a2enmod rewrite # rewrite 모듈 활성

이후에 apache 재실행을 하면 phindol.com 에 대해서만 rewrite 룰이 적용되는 것을 아래의 그림처럼 확인할 수 있다.

728x90
반응형
728x90
반응형


데이터를 추가하고, 저장하고 테이블 형태로 열람하고 관리할 수 있는 웹 서비스를 만들어 볼 기회가 주어졌다.

간단하게 만드는 경우인지라 C언어와 비슷하고 익숙한 언어인 PHP를 기반으로 구현하게 되었다. 이에 따라서 필요로하는 환경을 구축하는 내용을 다루는 포스팅이다.

 

Apache2 설치

아파치 설치는 매우 간단하다.

sudo apt install apache2

설치 후, 다음 명령어를 통해 서비스가 켜져 있는지 확인한다.

sudo /etc/init.d/apache2 status

꺼져있다면, 다음 명령어를 실행하여 서비스를 켜주자.

sudo /etc/init.d/apache2 start

localhost 라고 인터넷 주소창에 입력했을 때, 다음과 같이 뜬다면 설치 및 서비스 성공이다.

 

APACHE 포트 변경

이번엔 아파치 서비스의 포트를 변경할 것이다. 아래의 경로(명령어)로 들어가면 포트를 변경할 수 있다.

sudo vim /etc/apache2/ports.conf

기본으로 80 포트로 적용되었지만, 나는 익숙한 포트 번호로 변경하였다.

포트 변경을 원치 않는 경우는 안 바꿔도 된다.

이제 설정이 변경되었으니, 아래와 같이 재시작을 한다.

sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 start
혹은
sudo /etc/init.d/apache2 restart

PHP 설치

서버 사이드 스크립트 언어 설치이다.

다음 명령을 통해서 설치한다.

sudo apt install php php-mysql

설치가 완료되면 Apache2와 연동이 되는지 확인하기 위해서 아래의 과정들을 실행하여 확인해본다.

sudo vim /var/www/html/test.php

위 명령으로 편집기에 들어가서 아래와 같이 입력하고 저장한다.

<?php phpinfo(); ?> 

이러한 화면이 떠야한다. 뜨지 않는 경우 apache2 서비스를 재실행한다. (stop -> start)

이제 이 환경 위에 간단한 웹 서비스를 올리면 되겠다 ㅎㅎ

728x90
반응형

+ Recent posts