읽어보면 좋을 선지식)
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. 오늘 배포연습에 많은 도움을 준 개미모임 친구들에게 이 영광을 바칩니다..🫶 ㅎㅎ
'Side Project > devOps' 카테고리의 다른 글
| 가비아 가상서버에 자바설치 및 환경설정 세팅하기 (1) | 2024.08.05 |
|---|---|
| 가비아 가상서버 구입 및 가상서버 원격접속하기 (0) | 2024.08.05 |