Trailing Slash란?
URL 주소 끝에 /
가 붙는 슬래시를 말함
ex)
https://www.google.co.kr/
주소 끝에 /
가 붙어 있으면 디렉토리 즉 폴더라는 의미이고 없다면 여기가 끝이라는 소리임
Next.js의 경우에 기본으로 /
가 붙지 않는데 이것을 강제로 해주는 방법이라고 보면 된다.
next.config.js
파일에서
const nextConfig = {
reactStrictMode: true,
trailingSlash: true,
};
trailingSlash
옵션을 true로 해서 바꿔주기만 하면 된다.
build
를 하기 위한 명령어 수정
package.json
파일에서 scripts
부분을 수정하도록 한다.
"scripts": {
"dev": "next dev",
"build:ssg": "next build && next export",
"build:ssr": "next build",
"start": "next start",
"lint": "next lint",
"generate": "graphql-codegen"
},
build:ssg
는 ssg 지원하는 명령어 build:ssr
은 ssg, ssr 모두를 지원한다는 명령어 이다.
FROM node:14
WORKDIR /내 작업파일/
COPY . /내 작업파일/
RUN yarn install
RUN yarn build:ssr
CMD yarn start
여러 개의 도커를 한 번에 실행할 수 있는 파일
version: "3.7"
services:
my_frontend:
build:
context: .
dockerfile: ./Dockerfile
ports:
- 3000:3000
띄어쓰기 중요함
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# local env files
.env*.local
# vercel
.vercel
도커를 빌드할 때 제외할 파일들을 올려둔다.
이제 이 out 폴더를 gcp에 올릴 것임
상단에 버킷 만들기를 눌러주고
버킷 이름 입력 -> 위치 아시아 -> 계속 클릭 후 -> 만들기를 누르면 버킷이 생성이 된다.
가장 좌측의 버튼이 쉘이다
이후 yarn install
, yarn build:ssg
를 이용해 out
폴더를 만들어 준다.
이후 새로고침을 해서 out
폴더가 잘 올라갔는지 확인을 한다.
권한 탭에서 추가 버튼을 눌러서
allUsers
의 역할을 Cloud Storage
에서 저장소 개체 뷰어로 등록한다.
그러면 하단 주 구성원에 allUsers
가 추가가 되어있는 것을 확인할 수 있다.
어떤 파일이 시작파일이고 어떤 파일이 에러파일인지 알려줘야 한다.
처음으로 돌아와서 우측 메뉴 클릭 -> 웹사이트 구성 수정을 클릭한다.
기본 페이지에는 index.html(tsx)
오류 페이지에는 404/index.html(tsx)
를 입력한다.
(경로는 프로젝트마다 다를 수 있음)
스토리지 배포 끝
HTTP(S) 부하 분산 구성시작 클릭
다음과 같이 구성해준다.
부하 분산기에는 프론트와 백으로 구성되어 있는데
프론트엔드는 외부에서 로드밸런서로 진입하는 지점을
로드밸런서에서 소스코드가 담겨있는 위치로 내보내는 지점을 백엔드라고 한다.
그 프론트엔드, 백엔드가 아님
부하분산기 이름은 사진 좌측에 있다
프론트엔드 IP주소는 임시 주소로 해도 괜찮으나 나중에 HTTPS 구성을 위하여 고정 IP를 만들어 준다.
백엔드 버킷을 만들어준다.
백엔드 버킷 만들기 클릭
백엔드 버킷 이름 만들어주고 Cloud Storage 버킷
에 만들어둔 스토리지 버킷을 연결하면 가운데의 호스팅 및 경로 규칙은 자동으로 생성이 된다.
로드 밸런서 끝
화살표 모양을 클릭하면 라우팅 정책에 기본값들이 나오는데 이 값을 내가 구매한 가비아 사이트에 입력해야 함
내가 구매한 도메인에서 관리 버튼 클릭
네임서버 설정을 NS레코드
의 레코드 설정값으로 변경해준다.
이 작업은 매우 짧으면 30분 길면 하루 이상이 걸리기도 함
NS레코드 변경 확인법
쉘열어서 dig DNS이름 NS
입력을 하면 NS코드의 네임서버가 변경 되었는지 확인 할 수 있다.
(이 화면이 나와야함)
여기서 A레코드는 DNS에서 로드밸런서로 넘겨주는 역할을 한다.
로드밸런서 IP
Cloud DNS 설정 끝
HTTP와 동일하게 로드밸런서 생성 클릭
버킷은 HTTP 로드밸런서 만들었던 것과 동일
프로토콜에서 HTTPS 클릭 및 IP는 HTTP 로드밸런서와 동일하게 입력
내가 가진 인증서가 있으면 인증서 업로드에 인증서 업로드하고 없으면 구글 관리 인증서로 만들어준다.
여기서 인증서를 확인할 수 있다.
지역은 서울지역, 머신 구성은 취향에 맡게 알아서 한다.
아래로 내려가다보면 부팅 디스크가 있는데 변경을 클릭
우분투에 버전 20.04 LTS를 입력해주고
크기는 알아서 설정한다.
그리고 만들기를 클릭
설치 명령어
sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
설치 명령어
sudo npm install -g yarn
yarn install
해서 node-modules
를 설치하고
yarn build:ssr
을 입력해서 빌드를 해준다.
VM인스턴스 만들기 끝
0.0.0.0/0
으로 입력하고 포트는 TCP 3000으로 해준다방화벽 만들기 끝
만들기 클릭
인스턴스 그룹 만들기 끝
이름과 포트번호를 입력해 준다.
백엔드 서비스 만들기 끝
설치 명령어
sudo apt install docker.io
sudo apt install docker-compose
빌드 명령어
sudo docker-compose build
서버 띄우는 명령어
sudo docker-compose up -d
상태 확인
sudo docker ps
서버 죽이기
sudo docker kill ID
혹은 sudo docker stop ID
도커로 서버를 띄웠으면 중단없이 배포가 완료된다.