آموزش نصب و راه اندازی وب سرور nginx با محتوای ثابت

در این آموزش قصد دارم نحوه‌ی نصب و راه اندازی وب سرور محبوب nginx رو آموزش بدم. برای شروع بهتره که ساده باشیم پس فقط یک سایت با محتوای ثابت خواهیم داشت. آنچه در این نوشته بهش خواهیم پرداخت به شرح زیره: نصب nginx و راه اندازی اولیه آنبررسی فایل‌های پیکربندی و ایجاد یک پیکربندی ساده دانلود یک template آماده برای رابط کاربری و نمایش آنادامه مسیردر انتهای این نوشته شما با نصب و پیکربندی ابتدایی nginx آشنا می شید. هم چنین برخی قوانین مربوط به نوشتن فایل های پیکربندی nginx و نمایش محتوای ثابت رو خواهید آموخت. وب سایت مورد نظر هم به شکل زیر خواهد بود:قالب html نهایی برای اجرای مراحل به موارد زیر نیاز داریم:یک سیستم لینوکسی با دسترسی root(ترجیحا ubuntu)آشنایی با http و وب سرور آشنایی با لینوکسخب حالا وقتشه بریم سراغ اصل مطلب. ابتدا یک سیستم لینوکسی نیاز دارم. میتونید یک سیستم عامل لینوکس به شکل مجازی یا واقعی روی سیستم خودتون بالا بیارید. اما من از سرورهای ابری ابرآروان (arvancloud.com) استفاده می‌کنم که یه مقداری پول باید پرداخت کنید ولی خیلی راحت‌تره در مجموع. من از توزیع ubuntu و نسخه 18.04 استفاده کردم و توضیحاتم در مورد اون هست.ابتدا nginx رو باید نصب کرد. میتونیم برای این کار سورس کد nginx رو دانلود و کامپایل کنیم. راه دیگه اش نصب بوسیله apt هست که راه آسونتریه و من هم این راه رو انتخاب می کنم. با اجرای دستورهای زیر nginx رو نصب می کنم: $ sudo apt update $ sudo apt install nginxدر دستور اول repository رو آپدیت کردم تا لیست همه پکیج های موجود رو داشته باشیم که با استفاده از اون nginx رو نصب کنیم. بعد از طی مراحل نصب باید ببینیم که همه چی درست کار می کنه یا نه. برای این کار باید سرویس nginx رو فعال کنیم اون هم با دستور زیر: $ sudo systemctl start nginx یه کار دیگه هم معمولا انجام میدیم تا وقتی سیستم رو خاموش و روشن میکنیم این سرویس از ابتدا فعال باشه:$ sudo systemctl enable nginxحالا به آدرس سروری که باهاش کار میکنیم سر میزنیم. میتونید این کار رو با یک مرورگر یا دستور curl انجام بدین. من اینجا از مرورگر استفاده کردم: صفحه ابتدایی nginxاین خروجی که می بینین صفحه پیش فرض nginx است که در قالب html به ما فرستاده میشه. این نشون میده که کارمون رو درست انجام دادیم. الان که مطمئن شدیم وب سرور ما به درستی کار میکنه میریم سراغ فایل پیکربندی یا config اون. فایل اصلی پیکر بندی در مسیر زیر هست:/etc/nginx/nginx.confوقتی برای اولین بار اون رو باز کنید می بینید که توش نوشته های زیادی هست. برای ماژولار شدن تنظیمات در مسیر زیر یک فایل دیگه وجود داره که در فایل قبلی include شده. ما هم اون رو قراره دستکاری کنیم. /etc/nginx/sites-available/defaultفایل default رو به شکل زیر در میاریم(لازم نیست خطوطی که با # شروع میشن رو پاک کنید چون اون ها comment هستن): server { listen 80; root /usr/share/nginx/html; }خب حالا به توضیح کلی این نوشته ها می پردازیم. اولا که در nginx ما در ابتدای هر خط یک اصطلاحا directive می نویسیم. بعضی اسم ها هم هستن که جلوی اون ها یک یا چند آرگومان رو میذاریم که simple directive هستن. آخر خط این نوع directive ها نقطه ویرگول باید بذاریم. بعضی ها هم جلوشون یک بلوک رو با {} باز می کنیم. به این اسم هایی که جلوشون بلوک باز کردیم میگیم block directive. در خط اول بلوک server رو داریم. تو این بلوک تعیین می کنیم که سرورمون چه ویژگی هایی داره. اول میگیم روی کدوم پورت گوش کنه که اینجا 80 است. بعد هم میگیم وقتی درخواست اومد از کجا بره بخونه. اگه به اون مسیر سر بزنید می بینید یه فایل html هست که همون صفحه ابتدایی nginx است. حالا که با ساختار ابتدایی فایل پیکربندی آشنا شدیم می خوایم اون فایل های html و css مد نظرمون رو توی مسیر root قرار بدیم. قبلش با اجرای دستور زیر از این که فایل ما syntax درستی داره اطمینان حاصل می کنیم:$ nginx -tدر خروجی باید جمله زیر رو ببینید که نشون میده syntax درسته: nginx: the configuration file /etc/nginx/nginx.conf syntax is okکار دیگه reload کردن سرویس هست تا تنظیمات جدید اعمال شه: $ sudo systemctl reload nginxحالا باید فایل های html رو قرار بدیم در مسیر root. من از github یک سری فایل آماده رو دانلود کردم و اونجا گذاشتم:$ git clone https://github.com/designmodo/html-website-templates.git $ cd html-website-templates/ $ sudo cp -r 'Animated Landing Page Website Template'/* /usr/share/nginx/html حالا دوباره آدرس سایت رو توی مرورگر می بینیم که همون شکلیه که اول آموزش آوردم. کارمون در این جا تموم شددر این نوشته یاد گرفتیم که چطور محتوای ثابت یا استاتیک رو نمایش بدیم. در ادامه باید با انواع directive های معروف آشنا بشیم و یاد بگیریم چطور محتوای داینامیک رو به کمک php یا python یا زبان های دیگه نمایش بدیم. هم چنین مباحث پیشرفته تری چون cache و load balancing و امنیت هم هست که باید یادشون بگیریم.امیدوارم این آموزش براتون مفید بوده باشه.