일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 잠시만조용히
- 아오
- Vue
- 인공지능
- 안드로이드 빌드 안될때
- 로그
- 인텔리제이
- for문
- rufus
- MUI
- 자바
- gitbash
- 안드로이드 빌드 안됨
- AI
- 백틱
- CentOS7
- 반복문
- 깃
- 연결리스트
- marquee
- 부팅디스크
- Intellij
- Linked List
- GIT
- Linux
- 한글깨짐
- 운영체제
- CentOS
- 핫모듈
- While문
- Today
- Total
새끼 개발자의 Life is egg
Spring boot, React 배포 (with Nginx) 본문
스프링부트로 만든 백엔드를 jar로 빌드할 때 react 까지 같이 빌드해버리는 방법을 써봤는데
라우팅때문에 그런지 이렇게 해도 저렇게 해도 잘 안됐다. 어떻게 배포는 되더라도 proxy 문제가 생긴다거나...
결국 백이랑 프론트를 따로 배포하기로 함
1. 백엔드 빌드
터미널 켜서 프로젝트 최상단 경로에서 gradlew build 하기
(인텔리제이에서 gradle 빌드했는데 계속 snapshot-plain.jar 만 생김. 내가 필요한건 그냥 스냅샷이다.)
그러면 build 폴더 안에 libs > projectName-0.0.1-snapshot.jar 파일이 생김
터미널 켜서
java -jar jar경로/projectName-0.0.1-snapshot.jar 실행되는지 확인하자
혹시 main 클래스 없다고 뭐라고 하면
build.gradle에 명시해주자
jar {
manifest {
attributes 'Main-Class': 'com.gejang.GejangApplication'
}
}
2. 프론트엔드 빌드
터미널 켜서 해당 프론트 경로에서 npm run build 하면
build 폴더가 생성되고 그 안에 빌드된 파일들이 생성된다.
3. Nginx
Nginx를 설치한다. (현재 버전 1.24.0)
설치하고 nginx가 있는 폴더로 가면 conf 폴더가 있다.
nginx.conf 파일을 열어서 수정한다.
server {
listen 8080
server_name localhost;
location / {
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /gejang {
proxy_pass http://127.0.0.1:8082;
}
...
}
여기서 server 밑의 listen은 포트번호 알아서 설정해주고...
location /
- root html
nginx 폴더에 html 폴더가 있다
여기에 2번 프론트엔드 배포한걸 넣어주거나
아니면 root 뒤에 html 대신 빌드 파일 경로를 넣어준다.
나는 그냥 html에 빌드된거 싹 넣어버림
- try_files
url 못찾으면 그냥 index.html 띄우라는 의미다.
리액트 라우팅때문에 웹 새로고침하면 404 에러가 뜨기때문에 설정해줌
localhost:8080/ 에서는 새로고침해도 되지만
라우팅으로 localhost:8080/hello 인 상태에서새로고침하면
얘는 localhost:8080/hello 경로를 찾기때문에 404 뜨는거임
location /gejang
- proxy_pass
백엔드 서버를 따로 띄웠기 때문에 프론트에서 요청하면 백엔드 서버(다른 포트)로 넘겨줘야 했다
url이 /gejang 으로 시작하는 요청에 대해 해당 ip:port로 연결해줌
여러 서버가 있다면 다 해주면 됨
그리고 nginx 구동하고
localhost:8080 으로 접근하면 됨
윈도우에서 nginx 실행/중지/재실행
터미널 켜고 nginx 경로로 이동해서
start nginx
nginx -s stop
nginx -s reload
그런데 설정이 잘 안먹을 때가 있다.
nginx 껐는데도 접근이 된다던지... reload 해도 잘 안되더라
아마 어딘가 캐시같은 찌꺼기가 남아 돌아다니는거같은데...
급한대로 재부팅해서 해보자
'개발's egg > Javascript' 카테고리의 다른 글
axios 서버에서 에러때렸는데 then도 타고 catch도 타고 왜죠? (0) | 2023.05.24 |
---|---|
React 배포 난독화 (0) | 2023.05.02 |
React에서 proxy 여러개 필요할때 (0) | 2023.04.13 |
Javascript Dom Empty (0) | 2023.03.10 |
자바스크립트 백틱 적용 안됨 `${}` (2) | 2022.08.31 |