CodeGym /행동 /Docker SELF /웹 서버 설치 및 설정 (Nginx/Apache)

웹 서버 설치 및 설정 (Nginx/Apache)

Docker SELF
레벨 7 , 레슨 0
사용 가능

웹 서버 설치 및 설정 (Nginx/Apache)

1. 웹 서버란 무엇인가?

오늘은 NginxApache에 대해서 얘기해볼 거야. 이 두 웹 서버는 가장 인기 있는 것들이야. 강의가 끝날 때쯤이면 네 서버가 인터넷 사용자들을 자랑스럽게 맞이할 준비를 할 수 있을 거야.

명령어들을 실행하기 전에, 우리가 뭘 달성하려는 건지 한번 알아보자. 웹 서버는 프로그램이야. HTTP 요청을 받고 (예를 들어 사용자가 브라우저에 사이트 주소를 입력할 때), 이를 처리한 다음 적절한 콘텐츠(HTML 페이지, 파일 또는 '404 Not Found' 오류 등)를 반환하지. 웹 서버는 사용자와 너의 콘텐츠 사이를 연결하는 역할을 해.

Nginx vs Apache: 웹 서버의 전쟁

만약 Nginx랑 Apache가 카페에서 만났다면:

  • Nginx는 라벤더 라떼를 주문하고 모든 일을 비동기적으로 처리했을 거야: "내게 요청해봐, 1분 후에 파일 줄게, 방해하지 마!"
  • Apache는 그에 반해 좀 더 전통적이었을 거야, 각 작업마다 스레드를 생성하고 정중하게 응답했겠지만, 요청량이 많을 때는 좀 느렸을 거야.

간단한 차이점:

특징 Nginx Apache
아키텍처 비동기적 스레드 기반
성능 큰 부하에서도 높은 성능 동적 작업(PHP/Perl)에 적합
간단함 간단한 설정, 하지만 몇 가지 까다로운 점이 있음 더 범용적이지만 더 복잡함

언제 어떤 것을 선택해야 할까?

  • 네 사이트가 몇 개의 정적 파일(예: 블로그나 랜딩 페이지)로 이루어져 있다면, Nginx가 너의 친구야.
  • 만약 동적 웹 애플리케이션(예: PHP 사이트)을 다룬다면, Apache가 더 많은 유연성을 제공할 거야.

2. 웹 서버 설치

이제 왜 필요한지 알았으니 설치를 시작할 때입니다. 우리는 Nginx와 Apache 둘 다 설치하는 방법을 살펴볼 거예요. 마음에 드는 걸 고르거나, 둘 다 설치해서 전문가 느낌을 내보세요.

Nginx 설치

  1. 패키지 리스트 업데이트:

    sudo apt-get update
    
  2. Nginx 설치:

    sudo apt-get install nginx
    
  3. 서버 상태 확인:

    sudo systemctl status nginx
    

    만약 문제가 없다면, active (running) 같은 메시지가 보일 거예요.

  4. 기본 페이지 확인: 브라우저를 열고 http://localhost를 입력하세요. Nginx의 환영 페이지가 보인다면 설치가 성공적으로 완료된 겁니다.

Apache 설치

  1. 패키지 리스트 업데이트:

    sudo apt-get update
    
  2. Apache 설치:

    sudo apt-get install apache2
    
  3. 서버 상태 확인:

    sudo systemctl status apache2
    

    Nginx와 마찬가지로, 상태는 active (running)일 거예요.

  4. 기본 페이지 확인: 브라우저에서 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용

  1. 사이트를 위한 디렉토리 생성:

    sudo mkdir -p /var/www/hello
    sudo nano /var/www/hello/index.html
    

    파일에 다음 내용을 작성해보자 (맞아, 모든 천재적인 건 단순해):

    <h1>Hello, Nginx Server!</h1>
  2. 설정 파일 작성:

    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;
        }
        }
  3. 설정 활성화:

    sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx
    
  4. 로컬 컴퓨터에서 도메인 이름 hello.local를 설정하기 위해 /etc/hosts에 항목 추가:

    127.0.0.1 hello.local
    
  5. 브라우저에서 사이트를 확인해봐: http://hello.local.

중요!

hosts 파일에는 IP 주소를 도메인 이름에 매핑하는 내용이 포함돼 있어. 이 파일이 당신의 로컬 DNS 서버야. 모든 운영 체제에 이 파일이 있어. Windows에서도 C:\Windows\System32\drivers\etc\hosts 경로에서 찾을 수 있어.

Apache용

  1. 디렉토리 생성:

    sudo mkdir -p /var/www/hello
    sudo nano /var/www/hello/index.html
    

    파일에 내용 추가:

    <h1>Hello, Apache Server!</h1>
  2. 가상 호스트 설정 파일 작성:

    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>
  3. 설정 활성화:

    sudo a2ensite hello.conf
    sudo systemctl reload apache2
    
  4. /etc/hosts 파일에 항목 추가:

    127.0.0.1 hello.local
    
  5. 작동 여부 확인: http://hello.local.


오늘 강의를 들었다면, 이제 주요 웹 서버를 독립적으로 설치하고 설정할 준비가 된 거야. 조금만 더 노력하면, 어린아이의 그림처럼 보이지 않는 완전한 사이트와 애플리케이션을 배포할 수 있을 거야. HTTPS는 어디쯤 숨어 있지만, 그건 나중에 다뤄보자.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION