반응형
728x90
반응형

Apache2 VHost 설정하기

  • Apache Vhost 설정

Vhost란? Apache2의 Virtual host 기능을 통해서 하나의 아파치 서버에서 독립된 서버 공간을 나누는 작업을 의미한다.

설정 파일 조작

vhost에 필요로 하는, 수정해야하는 설정들은 위 그림에서 처럼 3가지이다.

ports.conf : 각 vhost 마다 사용할 포트 등록.
sites-available, -enabled : vhost에 필요한 설정 파일 등록.

먼저, /etc/apache2 경로의 sites-available/ 디렉토리 내에 필요한 파일을 구비할 것인데, sites-available 디렉토리현재 비활성 중인 사이트들의 설정 파일을 담고 있는 디렉토리이다. 

001-autotag.api 라는 이름으로 가상 환경을 나눈다. 내용은 다음과 같다.

<VirtualHost *:7011> 과 같이 해당 가상 환경에서 사용할 포트를 기재해주고,
ServerName 에는 도메인 주소가 들어간다.
DocumentRoot 의 경우, 렌더링할 웹 문서 파일이 존재하는 Default 경로라고 생각하면 되겠다.
ErrorLog 및 CustomLog 는 해당 vhost에서 발생하는 로그들을 어디에 저장할 것인가를 지정한다.
<Directory ~ > 부분은 해당 vhost에 대한 옵션들이라고 생각하면 된다.

--------------------------------------------------------------------------------------------------------------------------------------------------
[해당 내용]
<VirtualHost *:7011>
ServerName autotag.api
ServerAdmin ysho0707@gmail.com
DocumentRoot /server_app/autotag.api
ErrorLog ${APACHE_LOG_DIR}/django.api/error.log
CustomLog ${APACHE_LOG_DIR}/django.api/access.log combined
          <Directory /server_app/autotag.api>
                    Options All
                    AllowOverride All
                    Require all granted
          </Directory>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
--------------------------------------------------------------------------------------------------------------------------------------------------

그리고 다음으로는 sites-enabled 디렉토리를 수정할 것이다. sites-enabled 디렉토리는 현재 활성 중인 사이트의 설정 파일들을 갖는 디렉토리인데, 보통 sites-available 디렉토리에서 심볼릭 링크를 걸어서 설정 파일을 채워넣는 형태로 진행이 된다. 그 부분을 다음에서 확인할 수 있다.

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

위의 명령어를 통해 심볼릭 링크를 건다.

반응형
728x90

Port 수정

다음으로는 port를 재설정할 것이다.

위와 같은 경로에 ports.conf 파일이 존재하는데 이 부분에 해당 Virtual Host 공간의 접속 포트를 추가하면 된다. 위 과정 중에서 sites-available 디렉토리 내에 001-autotag.api.conf 의 가장 첫 줄에 포트 번호가 있다. 그 번호를 추가한다.

포트를 추가하면 기본 default로 정했던 7010 포트 뿐만 아니라, autotag.api 이름의 가상 호스트의 포트 또한 접속 요청으로 수용할 수 있다.

Apache2 재시작

아파치를 위와 같이 재시작하고, 접속을 시도해본다.

접속 및 테스트

위와 같이 깔끔하게 접속이 잘 된 모습을 볼 수 있다. 해당 페이지는 “hello” 를 출력하는 페이지 파일을 001-autotag.api.conf 의 DocumentRoot 경로에 기술한 경로에 사전에 집어넣어 렌더링 된 상태이다. 

해당 디렉토리에 아무 것도 넣지 않고 접속하면 아무 것도 출력되지 않으니 확인을 해야한다.
/etc/hosts를 수정한다면 다음과 같이 접속 또한 가능하다.

/etc/hosts 파일을 다음과 같이 수정하게 되면 autotag.api 라는 주소는 앞으로 192.168.0.112로 바꿔서 해석하겠다 라는 의미를 갖는다. 

여기서 중요한 것은 그 말인 즉 슨 내 컴퓨터 내에서만 적용되는 규칙이다. 외부 사람들은 백 날 autotag.api를 친다 하더라도 접속이 되지 않을 것이다.

아래와 같이 접속이 잘 되는 것을 확인할 수 있다.

 

 

 

 

 

 

728x90
반응형
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
반응형
728x90
반응형

Permission denied (publickey)

SSH 접속 시, 위와 같은 에러가 나는 경우 공개 키 등의 문제 등 여러 문제들이 있지만 내가 경험한 경우를 먼저 정리하도록 할 것이다.

먼저, 공개 키로 인한 권한 거부가 떴다는 건 ssh 설정에서 ssh 패스워드 접속을 허용하는지 안 하는지 확인해보아야 한다.

sudo vim /etc/ssh/sshd_config 

위 파일을 vim 으로 열어서 아래의 두 항목을 수정해주면 된다.

PermitRootLogin prohibit-password -> PermitRootLogin yes
PasswordAuthentication no -> PasswordAuthentication yes

sudo /etc/init.d/ssh restart

위 명령으로 서비스를 재시작.

위와 달리 잘 접속되는 광경을 목격할 수 있다.

728x90
반응형
728x90
반응형

sshd: no hostkeys available -- exiting.

Ubuntu 20.04 에서 SSH 서비스를 실행시킬 때, 위와 같은 에러가 뜰 경우, 해결 방법이다.

sudo ssh-keygen -A

 

 

 

 

728x90
반응형
728x90
반응형

 

우분투 20.04 를 설치해보았다. UI가 너무x3 예뻐진 것이다.

원래 기존에 Desktop도 리눅스 우분투를 사용하는 나는 이를 설치를 안 할 수 없었다. 

요즘 윈도우에서 동작하는 클라이언트 프로그램에 대한 서버를 만드느라 윈도우에서 개발을 하다보니 Visual Studio를 이용한 개발이 한창이었다. 그런데 이제는 우분투에서는 Visual Studio가 없으니 CLion으로 갈아타야하는데, CLion은 내가 알기로는 CMake 설정을 직접하는 형태인 것이다. 그래서 CMake를 일단 서버에 설치를 해야한다.

그래서 이번 시간에는 CMake 설치하는 시간을 갖도록 하겠다.

CMake를 설치하기 이전에 CMake가 무엇인지 아주아주 간단하게 정리를 해보겠다.

 

1. CMake란?

CMake를 논하기 이전에 Make가 무엇인지, C언어 계열의 프로그램 작성 방법에 대해서 알아야한다.

C 계열의 프로그램 작성 방법

그리는데 너무 힘들었다 ㅋ

위의 그림과 같은 방법으로 프로그램이 작성이 된다. 예에서 나온 그림을 gcc 컴파일 명령어를 통해 나타내면 다음과 같다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
### c언어 
# 각 소스 프로그램으로 부터 object 목적 파일 생성.
gcc --o ./main.o ./main.c
gcc --o ./func.o ./func.c
# 목적 파일들을 모두 링크!
gcc -o ./program.exe ./main.o ./func.o
 
### c++언어 
# 각 소스 프로그램으로 부터 object 목적 파일 생성.
g++ --o ./main.o ./main.cpp
g++ --o ./func.o ./func.cpp
 
# 목적 파일들을 모두 링크!
g++ -o ./program.exe ./main.o ./func.o
cs

gcc 혹은 g++ 컴파일러를 이용하여 컴파일을 진행할 경우 위처럼 각 소스 프로그램마다의 목적 파일을 생성하고 이를 연결해주는 링크 작업을 진행한다.

Make

자! 그러면 Make를 설명할 때가 되었다. Make는 위의 명령들을 순차적으로, 자동적으로 실행하여 빌드하도록 돕는 파일 관리 유틸이다. 

CMake

CMake 는 멀티플랫폼으로 사용할 수 있는 Make의 대용품을 만들기 위한 오픈 소스 프로젝트라고 하는데, 사실 따지고 보면 위의 Make 파일을 만들어주는 유틸인 것이다. 즉, (빌드를 돕는) (Make를 만들어내는) 그것이 바로 CMake인 것이다.

정말 간단하게 말해서 CMake는 Make가 잘 동작하도록 도와주고 Make는 컴파일을 위한 명령들이 순차적으로 실행될 수 있도록 돕는 것이다

 

2. 설치 방법

 

2-1 . Cmake 3.18.4 버전을 따로 설치할 것이니 기존의 설치가 존재한다면 지운다!

sudo apt purge cmake

2-2 . 필요한 패키지를 설치한다.

sudo apt install wget build-essential

2-3 . Cmake 빌드를 위한 OpenSSL을 설치한다.

wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz # oepnssl 다운로드
tar xzvf ./openssl-1.1.1h.tar.gz # 압축 해제
cd openssl-1.1.1h # 이동
./config # 빌드 전 config
make  
make test # 빌드 준비
sudo make install # 빌드 시작

2-4 . Cmake 3.18.4 를  다운 받아 설치한다.

cmake.org/download/

위 사이트에서 다운로드 받은 뒤 압축을 푼 후,

./bootstrap # 컴파일 환경 자동 설정

make # 빌드

sudo make install 실행 파일을 설치.

 

cmake 명령을 쳤을 때, 아래와 같이 나온다면 cmake 설치에 성공한 것이다.

위와 같은 경로에 설치되어 있는 것을 확인할 수 있다.

728x90
반응형

+ Recent posts