Side Project/devOps

NginX웹서버 설치 및 jar파일 배포하기

밍미a 2024. 8. 7. 18:24
728x90

읽어보면 좋을 선지식)

https://velog.io/@cjyooong/apache-nginx

 

웹 서버 Apache보다 Nginx를 사용하는 이유

Java로 프로그래밍을 처음 시작할때는 웹서버는 Apache, WAS는 Tomcat으로 웹 사이트를 구현했었다.전 직장에서도 웹 서버-Apache, WAS-Tomcat을 사용하고 있었지만, Python으로 프로젝트를 배포하며 알게된

velog.io

https://velog.io/@jm1225/NginX-Reverse-Proxy

 

NginX - Reverse Proxy

nginx에 대해 알아보고, 리버스 프록시 서버 구동하기

velog.io

 

 


1. NginX 설치 )

 

(https://masterpiece-programming.tistory.com/241)

// 패키지 업데이트

$ sudo apt-get update

//nginx 설치

$ sudo apt-get install nginx

//nginx 버전확인

$ sudo nginx -v

// nginx 시작

$ sudo nginx -t

 

더보기

## 호스트를 해석할 수 없습니다. 이름 혹은 서비스를 알 수 없습니다.

 

-> 에러 발생 이유 : hostname과 /etc/hosts 내부에 있는 호스트네임의 불일치로 발생함 

따라서 /etc/hosts 내부에있는 호스트명과 hostname과 일치 시켜주면 해결된다.

 

# 호스트 명 파악 :

아래 명령어를 입력해 호스트 이름을 받아오자.

hostname

# /etc/hosts 로 찾아들어가야 한다.

vi /etc/hosts

-> vi 편집기로 /etc/hosts 파일 열라는 .

로컬호스트 아래에 아까 찾은 hostname 넣어준다.

 


2.간단한 샘플 프로젝트 만들고 빌드)

프로젝트를 하나 생성해서

정말 아무것도 없이 html 파일 하나만 덩그러니 넣어줬다

 

인텔리제이에서 빌드하여 jar파일로 만들어내자.

-> jar파일은 톰캣이 내장되어 있어서 서버에 따로 톰캣을 깔아주지 않아도 된다. 

( https://m.blog.naver.com/qhdythf/221694075513 )

-> build를 더블클릭해서 실행하면 

build>libs 디렉토리에 jar파일이 생성된다.

-> 이제 만들어낸 jar파일을 가상서버로 옮기자.


3.파일질라로 배포)

https://filezilla.softonic.kr/mac

 

FileZilla

안전하고 빠른 FTP 전송

filezilla.softonic.kr

-> 파일질라 설치해준다.

파일질라 열어서 서버에 접속한다.

-> 공인 ip 사용자 id, 비빌번호를 입력한 연결을 누른다.

생성한 프로젝트의 폴더로 들어가서 build/libs 에 들어있는 jar파일을 서버로 드래그 앤 드랍으로 넣어준다.

나는 서버에 application 디렉토리를 하나 생성해주고, 안에 넣어주었다.


4.서버에서 NginX 실행 )

(https://masterpiece-programming.tistory.com/241)

Nginx를 사용하는 이유는 특정 포트를 열어 서비스를 운영하고, ssl 연결을 하기 위함이다.

sites-available, sites-enable 의 설정을 해주어야 한다.

 

먼저 sites-available 폴더로 이동한다.

cd /etc/nginx/sites-available/

프로젝트명으로 설정파일을 작성한다.

sudo vim (프로젝트명)

내용은 다음과 같이 작성한다.

server {
        listen 80;
        server_name localhost;

        location / {
                proxy_pass http://localhost:8080;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
        }
}

서버를 80포트로 서비스한다는 의미이다. localhost 부분은 도메인 설정할 바꿀 것이다.

proxy_set_header - localhost:8080로 실행된 스프링부트 서버에 특정 헤더값을 전달하기 위해서 proxy_set_header를 사용한다. 

(Nginx 통해서 스프링부트의 톰캣서버로 요청이 전달되기 때문에 "Remote IP" 헤더값이 실제 값이 아닌 127.0.0.1 처럼 잘못 전달되는 것을 방지하기 위해 사용한다.)

 

proxy_pass -> Nginx 웹서버의 모든 요청을 http://localhost:8080 리다이렉트한다.

Real-IP -> 실제 접속 IP

Forwarded-For -> 프록시 서버가 여러개일때의 주소

Host -> 요청 필수

그다음 sites-enabled 디렉터리의 설정을 바꿔준다.

 

cd /etc/nginx/sites-enabled/

-> 디렉터리로 이동

sudo rm default

-> 기본 default 설정값 삭제

sudo ln -s /etc/nginx/sites-available/(프로젝트명)

-> sites-available에서 작성한 파일을 링크 걸어주는

sudo systemctl restart nginx

-> NginX 재시작


4.NginX 와 jar파일 연동 및 실행 )

 

내 jar파일이 들어있는 디렉터리로 이동한 후 

cd root/application

java -jar (jar파일 명).jar

을 실행해준다.

-> 이렇게 실행하면, 나중에 서버 재시작했을때 jar파일을 일일히 경로에 들어가서 실행해줘야 한다는 번거로움이 있다.

이것은 아주 기초적인 연습일 , 추후에 도커와 젠킨스로 배포하는것과 서버가 실행될 자동으로 실행되는 파이프라인을 설정하는것으로 변경할 예정이다. 

 

공인ip로 들어가서 웹 페이지가 뜨는지 확인해준다.

-> 성공..! 조만간 도메인도 달아서 그럴싸한 웹페이지를 만들어봐야지..

 

ps. 오늘 배포연습에 많은 도움을 준 개미모임 친구들에게 이 영광을 바칩니다..🫶 ㅎㅎ