فریم‌ورک فول‌استک Vue

هاست Nuxt با رندر سمت سرور

Nuxt را با سرور Nitro و رندر سمت سرور مستقر کنید. خروجی .output بعد از بیلد اجرا می‌شود و API های داخل server/ کنار صفحه‌ها کار می‌کنند.

تشخیص
وابستگی nuxt در package.json
اجرا
node .output/server/index.mjs
نسخه‌ی Node.js
24، 22 و 20 (پیش‌فرض 22)
پورت پیش‌فرض
3000
لوگوی Nuxt

Nuxt و Nitro روی یک سرور

وجود وابستگی nuxt کافی است تا پروژه Nuxt شناخته شود. nuxt build خروجی کامل سرور را در .output می‌سازد و فقط همین پوشه به ایمیج نهایی می‌رود، پس node_modules توسعه همراه برنامه منتشر نمی‌شود.

Nitro متغیرهای PORT و HOST را خودش می‌خواند. با preset پیش‌فرض node-server، صفحه‌های SSR، مسیرهای server/api و میدل‌ورها روی همان سرور اجرا می‌شوند.

مناسب برای

  • سایت و فروشگاه Vue با SSR
  • داشبورد با API داخل server/
  • سایت محتوایی با Nuxt Content
  • پنل مدیریت با رندر سرور

مسیر بیلد Nuxt

  1. تشخیص

    وابستگی nuxt و لاک‌فایل در ریشه.

    "nuxt": "^3"
  2. نصب

    پکیج‌منیجر از روی لاک‌فایل انتخاب می‌شود.

    npm ci
  3. بیلد

    خروجی سرور و فایل‌های عمومی در .output ساخته می‌شود.

    nuxt build
  4. اجرا

    سرور Nitro اجرا می‌شود.

    node .output/server/index.mjs

خروجی یک استقرار واقعی

sakoocloud deploy
sakoocloud deploy
✔ Packed 2.1MB
✔ Source uploaded
ℹ Build started · dep_7k2m9q
#4 [builder 1/5] FROM node:22-alpine
#6 [builder 3/5] RUN npm ci
#8 [builder 4/5] RUN npm run build
#10 [stage-1 2/3] COPY .output ./.output
#12 exporting to image
✔ Deployed — app is running.
→ https://my-nuxt.sakooapps.ir

تنظیم پیشنهادی

preset را روی node-server نگه دارید و اسکریپت start را به خروجی Nitro اشاره دهید.

export default defineNuxtConfig({
  nitro: {
    preset: "node-server",
  },
});

تنظیمات

نسخه‌ی Node.js

نسخه‌های 24، 22 و 20 (LTS) در دسترس‌اند. اگر پروژه نسخه‌ای اعلام نکند، Node.js 22 استفاده می‌شود.

از کجا خوانده می‌شودنمونه
.nvmrc یا .node-version22
engines.node در package.json"node": "22.x"
mise.toml یا .tool-versionsnode = "22"
فلگ --runtime-version در CLI--runtime-version 22

پکیج‌منیجر

ابزار از روی لاک‌فایل انتخاب می‌شود و نصب همیشه دقیقاً همان نسخه‌های قفل‌شده را می‌گیرد.

لاک‌فایلابزاردستور نصب
package-lock.jsonnpmnpm ci
yarn.lockyarnyarn install --frozen-lockfile
pnpm-lock.yamlpnpmpnpm install --frozen-lockfile

اتصال به دیتابیس

دیتابیس را به اپ لینک کنید؛ متغیرهای DATABASE_URL، DATABASE_HOST و بقیه به محیط اپ تزریق می‌شوند و اپ دوباره مستقر می‌شود. رمز عبور هیچ‌جا در کد نمی‌آید.

sakoocloud apps link-db <db-id> --app my-app

دیتابیس‌هایی که معمولاً کنارش می‌آیند

همراه هر استقرار

این‌ها به رانتایم بستگی ندارند و برای هر اپ روی سکو کلود فعال‌اند. بعضی، مثل مقیاس‌دهی خودکار و کران‌جاب، به پلن بستگی دارند.

خطاهای رایج

اپ بالا نمی‌آید یا مدام ری‌استارت می‌شود

علتسرور Nitro روی localhost بالا آمده است.

راه‌حلپورت را از PORT بخوانید و روی 0.0.0.0 گوش بدهید.

env
HOST=0.0.0.0

خروجی .output پیدا نمی‌شود

علتpreset Nitro روی گزینه‌ای غیر از node-server تنظیم شده و خروجی سرور ساخته نشده است.

راه‌حلدر nuxt.config.ts مقدار nitro.preset را node-server بگذارید یا حذف کنید.

runtimeConfig مقدار تولید ندارد

علتمتغیرهای NUXT_ در زمان اجرا تعریف نشده‌اند.

راه‌حلمتغیرها را با sakoocloud env set یا از کنسول تعریف کنید؛ Nuxt آن‌ها را در زمان اجرا می‌خواند.

پاد با OOMKilled متوقف می‌شود

علتمصرف حافظه از سقف منابع اپ بیشتر شده است.

راه‌حلحافظه را بیشتر کنید یا مصرف برنامه را پایین بیاورید.

terminal
sakoocloud apps scale --memory 1Gi

پرسش‌های متداول

Nuxt 2 هم پشتیبانی می‌شود؟

این مسیر برای Nuxt 3 و خروجی Nitro است. پروژه‌ی Nuxt 2 را با Dockerfile اختصاصی مستقر کنید.

Nuxt را استاتیک مستقر کنم یا SSR؟

اگر nuxt generate می‌زنید، خروجی را به‌عنوان سایت استاتیک مستقر کنید. برای SSR همین رانتایم nuxt را انتخاب کنید.

API های server/api کجا اجرا می‌شوند؟

روی همان سرور Nitro، کنار صفحه‌ها. سرویس جداگانه لازم نیست.

جزئیات بیشتر در راهنمای Nuxt در مستندات و مرجع CLI.

سریع‌ترین مسیر از کد تا انتشار.

ابتدا ابزار خط فرمان را نصب کنید، سپس همین‌جا امتحان کنید. (بنویسید، یا یکی از پیشنهادهای پایین ترمینال را بزنید)

~/projects/my-app
امتحان کنید