اگر بخواهید یک پروژه Next.js را روی هاست اشتراکی cPanel اجرا کنید، خیلی زود متوجه میشوید که این کار مثل دیپلوی روی VPS یا سرور ابری، ساده و ایدهآل نیست. هاست اشتراکی معمولاً منابع کافی برای اجرای روان یا build گرفتن از پروژههای Next.js را ندارد و نتیجه میتواند سرعت پایین و تجربه نهچندان خوب باشد. با این حال، برای محیط تست، استیجینگ یا شرایطی که فعلاً انتخاب بهتری ندارید، این روش میتواند کاربردی باشد.
در این آموزش، قدمبهقدم یاد میگیرید چطور پروژه Next.js را برای اجرای روی cPanel آماده کنید، فایلها را سبک کنید، اپلیکیشن Node.js بسازید و در نهایت سایت را بالا بیاورید.
آیا اجرای Next.js روی هاست اشتراکی منطقی است؟
قبل از شروع، باید واقعبین بود که این نوع هاست برای اپلیکیشنهای Next.js معمولاً منابع کافی ندارد و سایت ممکن است خیلی کند شود. به همین دلیل، این روش بیشتر یک راهحل موقت است، نه انتخاب حرفهای برای پروژههای جدی و پربازدید.
پس اگر سایت شما ترافیک بالا دارد یا برایتان پرفورمنس مهم است، بهتر است بهجای هاست اشتراکی از VPS، سرور ابری یا پلتفرمهای مناسب Node.js استفاده کنید. اما اگر فعلاً فقط میخواهید پروژه را بالا بیاورید، ادامه این آموزش برایتان مفید خواهد بود.
مرحله اول: پروژه Next.js را روی سیستم خودتان build بگیرید
یکی از مهمترین نکات مقاله این است که ساخت پروژه را روی خود هاست انجام ندهید. هاست اشتراکی معمولاً توان کافی برای build گرفتن از پروژههای وب را ندارد. بنابراین باید روی سیستم شخصی یا محیط توسعه خودتان این دستور را اجرا کنید:
npm run buildاین مرحله حیاتی است، چون فایلهای موردنیاز برای اجرای پروژه در همین فرایند ساخته میشوند. این روش روی نسخههای Next.js 14.2.3 و حتی 13.x هم تست شده است.
مرحله دوم: پروژه را قبل از آپلود سبک کنید
بعد از build گرفتن، نوبت به سبکسازی فایلها میرسد. طبق مقاله، اندازه برخی پروژههای کوچک تا متوسط ممکن است قبل از پاکسازی به صدها مگابایت برسد، که برای آپلود روی هاست اشتراکی اصلاً مناسب نیست. برای همین بهتر است روی یک کپی از پروژه این موارد را حذف کنید:
پوشه node_modules
محتوای .next/cache
پوشه .git
این حذفها را روی نسخه اصلی پروژه انجام ندهید، بلکه از پروژه یک کپی بگیرید و روی آن کار کنید. توجه داشته باشید که پوشه public یا assets را حذف نکنید، چون برای اجرای درست سایت لازم هستند. بعد از این پاکسازی، حجم فایل zip پروژه میتواند به چند مگابایت کاهش پیدا کند و آپلود بسیار سادهتر شود.
مرحله سوم: در cPanel یک اپلیکیشن Node.js بسازید
در cPanel معمولاً بخشی با عنوان Setup Node.js App یا چیزی مشابه آن وجود دارد. این گزینه معمولاً در بخش Software دیده میشود. اگر آن را پیدا نکردید، باید از پشتیبانی هاست بخواهید محل آن را اعلام کند یا در صورت امکان این قابلیت را برایتان فعال کند.
برای ساخت اپلیکیشن:
وارد بخش Node.js App شوید.
روی Create Application کلیک کنید.
دامنه یا زیردامنه موردنظر را انتخاب کنید.
مسیر فولدر پروژه را مشخص کنید.
جدیدترین نسخه Node.js قابل پشتیبانی را انتخاب کنید.
روی Create بزنید.
بعد از ساخت اپ، با باز کردن URL اپلیکیشن باید پیامی مثل It works! نمایش داده شود و فایلهایی مثل .htaccess و app.js در پوشه پروژه ایجاد شده باشند.
مرحله چهارم: فایلهای پروژه را در هاست آپلود کنید
حالا باید فایلهای آمادهشده را روی هاست قرار دهید. سادهترین راه، استفاده از File Manager خود cPanel است. پروژه را بهصورت فایل zip آپلود کنید، آن را Extract کنید و فایلها را طوری جابهجا کنید که فایلهای اصلی پروژه در همان سطحی قرار بگیرند که app.js وجود دارد.
در این مرحله دقت کنید که ساختار نهایی پروژه بههم نریزد. اگر فایلها در مسیر اشتباه قرار بگیرند، اپلیکیشن بالا نمیآید یا در زمان اجرا با خطا روبهرو میشود.
مرحله پنجم: پکیجهای پروژه را نصب کنید
بعد از آپلود فایلها، باید dependencyهای پروژه را نصب کنید. در اینجا دو روش پیشنهاد میدهیم:
از طریق رابط cPanel و دکمه Run NPM Install
از طریق SSH یا ترمینال آنلاین cPanel
اگر از ترمینال استفاده میکنید، ابتدا باید وارد virtual environment معرفیشده توسط cPanel شوید و بعد npm install را اجرا کنید. مهمترین هشدار این بخش این است که روی سرور دستور npm run dev را اجرا نکنید، چون ممکن است فایلهای build شده را تحت تأثیر قرار دهد و مجبور شوید دوباره خروجی build را آپلود کنید.
دستور نصب:
npm installمرحله ششم: فایل app.js را برای اجرای Next.js تنظیم کنید
بعد از نصب پکیجها، نوبت به بخش اصلی میرسد: تنظیم فایل app.js. در اینجا یک نمونه کد برای این فایل ارائه میدهیم تا درخواستها از طریق Node.js به اپلیکیشن Next.js هدایت شوند. نسخه بهینه و قابل استفاده آن به این شکل است:
const { createServer } = require('http')
const { parse } = require('url')
const next = require('next')
const dev = process.env.NODE_ENV !== 'production'
const hostname = 'localhost'
const port = process.env.PORT || 3000
const app = next({ dev, hostname, port })
const handle = app.getRequestHandler()
app.prepare().then(() => {
createServer(async (req, res) => {
try {
const parsedUrl = parse(req.url, true)
await handle(req, res, parsedUrl)
} catch (err) {
console.error('Error occurred handling', req.url, err)
res.statusCode = 500
res.end('internal server error')
}
}).listen(port, (err) => {
if (err) throw err
console.log(`> Ready on http://${hostname}:${port}`)
})
})در برخی کدهای نمونه، چند مسیر نمونه مثل /a و /b هم برای رندر اختصاصی آورده شده، اما در اغلب پروژهها همان handle(req, res, parsedUrl) برای مدیریت عمومی درخواستها کافی است. ساختار اصلی همین است که اپ Next.js آماده شود، سرور HTTP ساخته شود و همه درخواستها به هندلر Next.js پاس داده شوند.
مرحله هفتم: اپلیکیشن را ریاستارت کنید
بعد از ذخیره فایل app.js، معمولاً لازم است اپلیکیشن را از داخل cPanel Reload یا Restart کنید. پس از ریاستارت، اگر همه مراحل را درست انجام داده باشید، پروژه باید روی دامنه یا زیردامنه شما در دسترس باشد.
نکات مهم برای جلوگیری از خطا
اگر میخواهید اجرای Next.js روی cPanel با دردسر کمتری انجام شود، این نکات را جدی بگیرید:
1) روی سرور build نگیرید
هاست اشتراکی برای این کار ضعیف است و احتمال شکست build یا مصرف بیشازحد منابع بالاست. مقاله این موضوع را یکی از اصلیترین محدودیتها میداند.
2) فایلهای غیرضروری را حذف کنید
پاک کردن node_modules، کش .next و .git قبل از آپلود، زمان و حجم انتقال فایل را بهشدت کاهش میدهد.
3) public را حذف نکنید
این مورد در مقاله بهصورت هشدار آمده و خیلی مهم است. حذف فایلهای public باعث خراب شدن منابع استاتیک سایت میشود.
4) از npm run dev استفاده نکنید
روی هاست اشتراکی باید نسخه build شده را اجرا کنید، نه سرور توسعه را. اجرای dev mode روی سرور، انتخاب درستی نیست.
5) انتظار پرفورمنس بالا نداشته باشید
حتی اگر همهچیز درست تنظیم شود، باز هم shared hosting برای Next.js محدودیت دارد. این روش بیشتر برای محیطهای آزمایشی مناسب است.
جمعبندی
اجرای Next.js روی هاست اشتراکی cPanel ممکن است، اما راهحل ایدهآلی نیست. بهترین رویکرد این است که پروژه را روی سیستم خودتان build بگیرید، فایلها را سبک کنید، در cPanel اپ Node.js بسازید، npm install را اجرا کنید و با تنظیم درست app.js سایت را بالا بیاورید. این همان روشی است که در مقاله اصلی توضیح داده شده و برای بعضی سناریوهای محدود میتواند جواب بدهد.
اگر هدف شما فقط تست، استیجینگ یا راهاندازی موقت است، این روش کاملاً قابل استفاده است. اما برای پروژههای واقعی و پرترافیک، بهتر است سراغ زیرساخت مناسبتر بروید.
آیا میتوان Next.js را روی هاست اشتراکی cPanel اجرا کرد؟
بله، اما معمولاً این کار ایدهآل نیست و بیشتر برای تست یا استیجینگ مناسب است. هاست اشتراکی منابع محدودی دارد.
آیا باید روی خود سرور npm run build اجرا کنم؟
خیر. بهتر است build را روی سیستم خودتان بگیرید و خروجی آماده را روی هاست آپلود کنید.
آیا حذف پوشه node_modules قبل از آپلود مشکلی ایجاد میکند؟
نه. بعد از آپلود پروژه میتوانید روی سرور با npm install دوباره پکیجها را نصب کنید.
آیا میتوان npm run dev را روی cPanel اجرا کرد؟
این کار توصیه نمیشود، چون dev mode برای محیط توسعه است و ممکن است فایلهای build شده را تحت تأثیر قرار دهد.
مهمترین فایل برای اجرای پروژه در cPanel چیست؟
یکی از فایلهای مهم app.js است که درخواستها را به اپلیکیشن Next.js هدایت میکند.
