يعد إنشاء تطبيق Next.js أمرًا واحدًا؛ ونشرها بشكل موثوق في الإنتاج هو أمر آخر. يغطي هذا الدليل مسارات النشر الرئيسية – Vercel (الأسهل) والاستضافة الذاتية مع Docker (التحكم الأكبر) – بالإضافة إلى التكوين والتحسين المهمين لتطبيق Next.js للإنتاج في عام 2026.
📋 Table of Contents
- نظرة عامة على خيارات النشر
- يتعامل Vercel (الذي أنشأه منشئو Next.js) مع عمليات الإنشاء والتخزين المؤقت للحافة والوظائف بدون خادم وتحسين الصورة تلقائيًا. قم بتعيين متغيرات البيئة في لوحة المعلومات. إنه أسرع مسار لتطبيق Next.js للإنتاج بدون إدارة للبنية التحتية.
- للتحكم الكامل والتكاليف المتوقعة على نطاق واسع، يمكنك الاستضافة الذاتية باستخدام Docker. يجعل الإخراج المستقل لـ Next.js هذا فعالاً:
- متغيرات البيئة في الإنتاج
- التخزين المؤقت وإعادة التحقق
- قائمة مرجعية الإنتاج
- تمكين الإخراج المستقل
- س: فيرسيل أم استضافة ذاتية؟
- نشر Next.js إلى الإنتاج في عام 2026 له مساران رئيسيان:
نظرة عامة على خيارات النشر
| الطريقة | الأفضل لـ | جهد |
|---|---|---|
| فيرسيل | أسرع نشر، تكوين صفر، حافة | الحد الأدنى |
| عامل ميناء المضيف الذاتي | تحكم كامل، تكلفة على نطاق واسع | معتدل |
| خادم العقدة | استضافة VPS بسيطة | منخفض-متوسط تصدير ثابت |
| مواقع ثابتة بالكامل | منخفض | الطريقة الأولى: فيرسيل (الأسهل) |
يتعامل Vercel (الذي أنشأه منشئو Next.js) مع عمليات الإنشاء والتخزين المؤقت للحافة والوظائف بدون خادم وتحسين الصورة تلقائيًا. قم بتعيين متغيرات البيئة في لوحة المعلومات. إنه أسرع مسار لتطبيق Next.js للإنتاج بدون إدارة للبنية التحتية.
# Install Vercel CLI
npm install -g vercel
# Deploy from your project directory
vercel # preview deployment
vercel --prod # production deployment
# Or connect your Git repo in the Vercel dashboard for
# automatic deployments on every push
الطريقة الثانية: الاستضافة الذاتية لـ Docker
للتحكم الكامل والتكاليف المتوقعة على نطاق واسع، يمكنك الاستضافة الذاتية باستخدام Docker. يجعل الإخراج المستقل لـ Next.js هذا فعالاً:
وكيل Nginx العكسي للاستضافة الذاتية
// next.config.js — enable standalone output
module.exports = {
output: 'standalone', // bundles only needed files for a small image
};
# Dockerfile — multi-stage for a small production image
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
# Copy standalone output (much smaller than full node_modules)
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]
# Build and run
docker build -t my-nextjs-app .
docker run -p 3000:3000 --env-file .env.production my-nextjs-app
متغيرات البيئة في الإنتاج
# /etc/nginx/sites-enabled/myapp
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Cache Next.js static assets aggressively
location /_next/static {
proxy_pass http://localhost:3000;
add_header Cache-Control "public, max-age=31536000, immutable";
}
}
التخزين المؤقت وإعادة التحقق
# Server-only secrets (never exposed to browser)
DATABASE_URL=postgresql://...
API_SECRET=...
# Client-exposed vars need NEXT_PUBLIC_ prefix (these are PUBLIC)
NEXT_PUBLIC_API_URL=https://api.example.com
# Set these in Vercel dashboard, or pass via --env-file to Docker
# NEVER commit production secrets
قائمة مرجعية الإنتاج
// Incremental Static Regeneration — cache pages, revalidate periodically
export const revalidate = 3600; // regenerate at most once per hour
// Or on-demand revalidation via API
import { revalidatePath } from 'next/cache';
export async function POST(request) {
// After content changes, revalidate the affected page
revalidatePath('/blog');
return Response.json({ revalidated: true });
}
// Fetch caching
const data = await fetch('https://api.example.com/data', {
next: { revalidate: 60 }, // cache this fetch for 60 seconds
});
تمكين الإخراج المستقل
- لصور Docker الأصغرتعيين كافة متغيرات البيئة
- في منصتك (غير ملتزم)تكوين التخزين المؤقت
- — ISR للصفحات، ورؤوس ذاكرة التخزين المؤقت للأصول الثابتةتحسين الصور
- — استخدم التالي/الصورة (تلقائيًا في Vercel؛ قم بتكوين المُحمل عند الاستضافة الذاتية)إضافة مراقبة الأخطاء
- — الحراسة أو ما شابه ذلك لأخطاء الإنتاجإعداد HTTPS
- – تلقائي على Vercel؛ دعونا نقوم بالتشفير للاستضافة الذاتيةتمكين الضغط
- — gzip/brotli على مستوى الوكيلالأسئلة المتداولة
س: فيرسيل أم استضافة ذاتية؟
ج: Vercel للنشر الأسرع وعدم إدارة البنية التحتية (رائع لمعظم التطبيقات). استضافة ذاتية مع Docker للتحكم الكامل، أو التكاليف المتوقعة على نطاق واسع، أو متطلبات البنية التحتية المحددة. ابدأ بفيرسيل؛ الانتقال إلى الاستضافة الذاتية إذا كانت التكاليف أو السيطرة تتطلب ذلك.
س: هل يدعم Next.js المستضاف ذاتيًا جميع الميزات؟
ج: معظمها، نعم – تعمل مسارات SSR وISR وAPI وتحسين الصور جميعها على استضافة ذاتية (يحتاج تحسين الصورة إلى أداة تحميل مهيأة). تختلف بعض ميزات الحافة الخاصة بـ Vercel، لكن Next.js الأساسي يعمل بشكل كامل عندما يكون مستضافًا ذاتيًا.
س: لماذا لا يعمل تحسين الصور المستضافة ذاتيًا؟
ج: يكون تحسين الصورة التالية/الصورة تلقائيًا على Vercel ولكنه يحتاج إلى التكوين عند الاستضافة الذاتية – إما استخدام المحسن المدمج (يتطلب دقة) أو تكوين محمل صور خارجي/CDN. تحقق من إعدادات الصور next.config.js.
س: كيف يمكنني التعامل مع متغيرات البيئة التي تختلف حسب البيئة؟
ج: قم بتعيينها في نظام الاستضافة الخاص بك (لوحة تحكم Vercel، أو ملف Docker –env، أو المنسق الخاص بك). استخدم البادئة NEXT_PUBLIC_ فقط للقيم الآمنة لعرضها على المتصفح. الحفاظ على الأسرار من جانب الخادم.
س: كيف يمكنني تقليل بدايات البرد؟
ج: في Vercel، تتمتع الوظائف التي لا تحتوي على خادم ببعض البداية الباردة؛ ابقهم هزيلين. الاستضافة الذاتية مع خادم Node طويل الأمد لا تحتوي على بدايات باردة. بالنسبة لصفحات ISR/الثابتة، يتم تقديم معظم الطلبات من ذاكرة التخزين المؤقت على الفور بغض النظر.
الخلاصة
نشر Next.js إلى الإنتاج في عام 2026 له مساران رئيسيان:
Vercel لأسرع عملية نشر بدون تكوين مع التحسين التلقائي والتخزين المؤقت للحافة، أواستضافة Docker الذاتية للتحكم الكامل والتكاليف المتوقعة استخدام الإخراج المستقل للصور الصغيرة خلف وكيل nginx. أيًا كان اختيارك، قم بتعيين متغيرات البيئة في النظام الأساسي (لا يتم الالتزام به مطلقًا)، وقم بتكوين التخزين المؤقت باستخدام ISR ورؤوس ذاكرة التخزين المؤقت، وتحسين الصور، وإضافة مراقبة الأخطاء. ابدأ بـ Vercel من أجل البساطة، وانتقل إلى الاستضافة الذاتية عندما تبرر متطلبات التكلفة أو التحكم العمل التشغيلي الإضافي. استخدام الإخراج المستقل للصور الصغيرة خلف وكيل nginx. أيًا كان اختيارك، قم بتعيين متغيرات البيئة في النظام الأساسي (لا يتم الالتزام به مطلقًا)، وقم بتكوين التخزين المؤقت باستخدام ISR ورؤوس ذاكرة التخزين المؤقت، وتحسين الصور، وإضافة مراقبة الأخطاء. ابدأ بـ Vercel من أجل البساطة، وانتقل إلى الاستضافة الذاتية عندما تبرر متطلبات التكلفة أو التحكم العمل التشغيلي الإضافي.
🔗 Share this article
✍️ Leave a Comment