코딩마을방범대

[우분투] 개별 폴더에 Nginx 각각 구축하기 본문

💡 백엔드/우분투

[우분투] 개별 폴더에 Nginx 각각 구축하기

신짱구 5세 2024. 1. 25. 17:38

 

 

 

 

우분투에서 Nginx 구축

웹서버 Nginx & Apache (이전 포스트) 1. Nginx 설치 apt 업데이트 후 Nginx 설치 Nginx 설치 시 자동으로 실행됨 $ sudo apt update $ sudo apt-get install nginx Nginx 실행 $ sudo service nginx start # or $ sudo systemctl start nginx

sweet-rain-kim.tistory.com

 

서버에 Nginx 하나를 구축하는 것은 위 링크를 참고하면 된다.

하지만 이번 포스팅에선 사용자 별로 각각의 홈디렉토리에 Nginx를 구축해볼 것이다.

물론 포트 번호는 전부 달라야하고, 메인 Nginx 하나를 구축하는 것보다 훨씬 번거롭다.

 

모든 명령어는 root 권한을 기반으로 실행했다!

 

 

 

 


 

 

 

 

 

 

Nginx 설치하기

 

1. Nginx 소스 파일 다운로드

 

우선 Nginx에 대한 소스를 다운 받은 후 디컴파일 해서 설치 위치를 변경해줘야 한다.

소스 파일을 다운 받기 위해선 apt 를 이용해 다운 받는 방법이 아닌 curl 또는 wget을 사용해야 한다.

 

cd를 이용해 다운로드 받을 폴더로 이동 후 작업해주는게 편하다.

 

sudo wget http://nginx.org/download/nginx-1.21.1.tar.gz

 

 


 

 

 

2. Nginx 소스 파일 압축 해제

 

위 명령어를 통해 다운로드 받았다면, 다운로드 된 tar.gz 파일을 압축 해제 해준다.

그 뒤에 conf 파일에 접근하기 위해 압축해제 된 폴더로 이동한다.

 

sudo tar xzvf nginx-1.21.1.tar.gz
cd nginx-1.21.1

 

 


 

 

 

3. conf 파일 수정 (설치 디렉토리 변경)

 

cd를 통해 압축해제 한 폴더에 들어왔다면 conf 파일을 수정해준다.

 

sudo ./configure --prefix=설치할 폴더

 

위 명령어 실행 시 다양한 오류가 발생할 수 있다.

아래는 발생하는 오류 별 설치해야하는 라이브러리들이다.

 

오류 설치 명령어
checking for C compiler ... not found ./configure: error: C compiler cc is not found sudo apt-get update && sudo apt-get install build-essential
./configure: error: the HTTP rewrite module requires the PCRE library. sudo apt-get update && sudo apt-get install libpcre3 libpcre3-dev
./configure: error: the HTTP gzip module requires the zlib library. sudo apt-get update && sudo apt-get install zlib1g-dev

 

 

발생한 오류 별 설치가 아닌 그냥 전체 라이브러리를 설치하겠다 하면 아래 명령어를 수행하면 된다.

 

sudo apt-get update && sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g-dev

 

 

 


 

 

 

4. 지정 폴더에 Nginx 설치

 

nginx 소스 파일 컴파일 후 --prefix로 설정한 위치에 Nginx를 설치해준다.

 

sudo make && sudo make install

 

 

아래는 설치 완료된 모습이다.

sbin/nginx 파일을 통해 서비스를 구동 시킬 수 있으며,

conf/nginx.conf 파일을 수정하여 Nginx의 설정을 변경할 수 있다.

 

 

 

 

 

 

 


 

 

 

 

 

 

Nginx 서비스 제어 sh 작성

 

나는 자바를 통해 서비스를 구동시킬 예정이라 sh 파일을 따로 작성해주었다.

아래는 작성한 예시이다.

 

#!/bin/bash

# Nginx 설치 경로
SERVICE_PORT=${2}
FILE_PATH=${3}
FILE_NAME=${4}

# Nginx 실행 파일 경로
NGINX_BIN=$FILE_PATH/sbin/$FILE_NAME

pid=$(sudo lsof -i :$SERVICE_PORT | grep LISTEN | awk '{print $2}')

case "$1" in
    start)
        # listen 뒤의 포트 번호를 전부 변경하여 저장
        sudo sed -i "s/listen[ ]*[0-9]*;/listen $SERVICE_PORT;/" $FILE_PATH/conf/nginx.conf

        $NGINX_BIN -c $FILE_PATH/conf/nginx.conf
        echo "Nginx Start"
    ;;
    stop)
        # $NGINX_BIN -s stop 로 줘도 되지만 강제 종료를 원하기 때문에 kill 로 정지
        kill -9 $pid echo "Nginx Shutdown"
    ;;
    restart)
        sudo sed -i "s/listen[ ]*[0-9]*;/listen $SERVICE_PORT;/" $FILE_PATH/conf/nginx.conf

        $NGINX_BIN -c $FILE_PATH/conf/nginx.conf -s reload
        echo "Nginx Reload"
    ;;
esac

 

 

 

 


 

 

 

💡 폴더 내의 모든 파일에서 특정 단어 찾는 방법

 

파일을 열지 않고 conf 파일에 'listen' 을 검색해 무슨 포트로 설정되어있는지 확인할 수 있다.

sudo grep -r '[찾을 단어]' [폴더]

 

 

 

 


 

 

 

💡 Nginx 설치 경로(prefix) 찾는 방법

 

위에서 설정한 prefix가 제대로 설정되어 있는지 확인할 수 있다.

설치 경로를 기준으로 conf 파일에 설정된 폴더 경로를 찾아가기 때문에 상대 경로로 지정할 경우에는 nginx 설치 경로가 중요하다!

(절대 경로일 경우는 문제 없음)

sudo [nginx 설치 폴더]/sbin/nginx -V

 

 

 

 

 

 

SMALL