این آموزش به شما یاد خواهد داد که اپلیکیشن Node.js خود را بر روی سرور اجرا نمایید. آموزش ما تعدادی پیش نیاز دارد که در زیر آورده شده است در ادامه فرض ما این است که تمامی پیش نیازها را دارید و یا انجام دادهاید.
ملزومات استقرار Node.js:
- نصب Passenger و Apache بر روی سرور
- انتقال کدهای اپلیکیشن خود بر روی سرور
- Node.js را بر سرور نصب نمودهاید
- نصب dependency های مورد نیاز اپلیکیشنتان
اگر هرکدوم از مراحل بالا را نمیدانید یا حس میکنید که آن را درست انجام ندادهاید به بخش آموزش آن مراجعه کنید یا آن را از ما بپرسید.
بخش اول استقرار Node.js: استقرار برنامه بر virtual host
برای استقرار یک اپلیکیشن بر روی Apache virtual host نیاز است قدمهای زیر را انجام دهید.
- اضافه کردن یک virtual host entry به فایل پیکربندی آپاچی
- داکیومنت virtual host باید به subdirectory اپلیکیشن شما متصل گردد.
- اجازه دسترسی برای Apache per-directory باید صادر گردد
- در دایرکتوری مورد نظر باید MultiViews را غیر فعال نماییم
برای نمونه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<VirtualHost *:80> ServerName <span class="o">yourserver.com</span> <span class="c"># Tell Apache and Passenger where your app's code directory is</span> DocumentRoot <span class="o">/path-to-your-app</span>/public PassengerAppRoot <span class="o">/path-to-your-app</span> <span class="c"># Tell Passenger that your app is a Node.js app</span> PassengerAppType node PassengerStartupFile <span class="o">app.js</span> <span class="c"># Relax Apache security settings</span> <Directory <span class="o">/path-to-your-app</span>/public> Allow from all Options -MultiViews <span class="c"># Uncomment this if you're on Apache >= 2.4:</span> <span class="c">#Require all granted</span> </Directory> </VirtualHost> |
zagrio.com را با نام سرور خود جایگزین نمایید و /path-to-your-app
را نیز با دایرکتور اپلیکیشن و در آخر app.js
را با فایل اصلی اپلیکیشن خود جایگزین نمایید.
تقریبا در این بخش کار ما تمام شده و فقط نیاز است آپاچی را مجددا راه اندازی نمایید که با دستور زیر این کار ممکن میگردد:
1 |
sudo apachectl restart |
براساس سیستم عامل مورد استفادهتان این دستور میتواند شامل apache2ctl
به جای apachectl
باشد.
بخش دوم استقرار Node.js: استقرار اپلیکیشن بر sub-URI یا subdirectory
توجه داشته باشید که شما میتوانید اپلیکیشن خود را بر یک sub-URI به جای root URI مستقر نمایید. برای مثال تصور کنید که در حال حاضر یک virtual host برای اپلیکیشن خود دارید /websites/phusion
:
1 2 3 4 5 6 7 8 9 10 |
<VirtualHost *:80> ServerName www.phusion.nl DocumentRoot /websites/phusion/public <Directory /websites/phusion> Allow from all Options -MultiViews <span class="c"># Uncomment this if you're on Apache >= 2.4: #Require all granted</span> </Directory> </VirtualHost> |
و نیاز دارید اپلیکیشن خود را در /websites/secondapp
قرار دهید. برای اینکه اپلیکیشن شما از url روبرو http://www.phusion.nl/subpath در دسترس باشد نیاز است تا مراحل زیر را انجام دهید.
- تنظیم
Alias {SUBURI} {PATH TO YOUR APPLICATION'S PUBLIC DIRECTORY}
- ساختن
<Location /{SUBURI}> block
- تنظیم
PassengerBaseURI /{SUBURI}
در بلاک لوکیشن - تنظیم
PassengerAppRoot {PATH TO YOUR APPLICATION ROOT}
در بلاک لوکیشن - سلخت بلاک
<Directory {PATH TO YOUR APPLICATION PUBLIC SUBDIRECTORY}>
- در داخل بلاک دایرکتور تنظیم
Allow from all
و اگر ورژن آپاچی شما بالاتر از 2.4 یا خود 2.4 استRequire all granted
- در داخل بلاک دایرکتوری MultiViews را نیز غیر فعال نمایید.
برای مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<VirtualHost *:80> ServerName www.phusion.nl DocumentRoot /websites/phusion/public <Directory /websites/phusion> Allow from all Options -MultiViews <span class="c"># Uncomment this if you're on Apache >= 2.4: #Require all granted</span> </Directory> <span class="c"># These have been added:</span> Alias <span class="o">/subapp</span> <span class="o">/websites/secondapp</span>/public <Location <span class="o">/subapp</span>> PassengerBaseURI <span class="o">/subapp</span> PassengerAppRoot <span class="o">/websites/secondapp</span> PassengerAppType node PassengerStartupFile <span class="o">app.js</span> </Location> <Directory <span class="o">/websites/secondapp</span>/public> Allow from all Options -MultiViews <span class="c"># Uncomment this if you're on Apache >= 2.4: #Require all granted</span> </Directory> </VirtualHost> |
حالا آپاچی را با کامند زیر دوباره راه اندازی نمایید
1 |
sudo apachectl restart |
براساس سیستم عامل مورد استفادهتان این دستور میتواند شامل apache2ctl
به جای apachectl
باشد.
بدون دیدگاه