VPS 서버를 구매하여 webpanel(VirtualMin)을 설치하여 사용하고 있습니다.
nextJS를 vps server에서 사용하기 위한 과정을 공유합니다.
ssh-keygen -t rsa -C "rsa Key"git init을 실행 + github repo 연결 pull 받기`
name: Deploy to VPS
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name : Cache
uses: actions/cache@v4
with:
path: |
~/.npm
${{ github.workspace }}/.next/cache
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
- name: Install dependencies
run: |
yarn install
- name: access to secrets
run: |
echo "NEXT_PUBLIC_GRAPHQL_API_URL=${{ secrets.API_END_POINT }}" >> .env
- name: Build the project
run: |
yarn build
- name: 원격 접속 배포
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.VPS_IP }}
username: ${{ secrets.VPS_USERNAME }}
password: ${{ secrets.VPS_PASSWORD }}
port: 22
script: |
echo "Deploying to VPS server"
cd public_html
git pull origin main
yarn install
yarn build
pm2 list
yarn start-pm2
`
ecosystem.config.js
`
module.exports = {
apps: [
{
name: 'severino partners', #프로젝트에 맞게 변경
script: 'next',
args: 'start',
instances: '2',
exec_mode: 'cluster',
env: {
NODE_ENV: 'production',
PORT: 3002, #본인에 맞게 변경
},
},
],
};
`
개선이 필요한 점
SSR 사용시 서버에 부담이 크기 때문에 SSG 형태로 개발 방향을 전환하는게 필요함.
또한 배포시 CICD 최적화 필요