Nextjs-vps-ci-cd

Hur man distribuerar en NextJS-app på en anpassad VPS

När vi utvecklar vilken Next JS-app som helst och börjar distribuera är det första som kommer i åtanke Vercel. Numera stöder också en mängd olika värdtjänstleverantörer Next JS på sina plattformar Men nyligen arbetade jag med ett projekt där jag behövde distribuera en NextJS SSR-app på en VPS-server eftersom klienten inte var bekväm med att distribuera någon annanstans, så jag kollade upp det och det fanns ingen ordentlig instruktion hur man gör det. Förutsättningar

Innan vi börjar distribuera något behöver vi först en VPS redo för det. Läs första delen av serien Node.js Server Setup här.

Skapa APPen

Först skapar vi en ny Next JS-app på servern med

npx create-next-app@latest min-app

sedan behöver vi komma in i den mapp vi just skapade med

npx create-next-app@latest min-app

om du klonade appen från git måste du göra ett ytterligare steg för att installera beroenden

npm install
#eller
yarn

Bygg för produktion

NextJS levereras med byggskript så vi behöver bara köra det

npm run build
#eller
yarn build

det tar ett tag att generera produktionsbygget av ditt projekt, det kommer att generera alla statiska sidor för dig i förväg.

Ange port (valfritt)

Som standard kommer Next JS att köras på port 3000 men på denna server kör vi redan en app på 3000 så vi behöver uppdatera package.json för att starta produktionsappen på en ny port som 4400

{
    "name": "awesome-app",
    "version": "0.1.0",
    "private": true,
    "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start -p 4400", // eller vilken port du vill ha
    "lint": "next lint"
    },
    "dependencies": {
    "next": "12.2.5",
    "react": "18.2.0",
    "react-dom": "18.2.0"
    },
    "devDependencies": {
    "eslint": "8.22.0",
    "eslint-config-next": "12.2.5"
    }
}

Starta appen med PM2

För att starta appen med PM2 behöver vi köra

pm2 start npm --name "min-app" -- start

detta kommer att starta appen på port 4400 om du vill lägga till SSL och omvänd proxy med NGINX måste vi lägga till Ny app till vår befintliga NGINX-konfiguration från VPS Setup.

Lägga till omvänd proxy med NGINX

För att uppdatera servern öppna först konfigurationen

sudo nano /etc/nginx/sites-available/default

och lägg till detta nya block i platsdelen av serverblocket

server_name minapp.com.com www.minapp.com.com; location / {
    proxy_pass http://localhost:4400;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

om du planerar att värd en andra app på en underdomän byt bara ut yourdomain2.com mot underdomän som api2.yourdomain.com

sedan kontrollera och starta om NGINX

kontrollera NGINX-konfigurationen

sudo nginx -t# Starta om NGINX
sudo service nginx restart

om domänen är pekad ska du se din app live på port 80 det finns ett till steg att gå lägga till SSL.

Lägg till SSL för andra APP

Vi har redan certbot installerat så att lägga till ytterligare domäner inte är ett problem

sudo certbot --nginx -d minapp.com -d www.minapp.com

det är allt din nya app ska också vara live på ny domän med SSL.

Github logoTwitter logoLinkedin logoInstagram logo

© 2024, Copyright All rights reserved