웹서버 만들기

박형석·2022년 3월 2일
0
post-thumbnail

nginx로 웹서버 만들기

nginx란?

2004년 러시아의 프로그래머 이고르 시쇼브가 발표한 오픈소스 웹서버 프로그램

nginx의 목표는 가벼우면서 강력한 프로그램이라고 한다. HTTP와 리버스 프록시, i/map/pop3등의 서버구동이 가능.
점유율 면에서는 아파치에게 밀리지만 신규서비스를 중심으로 점유율상승에 가속이 붙는중!

엔진엑스 설치

우분투에서 설치

다음 코드를 순차적으로 실행시킨다.

  1. $ sudo apt-get update
  2. $ sudo apt-get install nginx
    아래는 잘 설치되었나 버젼 확인하는것
  3. $ sudo nginx -v
    공식 NGINX 리포지토리에서 미리 빌드된 우분투 패키지 설치
  4. $ sudo wget https://nginx.org/keys/nginx_signing.key

Beginner's Guide

nginx 기본 명령어

기본 형태:

nginx -s 명령어

  • stop: 빠른 종료
  • quit: 정상종료
  • reload: 구성파일 다시 로드
  • reopen: 로그파일 다시열기

reload 명령어는 conf 파일같은 설정파일을 변경한 후 적용을 시킬때 사용하면 됨.

그리고 만약 실행되고 있는 nginx프로세스 목록을 얻고싶으면 $ ps -ax | grep nginx 명령어를 입력하면 된다.

환경설정 파일(nginx.conf)

nginx의 환경설정은 nginx.conf 파일에 값을 지정하여 설정한다.
이 파일은 논리적으로 작성되어 있는 지시어(Directives) 목록이라고 할 수 있다.
애플리케이션 전체가 지시어에 부여하는 값에 의해서 작동한다.

nginx.conf 구조

우선, nginx.conf파일을 찾기위해서 다음 명령어를 입력한다.

  • sudo find / -name nginx.conf
    • 관리자 권한으로 /(루트)에서부터 이름이 nginx.conf 라는 파일을 찾는 명령어.

nano 에디터로 파일을 열면!

많은 내용이 있다.
각각의 블록에는 맡은 역할이 다르다

  • events { ... }
    events 블록은 네트워크의 작동 환경을 설정하는 지시어를 제공한다.
    worker_connections
    하나의 프로세스가 처리할 수 있는 연결(connections)의 수로, 최대 연결 수는 worker_processes X worker_connections 로 계산한다.

  • http { ... }
    http블록은 웹서버에 대한 동작을 설정한다. HTTP부분과 관련된 모듈의 지시어와 값을 정의, 이후에 나올 server와 location의 루트 블록이다.

하나의 http블록 안에서는 여러개의 server블록을 선언할 수 있다.

    • server { ... }
      server블록은 하나의 호스트를 선언하는데 사용됨, http 블록 안에서만 선언될 수 있다.
    • location { ... }
      location블록은 특정 URL을 처리하는 방법을 정의 ????

샘플 페이지 TEST

nginx를 설치 완료 했다면 nginx를 실행 시킨다.
localhost를 브라우저에 검색한다.
그러면 이런 화면이 뜰 것 이다.

이 화면이 떴다면 nginx가 정상적으로 실행되고 있다는 것이다.

그러면 여기서 궁금한 것이 하나 생긴다.

저 화면은 어디서 가져온거지?

바로,

이것이다.

이것은 우분투 기준
/etc/nginx/sites-available폴더에 default 라는 파일이다.

위에 listen 80 default_server;라고 되어 있는 부분이 80번 포트에서 실행중 이라는 뜻이고

주석 밑부분에 있는
root /var/www/html은 해당 위치에 있는 html파일을 root로 설정을 해 놓은 것이다.

지정된 포트에 html파일 띄우기

다음의 html파일을 생성한다. 위치는 상관없다.

<!DOCTYPE html>
<html>
<head>
<title>My Awesome Web</title>
</head>
<body>

<h1>Hello World</h1>
<p>This is for Codestates DevOps Bootcamp!</p>

</body>
</html>

그리고 아까 우리가 봤던 nginx.conf 에서 server블록을 다음과 같이 작성한다.

  1. 우리는 8080 포트를 사용할 거다.
  2. 서버네임은 중복되지 않게 한다.
  3. location 에서 root는 html파일의 위치이다. 즉, html파일이 들어있는 폴더의 위치이다(pwd사용해서 알아보자)

여기서 중요한 점은 설정 파일을 수정하는 것이기 때문에 관리자 권한이 필요하다.

  • sudo nano nginx.conf : conf파일 수정
  • sudo nginx -s reload: nginx 서버 재가동

그러면 html파일이 잘 업로드 된걸 볼 수 있다.

profile
Better Than Yesterday

0개의 댓글