جدول محتوایی
آموزش نصب وب سرور Nginx در دبیان 10
پیش نویس
وب سرور Nginx یک سرور رایگان و منبع باز است که برای میزبانی وب سایت ها و برنامه های کاربردی در هر اندازه استفاده می شود.
این نرم افزار به دلیل تاثیر کم بر منابع حافظه، مقیاس پذیری بالا و معماری مدولار و رویداد محور آن که می تواند عملکرد ایمن و قابل پیش بینی ارائه دهد، شناخته شده است.
بیش از یک وب سرور، Nginx به عنوان یک متعادل کننده بار، یک حافظه پنهان HTTP و یک پروکسی معکوس نیز کار می کند.
در این راهنما، Nginx را بر روی سرور Debian 10 خود نصب خواهید کرد. و اگر به دنبال خرید وب سرور مجازی هستید، پیشنهاد میکنیم به وب سایت ایرانیکاسرور مراجعه کرده و پلن مناسب با نیاز های خود را انتخاب کنید.
پیش نیاز ها
قبل از شروع این راهنما، باید یک کاربر معمولی و غیر روت با امتیازات sudo پیکربندی شده روی سرور خود داشته باشید. همچنین باید فایروال فعال داشته باشید.
قدم 1: نصب وب سرور Nginx
Nginx در مخازن نرمافزار پیشفرض دبیان موجود است و امکان نصب آن را از ابزارهای مدیریت بستههای معمولی فراهم میکند.
ابتدا فهرست بسته محلی خود را به روز کنید تا آخرین تغییرات بالادستی را منعکس کند:
sudo apt update
سپس بسته Nginx را نصب کنید:
sudo apt install nginx
نصب را تأیید کنید، Y را وارد کنید، سپس Enter را فشار دهید تا ادامه دهید.
سپس “apt” تمام افزونه های ملزوم را روی سیستم شما نصب می کند.
قدم 2: تنظیم فایروال
قبل از آزمایش Nginx، لازم است تنظیمات فایروال را تغییر دهید تا امکان دسترسی خارجی به پورت های وب پیش فرض فراهم شود.
با فرض اینکه دستورالعمل های موجود در پیش نیازها را دنبال کرده اید، باید یک فایروال UFW پیکربندی شده باشد تا دسترسی به سرور را محدود کند.
در حین نصب، Nginx خود را در UFW ثبت میکند تا چند نمایه برنامه ارائه دهد که میتوان از آنها برای فعال یا غیرفعال کردن دسترسی به Nginx از طریق فایروال استفاده کرد.
با استفاده از دستور زیر، پروفایل های اپلیکیشن UFW را لیست کنید:
sudo ufw app list
لیست دریافتی شما باید چیزی به این شکل باشد:
Available applications:
...
Nginx Full
Nginx HTTP
Nginx HTTPS
...
همانطور که می بینید، سه پروفایل برای Nginx موجود است:
- Nginx Full: این پروفایل هم پورت 80 (ترافیک وب عادی و رمزگذاری نشده) و هم پورت 443 (ترافیک رمزگذاری شده TLS/SSL) را باز می کند.
- Nginx HTTP: این پروفایل فقط پورت 80 را باز می کند (ترافیک وب عادی و رمزگذاری نشده)
- Nginx HTTPS: این پروفایل فقط پورت 443 را باز می کند (ترافیک رمزگذاری شده TLS/SSL)
به شما توصیه می شود محدودترین نمایه(پروفایل) را فعال کنید که همچنان به ترافیکی که پیکربندی کرده اید اجازه دهد.
از آنجایی که در این راهنما هنوز TLS/SSL را برای سرور خود پیکربندی نکردهاید، فقط باید به ترافیک HTTP در پورت 80 اجازه دهید.
شما میتوانید این کار را با تایپ دستور زیر انجام دهید:
sudo ufw allow 'Nginx HTTP'
سپس، با وارد کردن دستور زیر، تغییرات ایجاد شده را تایید می کنید:
sudo ufw status
صفحه ی ظاهر شده ترافیک HTTP در خروجی مجاز را نشان می دهد:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
قدم 3: بررسی وب سرور
در پایان مراحل نصب، Nginx ، دبیان 10 را راه اندازی می کند. وب سرور باید از قبل راه اندازی شده باشد.
با تایپ کردن زیر میتوانید با سیستم systemd init بررسی کنید تا مطمئن شوید که سرویس در حال اجرا است:
systemctl status nginx
خروجی:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-06-28 18:42:58 UTC; 49s ago
Docs: man:nginx(8)
Main PID: 2729 (nginx)
Tasks: 2 (limit: 1167)
Memory: 7.2M
CGroup: /system.slice/nginx.service
├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2730 nginx: worker process
این خروجی نشان می دهد که سرویس با موفقیت شروع شده است. با این حال، بهترین راه برای آزمایش این است که واقعاً یک صفحه از Nginx درخواست کنید.
میتوانید با ورود به آدرس IP سرور خود، به صفحه فرود پیشفرض Nginx دسترسی پیدا کنید تا تأیید کنید که نرمافزار به درستی اجرا میشود.
اگر آدرس IP سرور خود را نمی دانید، می توانید این را در خط فرمان سرور خود تایپ کنید:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
چند دستور قابل استفاده است و شما می توانید هر کدام را در مرورگر وب خود امتحان کنید تا ببینید آیا کار می کنند یا خیر.
زمانی که آدرس IP سرور خود را به دست اوردید ، آن را در نوار آدرس مرورگر خود وارد کنید:
http://your_server_ip
صفحه فرود پیش فرض Nginx باید در مرورگر وب شما ظاهر شود:
این صفحه با Nginx همراه است تا به شما نشان دهد که سرور به درستی در حال اجرا است.
قدم 4: مدیریت فرآیند وب سرور Nginx
اکنون که وب سرور خود را راه اندازی کرده اید، می توانید برخی از دستورات مدیریتی اولیه را مرور کنید.
در راستای متوقف کردن وب سرور خود، می توانید از دستور زیر استفاده کنید:
sudo systemctl stop nginx
برای راه اندازی وب سرور در صورت توقف، دستور زیر را تایپ کنید:
sudo systemctl start nginx
جهت توقف و سپس شروع مجدد سرویس، دستور زیر را تایپ کنید:
sudo systemctl restart nginx
اگر در حال ایجاد تغییرات در پیکربندی هستید، Nginx اغلب میتواند بدون حذف اتصالات، بارگیری مجدد کند. برای انجام این کار، دستور زیر را تایپ کنید:
sudo systemctl reload nginx
به طور پیش فرض، Nginx به گونه ای پیکربندی شده است که هنگام بوت شدن سرور، به طور خودکار شروع به کار کند. اگر این چیزی نیست که شما می خواهید، می توانید این رفتار را با استفاده از دستور زیر غیرفعال کنید:
sudo systemctl disable nginx
برای فعال کردن مجدد سرویس برای راه اندازی در هنگام بوت، می توانید دستور زیر را وارد کنید:
sudo systemctl enable nginx
قدم 5: راه اندازی بلوک های سرور (اختیاری)
هنگام استفاده از وب سرور Nginx، بلوک های سرور (مشابه میزبان های مجازی در آپاچی) می توانند برای کپسوله کردن جزئیات پیکربندی و میزبانی بیش از یک دامنه در یک سرور واحد استفاده شوند.
در دستورات زیر your_domain را با نام دامنه خود جایگزین کنید.
Nginx در Debian 10 دارای یک بلوک سرور است که به طور پیش فرض فعال شده است که برای ارائه اسناد خارج از یک دایرکتوری(فهرست) در /var/www/html پیکربندی شده است.
در حالی که این امر به نفع یک وب سایت است، اگر در حال میزبانی چندین وب سایت هستید، مدیریت ان می تواند کمی دشوار و خارج از کنترل شود.
بهجای تغییر /var/www/html، یک ساختار دایرکتوری در /var/www برای وبسایت your_domain ایجاد کنید.
/var/www/html را به عنوان دایرکتوری پیشفرض در محل قرار دهید تا اگر درخواست کلاینت با هیچ سایت دیگری مطابقت نداشت، ارائه شود.
دایرکتوری برای your_domain به صورت زیر ایجاد کنید، با استفاده از پرچم -p برای ایجاد هر دایرکتوری والد ضروری:
sudo mkdir -p /var/www/your_domain/html
سپس، مالکیت دایرکتوری را با متغیر محیطی $USER به کاربر فعلی سیستم اختصاص دهید:
sudo chown -R $USER:$USER /var/www/your_domain/html
اگر مقدار umask خود را تغییر ندادهاید، مجوزهای روت وب شما باید صحیح باشد، اما میتوانید با تایپ کردن دستور زیر مطمئن شوید:
sudo chmod -R 755 /var/www/your_domain
سپس، یک صفحه نمونه index.html با استفاده از nano یا ویرایشگر متن دلخواه خود ایجاد کنید:
nano /var/www/your_domain/html/index.html
در داخل، نمونه HTML زیر را اضافه کنید:
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
پس از اتمام کار فایل را ذخیره کرده و ببندید.
در nano می توانید این کار را با فشار دادن CTRL + X و سپس Y و در اخر ENTER انجام دهید.
برای اینکه Nginx بتواند این محتوا را ارائه دهد، باید یک بلوک سرور با دستورالعمل های صحیحی که به روت وب سفارشی شما اشاره می کند، ایجاد کنید.
به جای تغییر مستقیم فایل پیکربندی پیش فرض، یک فایل جدید در /etc/nginx/sites-available/your_domain ایجاد کنید:
sudo nano /etc/nginx/sites-available/your_domain
بلوک پیکربندی زیر را اضافه کنید، که شبیه به پیش فرض است، اما برای فهرست و نام دامنه جدید شما به روز شده است:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
به پیکربندی روت به روز شده در فهرست جدید خود و server_name در نام دامنه خود توجه کنید. فراموش نکنید که your_domain را با نام دامنه واقعی خود جایگزین کنید.
در قدم بعد، این بلوک سرور را با ایجاد یک پیوند نمادین به فایل پیکربندی سفارشی خود در دایرکتوری فعال شده توسط سایتها فعال کنید، که Nginx در هنگام راهاندازی آن را میخواند:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
سرور شما اکنون دارای دو بلوک سرور فعال و پیکربندی شده است تا به درخواستها بر اساس دستورالعملهای “listen” و “server_name” پاسخ دهد :
your_domain
: این دستور به درخواست های your_domain و www.your_domain پاسخ خواهد داد.default
: این دستور به هر درخواستی در پورت 80 که با دو بلوک دیگر مطابقت نداشته باشد پاسخ خواهد داد.
برای جلوگیری از مشکل حافظه سطل هش احتمالی که می تواند از افزودن نام سرور اضافی به پیکربندی شما ایجاد شود، لازم است یک مقدار واحد را در فایل /etc/nginx/nginx.conf تنظیم کنید.
فایل را باز کنید:
sudo nano /etc/nginx/nginx.conf
دستور server_names_hash_bucket_size را پیدا کنید و نماد # را حذف کنید تا خط را از حالت کامنت خارج کنید:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
پس از اتمام کار فایل را ذخیره کرده و ببندید.
در مرحله بعد، آزمایش کنید تا مطمئن شوید در هیچ یک از فایل های Nginx شما اشتباه نوشتاری وجود ندارد:
sudo nginx -t
در صورتی که هیچ مشکلی نداشته باشیم، خروجی زیر را مشاهده می کنیم:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
پس از گذراندن تست پیکربندی، Nginx را مجددا راه اندازی کنید تا تغییرات شما فعال شود:
sudo systemctl restart nginx
Nginx اکنون باید نام دامنه شما را ارائه دهد. شما می توانید با رفتن به http://your_domain از نام دامنه خود اطمینان بیابید.
HTML سفارشی ایجاد شده در پوشه /var/www/your_domain/html/index.html باید در اینجا ارائه شود:
قدم 6: آشنایی با فایل ها و دایرکتوری های مهم Nginx
اکنون که میدانید چگونه خود سرویس Nginx را مدیریت کنید، میتوانید کمی زمان بگذارید تا با چند فهرست و فایل مهم آشنا شوید.
محتوا (content)
- /var/www/html: محتوای اصلی وب که خارج از فهرست /var/www/html ارائه میشود و به طور پیشفرض فقط از صفحه پیشفرض Nginx تشکیل شده است. این فایل را می توان با تغییر فایل های پیکربندی Nginx تغییر داد.
پیکربندی سرور
- /etc/nginx: دایرکتوری پیکربندی Nginx. همه فایل های پیکربندی Nginx در اینجا قرار دارند.
- /etc/nginx/nginx.conf: فایل پیکربندی اصلی Nginx. این فایل را می توان برای ایجاد تغییرات در پیکربندی جهانی Nginx تغییر داد.
- /etc/nginx/sites-available/: فهرستی که میتوان بلوکهای سرور هر سایت را در آن ذخیره کرد. Nginx از فایل های پیکربندی موجود در این دایرکتوری استفاده نمی کند مگر اینکه به دایرکتوری فعال شده سایت ها پیوند داده شده باشند. به طور معمول، تمام پیکربندی بلوک سرور در این دایرکتوری انجام می شود و سپس با پیوند دادن به دایرکتوری دیگر فعال می شود.
- /etc/nginx/sites-enabled/: دایرکتوری که بلوکهای سرور فعال در هر سایت در آن ذخیره میشوند. به طور معمول، این ها با پیوند دادن به فایل های پیکربندی موجود در فهرست سایت های موجود ایجاد می شوند.
- /etc/nginx/snippets: این دایرکتوری شامل قطعات پیکربندی است که می تواند در جای دیگری از پیکربندی Nginx گنجانده شود. بخشهای پیکربندی بالقوه تکرارپذیر، کاندیدهای خوبی برای تبدیل مجدد به قطعهها هستند.
گزارش های سرور
- /var/log/nginx/access.log: هر درخواست به سرور وب شما در این فایل گزارش ثبت میشود، مگر اینکه Nginx به گونهای دیگر پیکربندی شده باشد.
- /var/log/nginx/error.log: هر گونه خطای Nginx در این گزارش ثبت می شود.
جمع بندی
اکنون که وب سرور خود را نصب کرده اید، گزینه های زیادی برای نوع محتوایی که می توانید ارائه دهید و فناوری هایی که می توانید برای ایجاد تجربه غنی تری برای کاربران خود استفاده کنید، دارید.
در این مقاله به نصب وب سرور Nginx در دبیان 10 پرداختیم. امیدواریم این مطلب برای شما مفید واقع شود. موفق باشید!
سلام به تیم ایرانکاسرور ممنون از پست خوبتون
سایت خوبی دارید مطالبش عالیه
عالی مثل همیشه