[2] Nginx 서버 셋업 - 특정버전 nginx 다운로드하여 셋업

시스템 경로에 셋업하여 실행하는 법이 있지만, 다운로드 및 빌드하여 셋업하는 방법으로 진행하겠습니다.

구축환경

  • Red Hat Enterprise Linux release 9.4 (Plow)

1. NGINX 다운로드 및 압축 해제

wget http://nginx.org/download/nginx-1.21.6.tar.gz
tar -xvf nginx-1.21.6.tar.gz

2. 필요 Library 설치

sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
  • gcc: C 컴파일러로, NGINX 소스 코드를 컴파일하여 실행 가능한 프로그램으로 만드는데 필요합니다.
  • pcre: Perl Compatible Regular Expressions 라이브러리로, NGINX에서 정규 표현식을 처리할 수 있도록 지원합니다.
  • pcre-devel: PCRE 라이브러리의 개발 헤더 파일을 포함하며, NGINX를 컴파일할 때 필요합니다.
  • zlib: 데이터 압축을 위한 라이브러리로, NGINX의 Gzip 압축 기능을 사용하기 위해 필요합니다.
  • zlib-devel: zlib의 개발 파일을 포함하며, 소스 컴파일 시 필요한 헤더 파일과 라이브러리를 제공합니다.
  • openssl: SSL/TLS 암호화를 위한 라이브러리로, HTTPS 및 보안 연결을 처리하기 위해 NGINX에 필요합니다.
  • openssl-devel: OpenSSL 라이브러리의 개발 헤더 파일을 포함하며, NGINX의 SSL/TLS 지원을 컴파일할 때 필요합니다.

만약 설치시 아래 에러가 발생한다면

Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)                                                                        0.0  B/s |   0  B     00:00
Errors during downloading metadata for repository 'rhel-9-for-x86_64-baseos-rpms':
  - Curl error (91): SSL server certificate status verification FAILED for https://cdn.redhat.com/content/dist/rhel9/9/x86_64/baseos/os/repodata/repomd.xml [OCSP response has expired]
오류: repo를 위한 메타자료 내려받기에 실패하였습니다 'rhel-9-for-x86_64-baseos-rpms': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

아래 명령어 이후 진행하면 되네요 ( 시스템 시간이 맞지않을 경우 에러 나는현상 )

systemctl restart chronyd

3. 경로 설정

/root 경로에 설치

./configure --prefix=$PWD/build --sbin-path=/root/nginx/sbin/nginx --conf-path=/root/nginx/conf/nginx.conf --error-log-path=/root/nginx/logs/error.log --http-log-path=/root/nginx/logs/access.log --http-client-body-temp-path=/root/nginx/client_body_temp --http-proxy-temp-path=/root/nginx/proxy_temp --http-fastcgi-temp-path=/root/nginx/fastcgi_temp --pid-path=/root/nginx/logs/nginx.pid --lock-path=/root/nginx/logs/nginx.lock
make
make install 

3-1. 설정별 설명

1. ./configure --prefix=$PWD/build: 설치될 기본 디렉토리를 현재 작업 디렉토리 내의 `build` 폴더로 지정.
2. --sbin-path=/root/nginx/sbin/nginx: 실행 파일 nginx가 설치될 경로 지정.
3. --conf-path=/root/nginx/conf/nginx.conf: NGINX 설정 파일의 경로를 지정.
4. --error-log-path=/root/nginx/logs/error.log: 에러 로그 파일의 경로를 지정.
5. --http-log-path=/root/nginx/logs/access.log: HTTP 요청 로그 파일의 경로를 지정.
6. --http-client-body-temp-path=/root/nginx/client_body_temp: 클라이언트 본문 임시 파일을 저장할 경로를 지정.
7. --http-proxy-temp-path=/root/nginx/proxy_temp: 프록시 요청 임시 파일 저장 경로를 지정.
8. --http-fastcgi-temp-path=/root/nginx/fastcgi_temp: FastCGI 요청 임시 파일 저장 경로를 지정.
9. --pid-path=/root/nginx/logs/nginx.pid: NGINX의 프로세스 ID 파일 경로를 지정.
10. --lock-path=/root/nginx/logs/nginx.lock: 잠금 파일의 경로를 지정하여 중복 실행 방지.

4. 설치 완료 확인

[root@vbox nginx]# pwd
/root/nginx

[root@vbox nginx]# ll
합계 4
drwxr-xr-x. 2 root root 4096 113 23:47 conf
drwxr-xr-x. 2 root root    6 113 23:47 logs
drwxr-xr-x. 2 root root   19 113 23:47 sbin

5. nginx 서버 설정

설정은 우선 아래과 같이 세팅

worker_processes  1024;

events {
    worker_connections  1024;
    use epoll;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    large_client_header_buffers 4 16k;

    server {
        listen       10099;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

    }
}

6. 실행

nginx 설치된 경로의 sbin 접근

cd /root/nginx/sbin
./nginx 

위 명령어 실행 시, ps -ef | grep nginx로 프로세스 확인

nobody     44425   43920  0 23:56 ?        00:00:00 nginx: worker process
nobody     44426   43920  0 23:56 ?        00:00:00 nginx: worker process
nobody     44427   43920  0 23:56 ?        00:00:00 nginx: worker process
nobody     44428   43920  0 23:56 ?        00:00:00 nginx: worker process
nobody     44429   43920  0 23:56 ?        00:00:00 nginx: worker process

7. 접근 확인

VM에서 띄운 서버이기 때문에 포트포워딩과 내부에서 방화벽 해제가 필요하다

7-1. 포트포워딩 추가

virtualbox port forwarding

7-2. 방화벽 해제

[root@vbox nginx] $ sudo firewall-cmd --permanent --add-port=10099/tcp
success
[root@vbox nginx] $ sudo firewall-cmd --reload
success

8. 동작 확인

웹에서 동작 확인

port forwarding run

nginx 로그 접근 확인

10.0.2.2 - - [04/Nov/2024:00:06:21 +0900] "GET / HTTP/1.1" 403 555 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
10.0.2.2 - - [04/Nov/2024:00:06:22 +0900] "GET /favicon.ico HTTP/1.1" 500 579 "http://127.0.0.1:10099/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"

댓글

이 블로그의 인기 게시물

윤석열 계엄령 선포! 방산주 대폭발? 관련주 투자 전략 완벽 분석

한국 핵무장 논의와 방위산업 관련주: 핵무기 개발 과정과 유망 종목 분석

[로스트아크] 제작 효율 최적화 위한 영지 세팅