-
Nginx 설치 방법과 마주한 에러 해결 방법개발에 필요한 기초 지식 2022. 5. 1. 14:22
미래에 다른 가상환경에 Nginx를 설치하며 고생할 저를 위해 AWS 배포 과정에서 Nginx 설치 중에 마주했던 에러와 전체적인 설치 방법에 대해 쓰고자 합니다. 저는 Linux 환경에서 설치를 진행한 점 참고 부탁드립니다.
보통 저와 같은 Python, Django를 활용하는 백엔드 개발자라면 gunicorn과 Nginx를 함께 설치할것이기에 gunicorn 설치부터 차례대로 진행하겠습니다.
< gunicorn 설치 과정 >
# 가상환경을 이용한다면 가상환경에 설치하면 된다. pip install gunicorn
Django 해당 앱 디렉토리로 이동하여 아래 명령어 실행
# 둘 중 한 가지 방법 선택 (백그라운드에서 실행 원하시면 2번 방법 선택) # 1. gunicorn --bind 0.0.0.0:8000 쟝고 앱 이름.wsgi 입력 gunicorn --bind 0.0.0.0:8000 bangguseok_traveller.wsgi # 2. nohup 툴 사용하여 gunicorn 백그라운드 동작 nohup gunicorn --bind=0.0.0.0:8000 앱 이름.wsgi &
성공적으로 작동하고 있는 gunicorn < Nginx 설치 과정시 발생한 libpython 의존성 문제 해결 방법 >
저처럼 바로 설치를 시도하시면... 바로 되시면 다행인데 저처럼 libpython3.10-miniaml 관련한 의존성 문제가 발생한다면 이 글이 도움이 될 것 같아 공유합니다. 이건 Nginx의 문제는 아니고 gunicorn 설치할 때도 발생했던 문제인 것으로 보아 아마 에러에도 나와있지만 libpython 의존성 문제인듯 합니다.
nginx 설치시 발생한 의존성 문제 => 생활코딩 영상과 구글링으로 해결 # Try removing the problematic packages ie libpython3.10-minimal libpython3.10-stdlib. sudo apt remove libpython3.10-minimal libpython3.10-stdlib # If this says to run --fix-broken then remove it manually ie like this. ls -l /var/lib/dpkg/info | grep -i libpython3.10-minimal # This shows the truncated file names which contain libpython3.10-minimal. # Now move it into a different directory. sudo mv /var/lib/dpkg/info/libpython3.10-minimal:amd64.* /tmp # Then do. sudo apt --fix-broken install
< Nginx 설치 과정 >
자 그러면 본격적으로 가상환경에 Nginx 설치를 진행해보겠습니다.
저는 utils 라는 디렉토리를 생성하여 아래의 압축을 해제한 파일들을 모두 넣어뒀습니다.
# Nginx 다운로드 및 압축 해제
1. http://nginx.org/en/docs/install.html 접속하여 Installation on Linux 아래에 있는 packages 클릭
2. 오른편에 있는 download 클릭
3. Stable version의 nginx-1.20.2 우클릭하여 링크 주소 복사 클릭 (version은 달라질 수 있습니다.)
4. CLI(터미널)에서 원하는 디렉토리로 이동하여 wget 복사한 주소 붙여넣기 입력
# 아래 명렁어 통해 다운로드 진행 wget http://nginx.org/download/nginx-1.20.2.tar.gz # 아래 명령어 통해 압축 해제 tar -xvf nginx-1.20.2.tar.gz
# PCRE 다운로드 및 압축 해제
1. http://pcre.org 접속하여 Download 아래 https://sourceforge.net/projects/pcre/files 클릭
2. pcre 클릭 => pcre-8.45.tar.gz 우클릭하여 링크 주소 복사 클릭 (version은 달라질 수 있습니다.)
# 아래 명렁어 통해 다운로드 진행 wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/download # 이렇게 받으니 파일명이 download로 되어 있어서 저는 파일명 pcre-8.45.tar.gz로 변경 후에 압축 해제 진행했습니다. # 아래 명령어 통해 압축 해제 tar -xvf pcre-8.45.tar.gz
# openssl 다운로드 및 압축 해제
1. http://www.openssl.org/source 접속하여 중간쯤에 있는 3 version 우클릭하여 링크 주소 복사 클릭
왜냐하면 1 version은 23년 11월까지만 지원이 된다고 하고 3 version은 26년 9월까지 지원이 된다고 하여 3 version으로 진행했습니다.
# 아래 명렁어 통해 다운로드 진행 wget https://www.openssl.org/source/openssl-3.0.2.tar.gz # 아래 명령어 통해 압축 해제 tar -xvf openssl-3.0.2.tar.gz
# zlib 다운로드 및 압축 해제
1. http://zlib.net 접속하여 중간쯤에 있는 current release 부분의 tar.gz인 US (zlib.net) 우클릭하여 링크 주소 복사 클릭
# 아래 명렁어 통해 다운로드 진행 wget http://zlib.net/zlib-1.2.12.tar.gz # 아래 명령어 통해 압축 해제 tar -xvf zlib-1.2.12.tar.gz
# 외부 모듈인 echo module 다운로드 및 압축 해제
1. http://wiki.nginx.org/3rdPartyModules 접속하여 HTTP Echo 검색하여 해당 github 링크로 이동
2. download 검색하여 최신 버전이 있는 echo-nginx-module file list 클릭하여 이동
3. 저의 경우 최신 버전인 v0.62 의 tar.gz 우클릭하여 링크 주소 복사 클릭
# 아래 명렁어 통해 다운로드 진행 wget https://github.com/openresty/echo-nginx-module/archive/refs/tags/v0.62.tar.gz # 아래 명령어 통해 압축 해제 tar -xvf v0.62.tar.gz
이렇게 하여 필요한 것들을 모두 다운로드 받고 압축도 해제했습니다.
< 사용자 확인 및 추가 >
저의 경우에는 ps aux | grep nginx를 터미널에서 실행해보니 이미 www-data가 있어서 별도로 추가하는 과정은 진행하지 않았습니다.
혹시 없으시다면 ubuntu는 아래와 같이 진행하시면 됩니다.
useradd --shell /usr/sbin/nologin www-data
그 다음에 컴파일을 진행하기 위해서는 C, C++ 컴파일러가 필요하다고 하여 아래의 명령어로 설치하겠습니다.
sudo apt-get install gcc g++;
아래 부분들은 이고잉 님께서 설명해주신 것들 중에서 설치와 진행에 필요한 것들만 요약한 것이기에 자세한 설명을 보고 싶으시다면 참고 자료에 있는 생활코딩 사이트를 방문하시길 추천드립니다.
< 설치 단계 요약 >
- configure : 환경설정
- make : 설치파일을 컴파일
- make install : 설치파일을 이용하여 설치
< configure >
nginx의 소스 디렉토리로 이동 (저의 경우 /home/bruno/utils/nginx-1.20.2 여기가 소스 디렉토리가 됩니다.)
아래의 명령어에서 version을 나타내는 숫자들은 압축 해제 한 폴더명의 숫자(version)와 동일하게 변경해야 됩니다.
sudo ./configure --with-zlib=../zlib-1.2.12 --with-pcre=../pcre-8.45 --with-openssl=../openssl-3.0.2 --with-http_ssl_module --with-debug --add-module=../echo-nginx-module-0.62 --prefix=/usr/local/nginx --user=www-data --group=www-data
< 컴파일 >
아래의 명령어를 치시면 오랜 시간 후에 컴파일이 완료될 것입니다.
sudo make;
이렇게 뜨면 컴파일은 성공적으로 끝난것입니다. < 설치 >
sudo make install;
Nginx 설치 완료 < Nginx 구동 >
sudo /usr/local/nginx/sbin/nginx;
성공했다면 아무런 메세지도 출력되지 않을 것입니다.
이후 크롬 주소창에 localhost라고 입력하여 아래처럼 뜬다면 성공적으로 구동한 것입니다!
Nginx 성공적으로 구동한 화면 < Nginx 명령어 >
- service nginx start : 시작
- service nginx stop : 정지
- service nginx restart : 재시작
- service nginx reload : 설정 파일 리로드
- service nginx status : 현재 상태
Nginx를 설치하는데 중간에 의존성 문제도 생기고 컴파일이란 것도 처음했어서 시간이 좀 걸렸기에
이번에 이렇게 정리해서 다음번에 할 때는 좀 덜 헤매고 했으면 하는 마음에 이렇게 정리해봤습니다.
다음번에 Nginx란 무엇이며 왜 쓰는지를 쉽고 자세하게 설명해주신 우리밋 님의 영상과 이에 대한 설명을 써볼 예정입니다.
긴 글 읽어주셔서 감사합니다!
< 참고 자료 >
우선 아래의 생활코딩 영상을 기반으로 진행했으니 꼭 참고하시면 좋을 것 같습니다.
https://opentutorials.org/module/384/4511
gunicorn 설치시 참고하시면 좋습니다.
설치시 libpython3.10-miniaml 의존성 문제 발생시 아래 사이트 참고하여 진행하시면 도움될 것 같습니다.
'개발에 필요한 기초 지식' 카테고리의 다른 글
Nginx (0) 2022.07.15 프로그램 & 프로세스 & 스레드 (1) 2022.06.15 AWS RDS에 dump 파일 적용시키기 (0) 2022.04.25 서버(세션) 기반 인증 방식의 장단점 및 동작 방식 (0) 2022.03.23 JWT (Json Web Token) (0) 2022.03.21