با گسترش استفاده از اپلیکیشنهای جدید و افزایش نیاز به اجرای سرویسهای داینامیک، استفاده از وبسرورهایی که علاوه بر مدیریت درخواستها بتوانند اپلیکیشنها را نیز بهصورت مستقیم اجرا کنند، اهمیت بیشتری پیدا کرده است. یکی از گزینههای قدرتمند و مدرن در این زمینه، NGINX Unit است؛ یک Application Server سبک و انعطافپذیر که توسط تیم NGINX توسعه داده شده و از زبانهای مختلفی مانند PHP، Python، Node.js و Ruby پشتیبانی میکند.
NGINX Unit برخلاف وبسرورهای سنتی، امکان مدیریت داینامیک تنظیمات بدون نیاز به Restart کامل سرویس را فراهم میکند و به همین دلیل برای سرورهایی که نیاز به پایداری و عملکرد بالا دارند، گزینهای بسیار مناسب محسوب میشود. همچنین این سرویس میتواند در کنار کنترلپنل DirectAdmin استفاده شود و بستری حرفهای برای مدیریت و اجرای اپلیکیشنهای تحت وب ایجاد کند.
اگر از سرور مجازی برای میزبانی پروژههای تحت وب استفاده میکنید، راهاندازی NGINX Unit میتواند باعث بهبود عملکرد اپلیکیشنها و مدیریت بهتر منابع سرور شود.
در این مقاله قصد داریم آموزش کامل نصب و راهاندازی NGINX Unit در DirectAdmin را بررسی کنیم. در ادامه با پیشنیازهای نصب، مراحل راهاندازی، نحوه مدیریت سرویس، رفع مشکلات رایج و پاسخ به سوالات متداول آشنا خواهید شد تا بتوانید این سرویس را بهصورت اصولی روی سرور خود پیادهسازی کنید.
پیشنیازهای نصب NGINX Unit
قبل از نصب و راهاندازی NGINX Unit روی سرور دارای دایرکت ادمین، بهتر است چند مورد مهم را بررسی کنید تا فرآیند نصب بدون خطا انجام شود و سرویس عملکرد پایداری داشته باشد.
1. سیستمعامل سازگار
NGINX Unit روی اکثر توزیعهای لینوکس قابل نصب است، اما پیشنهاد میشود از نسخههای پایدار و بهروز استفاده کنید. برخی از سیستمعاملهای پیشنهادی عبارتاند از:
- AlmaLinux 8 / 9
- Rocky Linux 8 / 9
- Ubuntu 20.04 و بالاتر
- Debian 11 و بالاتر
همچنین بهتر است سیستمعامل دارای آخرین آپدیتهای امنیتی باشد.
2. دسترسی Root یا Sudo
برای نصب پکیجها، ایجاد سرویسها و اعمال تنظیمات موردنیاز، باید به سرور دسترسی root یا کاربر دارای سطح دسترسی sudo داشته باشید.
3. نصب بودن دایرکت ادمین
از آنجایی که قرار است NGINX Unit در کنار DirectAdmin استفاده شود، لازم است کنترلپنل دایرکت ادمین از قبل روی سرور نصب و فعال باشد.
4. اتصال اینترنت پایدار
در زمان نصب، پکیجهای موردنیاز از مخازن رسمی دریافت میشوند؛ بنابراین سرور باید به اینترنت پایدار و بدون محدودیت دسترسی داشته باشد.
5. غیرفعال نبودن مخازن نرمافزاری
اطمینان حاصل کنید که مخازن اصلی سیستمعامل فعال هستند تا نصب پکیجهای وابسته بدون مشکل انجام شود.
6. نصب ابزارهای پایه
وجود برخی ابزارهای پایه روی سرور ضروری است. در صورت نیاز میتوانید آنها را نصب کنید:
yum install curl wget nano -y
یا در سیستمهای مبتنی بر Ubuntu/Debian:
apt install curl wget nano -y
7. بررسی پورتهای موردنیاز
پورتهایی که قرار است توسط NGINX Unit استفاده شوند نباید توسط سرویس دیگری اشغال شده باشند. معمولاً پورتهای 80 و 443 باید در دسترس باشند.
برای بررسی وضعیت پورتها میتوانید از دستور زیر استفاده کنید:
ss -tulpn
8. غیرفعال کردن سرویسهای تداخلدار (در صورت نیاز)
اگر از وبسرورهایی مانند Apache یا وبسرور NGINX بهصورت مستقل استفاده میکنید، ممکن است نیاز باشد تنظیمات آنها را بررسی کنید تا با NGINX Unit تداخل نداشته باشند.
9. داشتن حداقل منابع سختافزاری
برای اجرای روان NGINX Unit پیشنهاد میشود سرور حداقل دارای منابع زیر باشد:
- 1 هسته CPU
- 1 گیگابایت RAM
- 10 گیگابایت فضای خالی دیسک
اگر از سرور اختصاصی ایران استفاده میکنید، معمولاً منابع سختافزاری مناسبتری برای اجرای همزمان چند اپلیکیشن در اختیار خواهید داشت.
نصب nginx unit در DirectAdmin
پس از آمادهسازی پیشنیازها، حالا میتوانید فرآیند نصب NGINX Unit را روی سرور دایرکت ادمین آغاز کنید. در این آموزش، نصب از طریق مخازن رسمی انجام میشود تا بتوانید بهراحتی نسخههای جدید را دریافت و مدیریت کنید.
1. اضافه کردن مخزن رسمی NGINX Unit
ابتدا مخزن رسمی NGINX را به سیستمعامل اضافه کنید.
برای سیستمعاملهای مبتنی بر AlmaLinux ،Rocky Linux و CentOS:
cat > /etc/yum.repos.d/unit.repo <<'EOF' [unit] name=unit repo baseurl=https://packages.nginx.org/unit/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 EOF
برای Ubuntu و Debian:
curl -fsSL https://packages.nginx.org/keys/nginx_signing.key | gpg --dearmor \ > /usr/share/keyrings/nginx-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] \ https://packages.nginx.org/unit/debian/ $(lsb_release -cs) unit" \ > /etc/apt/sources.list.d/unit.list apt update
2. نصب NGINX Unit
در سیستمهای مبتنی بر RHEL:
yum install unit unit-devel unit-python311 -y
در Ubuntu/Debian:
apt install unit unit-dev unit-python3.11 -y
در این مثال، ماژول Python نیز نصب شده است تا امکان اجرای پروژههای پایتون فراهم باشد. در صورت نیاز میتوانید ماژولهای PHP ،Node.js یا Ruby را نیز نصب کنید.
3. فعالسازی و اجرای سرویس
پس از اتمام نصب، سرویس NGINX Unit را فعال و اجرا کنید:
systemctl enable unit systemctl start unit
برای بررسی وضعیت سرویس:
systemctl status unit
اگر سرویس بدون خطا اجرا شده باشد، وضعیت active (running) نمایش داده میشود.
4. بررسی عملکرد NGINX Unit
بهصورت پیشفرض، NGINX Unit از طریق سوکت مدیریتی اجرا میشود. برای تست عملکرد سرویس دستور زیر را اجرا کنید:
curl --unix-socket /var/run/control.unit.sock http://localhost/
در صورت نصب صحیح، خروجی شامل اطلاعات JSON مربوط به تنظیمات اولیه سرویس خواهد بود.
5. تنظیم فایروال سرور
اگر فایروال روی سرور فعال است، پورتهای موردنیاز را باز کنید:
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload
6. نصب ماژولهای اضافی (اختیاری)
بسته به زبان برنامهنویسی پروژهها، میتوانید ماژولهای موردنیاز را نصب کنید.
برای PHP:
yum install unit-php -y
برای Node.js:
yum install unit-nodejs -y
برای Ruby:
yum install unit-ruby -y
7. اطمینان از سازگاری با DirectAdmin
پس از نصب NGINX Unit، بهتر است تنظیمات وبسرور و Reverse Proxy در DirectAdmin بررسی شوند تا از تداخل احتمالی با Apache یا NGINX جلوگیری شود. همچنین میتوانید NGINX Unit را برای اجرای مستقیم اپلیکیشنها در کنار وبسرور اصلی پیکربندی کنید.
مشکلات رایج در نصب NGINX Unit
در زمان نصب و راهاندازی NGINX Unit روی سرورهای دارای DirectAdmin، ممکن است با برخی خطاها یا مشکلات متداول مواجه شوید. در ادامه رایجترین مشکلات به همراه روش رفع آنها را بررسی میکنیم.
1. اجرا نشدن سرویس NGINX Unit
گاهی پس از نصب، سرویس اجرا نمیشود یا بلافاصله متوقف میشود.
برای بررسی وضعیت سرویس:
systemctl status unit
همچنین میتوانید لاگهای سرویس را مشاهده کنید:
journalctl -u unit -xe
دلایل رایج این مشکل:
- نصب ناقص پکیجها
- تداخل پورت با Apache یا NGINX
- وجود خطا در فایلهای تنظیمات
- فعال نبودن وابستگیهای موردنیاز
2. خطای اشغال بودن پورت 80 یا 443
اگر پورتهای اصلی وبسرور توسط سرویس دیگری اشغال شده باشند، NGINX Unit قادر به اجرا نخواهد بود.
برای بررسی سرویسهای فعال روی پورتها:
ss -tulpn | grep -E ':80|:443'
در صورت نیاز میتوانید سرویس مزاحم را متوقف کنید:
systemctl stop nginx systemctl stop httpd
قبل از توقف سرویسها، مطمئن شوید که اختلالی در سایتهای فعال ایجاد نمیشود.
3. شناسایی نشدن ماژول PHP یا Python
اگر هنگام اجرای پروژهها با خطای Runtime مواجه شدید، معمولاً ماژول زبان مربوطه نصب نشده است.
برای مثال نصب ماژول Python:
yum install unit-python311 -y
یا برای PHP:
yum install unit-php -y
پس از نصب ماژولها، سرویس را ریاستارت کنید:
systemctl restart unit
4. خطای دسترسی به فایلها (Permission Denied)
یکی از مشکلات رایج، نداشتن دسترسی مناسب به فایلهای پروژه یا دایرکتوریها است.
برای رفع مشکل:
chown -R username:username /home/username/domains/domain.com/ chmod -R 755 /home/username/domains/domain.com/
مقدار username و domain.com را با اطلاعات واقعی سرور جایگزین کنید.
5. عدم اتصال به سوکت مدیریتی Unit
اگر دستورهای curl با خطا مواجه شدند، ممکن است فایل سوکت ایجاد نشده باشد یا سرویس اجرا نشده باشد.
بررسی فایل سوکت:
ls -lah /var/run/control.unit.sock
در صورت نبود فایل، سرویس را مجدد راهاندازی کنید:
systemctl restart unit
6. خطا در مخازن نصب (Repository Error)
گاهی مخازن رسمی NGINX در دسترس نیستند یا بهدرستی اضافه نشدهاند.
برای بروزرسانی کش مخازن:
در RHEL-based:
yum clean all yum makecache
در Debian/Ubuntu:
apt update
همچنین اتصال اینترنت و DNS سرور را بررسی کنید.
7. تداخل با تنظیمات DirectAdmin
در برخی سرورها، تنظیمات Reverse Proxy یا CustomBuild دایرکت ادمین ممکن است باعث اختلال در عملکرد NGINX Unit شوند.
برای بررسی وضعیت وبسرورها:
systemctl status nginx systemctl status httpd
در صورت استفاده از NGINX بهعنوان Reverse Proxy، بهتر است تنظیمات مربوط به VirtualHost و ProxyPass بهدقت بررسی شوند.
8. اعمال نشدن تنظیمات جدید
گاهی پس از تغییر تنظیمات، تغییرات اعمال نمیشوند.
برای بارگذاری مجدد تنظیمات:
systemctl reload unit
در صورت ادامه مشکل، سرویس را ریاستارت کنید:
systemctl restart unit
9. مصرف بالای منابع سرور
اگر تعداد زیادی اپلیکیشن روی NGINX Unit اجرا شوند، ممکن است مصرف RAM یا CPU افزایش پیدا کند.
برای بررسی مصرف منابع:
top
یا:
htop
در این شرایط پیشنهاد میشود:
- تعداد Workerها بهینه شود
- اپلیکیشنهای غیرضروری متوقف شوند
- منابع سرور ارتقا پیدا کنند
جمعبندی
NGINX Unit یکی از وبسرورها و Application Serverهای مدرن و قدرتمند است که میتواند در کنار DirectAdmin، بستری سریع و منعطف برای اجرای انواع اپلیکیشنها فراهم کند. پشتیبانی از زبانهای مختلف برنامهنویسی، مدیریت داینامیک تنظیمات و مصرف بهینه منابع، این سرویس را به گزینهای مناسب برای میزبانی پروژههای مدرن تبدیل کرده است.
در این آموزش، مراحل نصب NGINX Unit روی سرور دارای دایرکت ادمین را بهصورت کامل بررسی کردیم؛ از آمادهسازی پیشنیازها و نصب پکیجها گرفته تا راهاندازی سرویس و رفع مشکلات رایج. همچنین یاد گرفتیم چگونه ماژولهای موردنیاز را نصب و وضعیت سرویس را مدیریت کنیم.
اگر تنظیمات بهدرستی انجام شوند، NGINX Unit میتواند عملکرد بسیار پایداری در اجرای اپلیکیشنهای PHP، Python، Node.js و سایر فریمورکها ارائه دهد و در کنار DirectAdmin تجربهای سریعتر و حرفهایتر برای مدیریت وبسایتها فراهم کند.
در نهایت پیشنهاد میشود پس از نصب، همواره سرویس و پکیجها را بهروز نگه دارید و تنظیمات امنیتی و مانیتورینگ سرور را نیز بهصورت منظم بررسی کنید تا بهترین عملکرد و امنیت را از سرور خود دریافت نمایید.
سوالات متداول
آیا NGINX Unit با DirectAdmin سازگار است؟
بله، NGINX Unit میتواند در کنار DirectAdmin اجرا شود و برای مدیریت و اجرای اپلیکیشنهای مختلف مورد استفاده قرار گیرد. البته لازم است تنظیمات وبسرور و Reverse Proxy بهدرستی انجام شوند تا تداخلی با Apache یا NGINX ایجاد نشود.
تفاوت NGINX Unit با NGINX معمولی چیست؟
NGINX معمولی بیشتر بهعنوان Web Server و Reverse Proxy شناخته میشود، اما NGINX Unit علاوه بر وبسرور بودن، یک Application Server نیز محسوب میشود و امکان اجرای مستقیم اپلیکیشنهای PHP، Python، Node.js، Ruby و سایر زبانها را فراهم میکند.
آیا برای نصب NGINX Unit باید Apache را غیرفعال کنیم؟
خیر، الزامی به غیرفعال کردن Apache نیست. در بسیاری از سرورها، NGINX Unit در کنار Apache یا NGINX اجرا میشود. فقط باید از عدم تداخل پورتها و تنظیمات اطمینان حاصل کنید.
چگونه وضعیت سرویس NGINX Unit را بررسی کنیم؟
برای مشاهده وضعیت سرویس میتوانید از دستور زیر استفاده کنید:
systemctl status unit
فایل تنظیمات NGINX Unit کجاست؟
برخلاف NGINX معمولی، تنظیمات NGINX Unit بهصورت داینامیک و از طریق API مدیریتی انجام میشود و فایل کانفیگ سنتی ندارد.
برای مشاهده تنظیمات فعلی:
curl --unix-socket /var/run/control.unit.sock http://localhost/config
چگونه ماژول PHP یا Python را نصب کنیم؟
بسته به زبان موردنظر، باید ماژول مربوطه را نصب کنید.
برای PHP:
yum install unit-php -y
برای Python:
yum install unit-python311 -y
آیا NGINX Unit رایگان است؟
بله، NGINX Unit یک نرمافزار متنباز (Open Source) است و استفاده از آن رایگان است.
آیا NGINX Unit برای سایتهای پرترافیک مناسب است؟
بله، NGINX Unit به دلیل معماری سبک و مدیریت بهینه منابع، عملکرد بسیار خوبی در سرورهای پرترافیک ارائه میدهد؛ البته بهینهسازی تنظیمات سرور نیز اهمیت زیادی دارد.
چگونه سرویس NGINX Unit را ریاستارت کنیم؟
برای ریاستارت سرویس:
systemctl restart unit
و برای Reload تنظیمات بدون قطعی:
systemctl reload unit
آیا امکان اجرای Node.js روی NGINX Unit وجود دارد؟
بله، NGINX Unit از Node.js پشتیبانی میکند و با نصب ماژول مربوطه میتوانید اپلیکیشنهای Node.js را اجرا کنید.
yum install unit-nodejs -y





