여러가지 배포방법들과 SPA에서 실제 경로에 파일이 없을 때 대응하기 위해 각 방법들의 404에러 처리방법까지 알아보자~
1. 서버에서 직접 호스팅
1-1. 로컬 서버
npx serve -s
로 없는 페이지를 처리함
1-2. 클라우드 서버
EC2
(아마존)
Google Compute Engine
Azure
(마소)
Naver Cloud Platform
Cafe24
oracle cloud
2. AWS s3 + cloudfront
Amazon S3
- 파일들을 보관하는 서비스
- js, html, css 등 파일들을 외부에서 접근 가능할 수 있게 한다
- 버킷 : 디렉터리
Amazon cloudfront
- 외부에서 요청 받으면 해당하는 자료들을 S3 버킷에서 꺼내 제공
- 도메인 지정 가능
- 캐싱 기능
- 404에러 등 여러 에러를 해결할 수 있음
- 404 페이지 처리 :
Error Pages
메뉴에서 대응 파일을 지정하고 status code를 변경
3. github pages
- github 리파지토리 >
Setting
>Pages
에서 배포
- 404 페이지 처리 : 대응 html 파일을 해당 리파지토리 안에 404.html로 생성하면 됨
- 방법 1)
username.github.io
라는 이름으로 리파지토리 생성 후 배포
- 방법 2) 그 외 리파지토리를 배포
https://username.github.io/리파지토리이름
으로 배포됨custom domain
로 도메인을 지정할 수도 있음(유료)gh-pages
라이브러리 사용하면 디렉토리가 한번에 push된다
방법1)
npm install gh-pages --save-dev
실행 후 js 코드에서 함수 호출방법2) package.json에서 아래 코드 추가 후, CLI로 배포하고 싶은 디렉토리에서
npm run deploy
실행"scripts": { "deploy": "gh-pages -d build" }
4. Firebase 호스팅
[설정 방법]
- Firebase 프로젝트 생성
- Firebase Console에서 프로젝트 추가
- Firebase Console의 프로젝트 개요 페이지 중앙에 있는 웹 아이콘( plat_web)을 클릭하여 설정 워크플로를 시작
- Firebase CLI를 설치 :
npm install -g firebase-tools
- Firebase CLI : Firebase 프로젝트를 관리, 조회, 배포할 수 있는 다양한 도구를 제공
- 로그인하여 인증 :
firebase login
- 실행하면 localhost 페이지를 연다
- CLI가 올바르게 설치되었고 사용자 계정에 액세스하는지 테스트 :
firebase projects:list
- Firebase Console에 나열된 Firebase 프로젝트와 같아야 함
- 프로젝트 초기화 : (루트 디렉터리에서)
firebase init (hosting)
- 로컬 프로젝트 파일을 Firebase 프로젝트에 연결
- 도중에 연결할 프로젝트, 공개할 디렉토리, spa 설정 여부, github와 연동 여부 선택
- 공개할 디렉토리 안에 src, index.html 등이 들어가 있어야 함
- spa 설정으로 404페이지를 index.html로 대응할 수 있음
- 끝나면 Firebase는 자동으로 파일 2개를 생성하여 로컬 앱 디렉터리 루트에 추가함
(앞서 설정한 프로젝트 구성이 나열되어 있는
firebase.json
, 프로젝트 별칭을 저장하는 .firebaserc
)- 사이트에 배포 : (루트 디렉터리에서)
firebase deploy (--only hosting)
PROJECT_ID
와.web.app
PROJECT_ID
.firebaseapp.com
라는 주소로 배포됨- fb console에서 커스텀 도메인도 추가할 수 있음
5. Netlify
- github와 연결해서 배포. push 될 때마다 자동으로 업데이트 된다
- 한국 서버가 따로 없어서 속도가 다소 느리다는 단점이 있다
- 404 페이지 처리 : 리파지토리에
_redirects
라는 이름의 파일 생성 후 여기서 하단 코드 입력
/* /index.html 200
[방법]
New site from Git
버튼 클릭으로 사이트 추가 시작
- github 연결
- 배포 할 repository 선택
- 설정
- 배포할 브랜치 설정 (추후에 재설정 가능)
- 이외에도 build tool 설정, serveless function 설정 가능
~~~.netlify.app
으로 배포 완료. (설정에서 도메인 변경 가능)
- netlify 배포 처리 상태를 뱃지로 실시간 확인할 수 있다
- netlify에서 배포된 프로젝트 → Site configuration → (General>)Status badges 에 있는 코드를 markdown에 복붙
- 코드 ex)
[](https://app.netlify.com/sites/dreamy-concha-f7c48b/deploys)
6. Vercel
- 404 페이지 처리 :
vercel.json
파일 생성 후 하단 코드 입력
{ "rewrites": [ { "source": "/(.*)", "destination": "/index.html" } ] }
- netlify보다 빠름, 이것도 Github와 연동 후 사용할 수 있음
- 기본으로 모든 브랜치가 배포 설정됨
[git으로 연결하는 방법]
- "New Project" 클릭으로 github 리파지토리 선택
- 요금 부과되므로 팀 설정은 skip
- configure Project로 프레임워크 선택(없으면 other), build setting, 환경 변수 세팅 자유롭게
- deploy 클릭 ⇒
리파지토리이름.vercel.app
으로 배포완료