웹 서버 설치 및 설정 (Nginx/Apache)
1. 웹 서버란 무엇인가?
오늘은 Nginx와 Apache에 대해서 얘기해볼 거야. 이 두 웹 서버는 가장 인기 있는 것들이야. 강의가 끝날 때쯤이면 네 서버가 인터넷 사용자들을 자랑스럽게 맞이할 준비를 할 수 있을 거야.
명령어들을 실행하기 전에, 우리가 뭘 달성하려는 건지 한번 알아보자. 웹 서버는 프로그램이야. HTTP 요청을 받고 (예를 들어 사용자가 브라우저에 사이트 주소를 입력할 때), 이를 처리한 다음 적절한 콘텐츠(HTML 페이지, 파일 또는 '404 Not Found' 오류 등)를 반환하지. 웹 서버는 사용자와 너의 콘텐츠 사이를 연결하는 역할을 해.
Nginx vs Apache: 웹 서버의 전쟁
만약 Nginx랑 Apache가 카페에서 만났다면:
- Nginx는 라벤더 라떼를 주문하고 모든 일을 비동기적으로 처리했을 거야: "내게 요청해봐, 1분 후에 파일 줄게, 방해하지 마!"
- Apache는 그에 반해 좀 더 전통적이었을 거야, 각 작업마다 스레드를 생성하고 정중하게 응답했겠지만, 요청량이 많을 때는 좀 느렸을 거야.
간단한 차이점:
특징 | Nginx | Apache |
---|---|---|
아키텍처 | 비동기적 | 스레드 기반 |
성능 | 큰 부하에서도 높은 성능 | 동적 작업(PHP/Perl)에 적합 |
간단함 | 간단한 설정, 하지만 몇 가지 까다로운 점이 있음 | 더 범용적이지만 더 복잡함 |
언제 어떤 것을 선택해야 할까?
- 네 사이트가 몇 개의 정적 파일(예: 블로그나 랜딩 페이지)로 이루어져 있다면, Nginx가 너의 친구야.
- 만약 동적 웹 애플리케이션(예: PHP 사이트)을 다룬다면, Apache가 더 많은 유연성을 제공할 거야.
2. 웹 서버 설치
이제 왜 필요한지 알았으니 설치를 시작할 때입니다. 우리는 Nginx와 Apache 둘 다 설치하는 방법을 살펴볼 거예요. 마음에 드는 걸 고르거나, 둘 다 설치해서 전문가 느낌을 내보세요.
Nginx 설치
패키지 리스트 업데이트:
sudo apt-get update
Nginx 설치:
sudo apt-get install nginx
서버 상태 확인:
sudo systemctl status nginx
만약 문제가 없다면,
active (running)
같은 메시지가 보일 거예요.기본 페이지 확인: 브라우저를 열고
http://localhost
를 입력하세요. Nginx의 환영 페이지가 보인다면 설치가 성공적으로 완료된 겁니다.
Apache 설치
패키지 리스트 업데이트:
sudo apt-get update
Apache 설치:
sudo apt-get install apache2
서버 상태 확인:
sudo systemctl status apache2
Nginx와 마찬가지로, 상태는
active (running)
일 거예요.기본 페이지 확인: 브라우저에서
http://localhost
를 열면 이제 Apache 기본 페이지가 보일 거예요.
3. 웹 서버 기본 설정
설정은 어디에 숨겨져 있나?
Nginx의 주요 설정 파일 경로:
/etc/nginx/nginx.conf
Apache의 경우:
/etc/apache2/apache2.conf
좋아하는 편집기(예: nano
)를 사용하여 설정 파일을 열어보세요:
sudo nano /etc/nginx/nginx.conf
여기서 당신의 첫 번째 모험이 시작됩니다: 아마 지금은 아무것도 이해하지 못할 거예요, 왜냐하면 설정 파일이 RPG 게임에서 나온 주문서처럼 보이거든요. 하지만 겁먹지 마세요 – 우리가 이걸 다뤄볼게요.
서버 시작, 중지 및 재시작
Linux에서 서비스를 관리하는 법을 안다면, 벌써 "절반은 끝난 겁니다". 우리의 웹 서버를 관리하기 위한 주요 명령어는 다음과 같습니다:
Nginx 용:
sudo systemctl start nginx # 시작
sudo systemctl stop nginx # 중지
sudo systemctl restart nginx # 재시작
sudo systemctl reload nginx # 설정 다시 불러오기
Apache 용:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
설정 확인
서버를 재시작하기 전에, 오류를 저지르지 않았는지 항상 확인하세요:
Nginx 용:
sudo nginx -t
Apache 용:
sudo apachectl configtest
설정에 오류가 있으면 보여주니 서버를 실수로 망가뜨릴 일은 없어요.
4. 데모: 우리의 첫 번째 사이트를 실행하기
지금부터 웹 개발자들이 정말 좋아하는 것을 해볼 거야 – "Hello Server"라는 놀랍도록 창의적인 이름의 사이트를 만들어 보자.
Nginx용
사이트를 위한 디렉토리 생성:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
파일에 다음 내용을 작성해보자 (맞아, 모든 천재적인 건 단순해):
<h1>Hello, Nginx Server!</h1>
설정 파일 작성:
sudo nano /etc/nginx/sites-available/hello
간단한 설정 예제는 다음과 같아:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }
설정 활성화:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
로컬 컴퓨터에서 도메인 이름
hello.local
를 설정하기 위해/etc/hosts
에 항목 추가:127.0.0.1 hello.local
브라우저에서 사이트를 확인해봐: http://hello.local.
hosts 파일에는 IP 주소를 도메인 이름에 매핑하는 내용이 포함돼 있어. 이 파일이 당신의 로컬 DNS 서버야. 모든 운영 체제에 이 파일이 있어. Windows에서도 C:\Windows\System32\drivers\etc\hosts 경로에서 찾을 수 있어.
Apache용
디렉토리 생성:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
파일에 내용 추가:
<h1>Hello, Apache Server!</h1>
가상 호스트 설정 파일 작성:
sudo nano /etc/apache2/sites-available/hello.conf
설정 예제:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
설정 활성화:
sudo a2ensite hello.conf sudo systemctl reload apache2
/etc/hosts
파일에 항목 추가:127.0.0.1 hello.local
작동 여부 확인: http://hello.local.
오늘 강의를 들었다면, 이제 주요 웹 서버를 독립적으로 설치하고 설정할 준비가 된 거야. 조금만 더 노력하면, 어린아이의 그림처럼 보이지 않는 완전한 사이트와 애플리케이션을 배포할 수 있을 거야. HTTPS는 어디쯤 숨어 있지만, 그건 나중에 다뤄보자.
GO TO FULL VERSION