간단하게 가상 머신에 템플릿 웹 사이트를 호스팅해보자.
말만 '웹 사이트 호스팅' 거창하다. 실은 매우 간단하다.
먼저, 수동으로 웹 사이트를 호스팅해보고 그 다음, 자동으로 vagrantfile에서 provisioning하여 호스팅해보자.
수동 - Website Setup
가상 머신 생성
vagrant init jacobw/fedora28
- 적절한 리눅스 버전의 vagrant box를 설치한다.
Vagrant.configure("2") do |config|
config.vm.box = "jacobw/fedora35-arm64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "public_network
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y apache2
SHELL
end
- 웹사이트에 액세스할 수 있는 IP를 설정한다.
- 가상 머신이 생성되고, apache를 설치할 수 있도록 provisioning한다.
방화벽 설정
가상 머신을 실행하고 브라우저에 IP 주소를 입력했더니 에러 페이지가 나온다.
분명 실행 중인데 이상한 일이었다.
찾아보니, 가상 머신의 방화벽때문에 접속하지 못하고 있었다.
systemctl stop firewalld 명령어 실행하여 방화벽을 해제한 뒤 접속에 성공했다.
그런데, 실무에선 방화벽을 절대 건드려선 안된다. 어떻게 접속할 수 있을까?
systemctl start firewalld 명령어로 방화벽을 활성화시키고 다른 방법을 시도했다.
현재 listening 포트가 80이다. http의 포트 넘버인 80을 열어야한다.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
성공적으로 실행되었다.
html 템플릿 다운로드
server data는 /var 디렉토리에 있다.
이 디렉토리에 html 템플릿, 파일들을 두면 브라우저에 접속했을 때 첫 페이지로 index.html이 기본적으로 설정된다.
기본 페이지로 설정할 html 파일을 tooplate.com 에서 무료 html 템플릿 다운로드 받는다.
wget https://www.tooplate.com/zip-templates/2085_neuron.zip
- 크롬 개발자 도구를 열어 다운로드 링크를 복사하여 wget으로 설치한다.
생성된 디렉토리의 모든 파일을 www/html으로 이동
가상 머신을 생성할 때 설정한 IP로 들어가면 정상적으로 페이지가 로드된다.
자동 - Website Setup(IaC)
- 위에서 수동으로 웹 사이트를 호스팅하기 위해 사용한 모든 명령어들을 Vagrantfile의 provision 섹션에 작성하면 끝난다.
- 매우 간단하게 vagrantfile 하나로 위의 복잡한 과정을 간소화 할 수 있다.
- 이렇게 코드로 인프라를 관리하는 것을 Infra as Code(IaC)라 부른다.
Vagrantfile Provision 섹션 작성
config.vm.provision "shell", inline: <<-SHELL
yum install httpd wget unzip -y
systemctl start httpd
systemctl enable httpd
cd /tmp/
wget https://www.tooplate.com/zip-templates/2085_neuron.zip
unzip -o 2085_neuron.zip
cp -r 2085_neuron/* /var/www/html/
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
systemctl restart httpd
SHELL
- 직접 가상 머신에 로그인하여 수동으로 설치할 필요 없이 provisioning 단계에 끝낼 수 있다.