اتحاد سه قهرمان CentOS, NodeJS, NginX

اگر nodeJs کار میکنید و رو سرورتون NginX نصب دارید یا نصب خواهید کرد بخش دوم این مطلب مال شماست و اگر سرورتون CentOs هست بخش اول هم کاربرد میتونه داشته باشه براتون.


بخش اول: نصب node روی CentOs


ما اینجا سورس کد نود‌جی‌اس رو دانلود و نصب میکنیم، ابتدا باید سیستم رو برای عملیات کامپایل و ساخت و نصب آماده کنیم، پس:


1
2
yum -y update
yum -y groupinstall "Development Tools"


حال که کامپایلر C++ و مشتی ابزار دیگه رو داریم نود رو دانلود میکنیم


1
2
3
4
cd /usr/src
wget http://nodejs.org/dist/v0.12.2/node-v0.12.2.tar.gz
tar zxf node-v0.12.2.tar.gz
cd node-v0.12.2


بریم سراغ کانفیگ کردن و کامپایل سورس کد


1
2
./configure
make


دستور make ممکنه چندین دقیقه‌ای با روح و روان سی‌پی‌یو شما بازی کنه، زیاد نگران نباشید :)
حال باید فایل‌های کامپایل شده رو به جای اصلی اونها انقال بدیم که عملیات نصب کامل بشه


1
make install


از اینجا به بعد دیگه NodeJS روی سرور شما نصب شده، میتونید هرکاری که برای راه‌اندازی وب‌سرور لازمه رو انجام بدید، مثلا express نصب کنید و …
اینجا به نحوه ساخت وب‌سرور با نود نمی‌پردازیم، فقط فرض کنیم که وب‌سرورمون رو روی پورت 3000 ایجاد کردیم

بخش دوم: تنظیمات NginX برای node

وقتی سرور نود خودتون رو ایجاد میکنید میتونید براحتی از آدرس http://yourdomain:3000 اون رو ببینید ولی همانطور که میبینید این آدرس چندان مناسب نیست و بهتر است بخش :3000 را حذف کنیم، مثلا آن را بصورت یک زیردامنه دربیاوریم. http://node.yourdomain
برای اینکار می بایست یک پروکسی به نود ایجاد کنیم.


1
nano /etc/nginx/conf.d/mynodeserverconfig.conf

درون فایل فوق کد زیر را قرار داده و آن را ذخیره می کنیم


1
2
3
4
5
6
7
8
9
10
11
12
upstream http_nodes {
server 127.0.0.1:3000;
}
server {
server_name node.yourdomain;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://http_nodes;
}
}

درصورتی که میخواهید web socket را نیز پشتیبانی کنید کد زیر را درون بخش location {} اضافه کنید.


!!! دقت کنید که حتما نسخه NginX شما بیشتر از 1.3.13 باشد
1
2
3
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

References: