웹 서버 구축하기 A to Z (1)

간단하게 웹 서버를 구축해보자

개요

이 글은 웹 서버를 구축하기 위한 글이다.
이 글에서는 Nginx와 html을 사용해서 간단히 웹 서버를 구축해보도록 하겠다.
웹 서버를 구축하기 위해서는 우선 컴퓨터가 필요하다. (일반적인 컴퓨터를 말하는 것이 아닌 24시간 켜놓을 수 있는 컴퓨터 말이다.)

참조 : 애플 HomeKit과 삼성 SmartThings 연동을 위한 라즈베리파이 설치법

추후에는 도메인을 구입하고, CloudFlare를 사용하여 네임서버를 관리하고, https를 적용하는 방법을 다루도록 하겠다.

웹 서버란?

웹 서버에 대해 처음 접하는 사람들을 위해 간단히 설명하고자 한다.
웹 서버란 웹 브라우저에서 요청한 html, css, js 등의 파일을 전송해주는 서버이다.
Apache2, Nginx 등이 대표적인 웹 서버이다.

Apache2 vs Nginx 무엇을 사용할까?

Apache2와 Nginx는 각각 장단점이 있다. Apache2는 설정이 간단하고, 다양한 모듈을 사용할 수 있다. Nginx는 Apache2에 비해 빠르고, 안정적이며, 적은 자원을 사용한다. 최근에는 Nginx를 많이 사용한다고 한다.
2023년 7월 기준으로 웹 서버 소프트웨어 순위는 엔진엑스(34.3%), 아파치 HTTP 서버(31.4%), LiteSpeed(12.2%), MS IIS(5.4%) 순이라고 한다.

참고: https://w3techs.com/technologies/overview/web_server/all

서버 구축하기

서버 환경

  • PC : Raspberry Pi 4B
  • OS : Ubuntu 22.04 LTS

PC는 라즈베리파이를 사용하지 않고, 일반적인 PC나 aws, oracle과 같은 클라우드 환경을 사용해도 무방하다. OS는 우분투를 기준으로 설명할것이기 때문에 우분투를 사용하는 것이 좋다.(데비안 계열과 페도라 계열의 명령어의 차이를 구별할 수 있다면 다른 리눅스 배포판을 사용해도 무방하다.)
라즈베리파이 설정은 애플 HomeKit과 삼성 SmartThings 연동을 위한 라즈베리파이 설치법을 참고하면 된다.(homebridge 설정 전까지만 참고하면 된다. 또 추후에 라즈베리파이 설정에 대해 다루도록 하겠다.)

Nginx 설치

ssh에 접속에 성공했다면, Nginx를 설치해보자.

sudo apt update
sudo apt install nginx

설치가 완료되었다면, Nginx가 정상적으로 작동하는지 확인해보자.

systemctl status nginx
nginx-systemctl

브라우저에서 http://본인의 서버 IP를 입력하면 아래와 같은 화면이 나올 것이다.

welcome-to-nginx

Nginx 설정

이제 Nginx에서 사용할 html 파일을 간단하게 만들어보자.
우선 html파일이 들어갈 디렉토리로 이동하자.
경로는 /var/www/이다. 이 디렉토리 안에 자신이 원하는 이름의 디렉토리를 만들고 그 안에 index.html 파일을 만들자. (필자는 보통 도메인 이름으로 디렉토리를 만든다.)

cd /var/www/
sudo mkdir 도메인(sldev.kr)
cd 도메인(sldev.kr)
sudo vim index.html

index.html 파일에 아래와 같이 작성하자.

vim-index.html

저장 후 나가는 법은 esc를 누르고 :wq를 입력하면 된다.

Nginx 설정 파일

/etc/nginx/sites-available/로 이동해 도메인 이름의 파일을 만들자.

sudo vim 도메인(sldev.kr)

도메인(sldev.kr) 파일에 아래와 같이 작성하자.

server {
	listen 80;

    server_name 도메인(sldev.kr);

    root /var/www/도메인(sldev.kr);
    index index.html;

    location / {
    	try_files $uri $uri/ =404;
    }

}

이제 Nginx 설정 파일을 적용하고 Nginx를 재시작하자.

sudo ln -s /etc/nginx/sites-available/도메인(sldev.kr) /etc/nginx/sites-enabled/도메인(sldev.kr)
sudo systemctl restart nginx

그리고 다시 브라우저에서 http://본인의 서버 IP를 입력하면 아래와 같은 화면이 나올 것이다.

이제 본인의 서버 IP의 80번 포트를 포트포워딩만 해주면 외부에서도 접속이 가능하다. http://외부 IP

간단한 웹 서버를 구축해보았다.
다음 포스팅에는 도메인을 구입하고, CloudFlare를 사용하여 네임서버를 관리하고, https를 적용하는 방법을 다루도록 하겠다.