[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 11월  3 23:47 conf
drwxr-xr-x. 2 root root    6 11월  3 23:47 logs
drwxr-xr-x. 2 root root   19 11월  3 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. 포트포워딩 추가

<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidu6uUaJCk_fnnKL2rKSSmO44DapTsetVWemA_Ge7mGCBe29qdrbPaqSKwH5AdxpaXd96g9goOZPqE5be9xS_T61CGUCjC0eyycGsjTWHWPLYCxuLAeh4OXt1avkvwMX4aSvhlW-wwC5DAXRepPFi5gmGAdbhvMDMKP-rYNP2Hvt74y_KJOtMkyAHt/s1600/nginx-1.PNG" style="display: block; padding: 1em 0; text-align: center; "><img alt="virtualbox port forwarding" border="0" data-original-height="379" data-original-width="833" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidu6uUaJCk_fnnKL2rKSSmO44DapTsetVWemA_Ge7mGCBe29qdrbPaqSKwH5AdxpaXd96g9goOZPqE5be9xS_T61CGUCjC0eyycGsjTWHWPLYCxuLAeh4OXt1avkvwMX4aSvhlW-wwC5DAXRepPFi5gmGAdbhvMDMKP-rYNP2Hvt74y_KJOtMkyAHt/s1600-rw/nginx-1.PNG"/></a></div>



### 7-2. 방화벽 해제
```
[root@vbox nginx] $ sudo firewall-cmd --permanent --add-port=10099/tcp
success
[root@vbox nginx] $ sudo firewall-cmd --reload
success

```

---

## 8. 동작 확인
웹에서 동작 확인
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWsNFu6WNkgKBjWFw5ZNxfp6z_iNqAXH0X72s38dLZpwLocN1GFw7SbYcSWc-Vtolcmd_FgCT3QVDbuFX3G3YTCYbLjhbBcFg5Rxa1EkIdz8QRxeqTjZR8mDO251snn1v3U9X6xCFdnYI3vTeP4ICYF5XpB_PkrcHcY51nZ1fBfWjrrJqYo8Iho0Zf/s1600/nginx-2.PNG" style="display: block; padding: 1em 0; text-align: center; "><img alt="port forwarding run" border="0" data-original-height="234" data-original-width="976" loading="lazy" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWsNFu6WNkgKBjWFw5ZNxfp6z_iNqAXH0X72s38dLZpwLocN1GFw7SbYcSWc-Vtolcmd_FgCT3QVDbuFX3G3YTCYbLjhbBcFg5Rxa1EkIdz8QRxeqTjZR8mDO251snn1v3U9X6xCFdnYI3vTeP4ICYF5XpB_PkrcHcY51nZ1fBfWjrrJqYo8Iho0Zf/s1600-rw/nginx-2.PNG"/></a></div>

---
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"

```


---


추가로 읽으면 좋을 것

댓글

이 블로그의 인기 게시물

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

대통령 퇴진운동 관련주: 방송·통신·촛불수혜주 완벽 분석

키움 OPEN API MFC 개발 (1)