نصب و کانفیگ وب سرور لینوکس: راهنمای جامع نصب، پیکربندی پیشرفته

جدول محتوا نمایش

مقدمه

وب سرور یکی از مهم‌ترین اجزای هر سایت است که مسئول دریافت درخواست‌های HTTP از مرورگرها و پاسخ‌دهی به آنهاست. در سیستم‌عامل‌های لینوکس، انواع مختلفی از وب سرورها وجود دارند که رایج‌ترین آنها عبارتند از:

  • Apache HTTP Server (معروف به Apache)
  • Nginx
  • LiteSpeed

در این مقاله کانفیگ سرور، ما به معرفی این وب سرورها، نحوه نصب، پیکربندی اولیه و تنظیمات پیشرفته خواهیم پرداخت. مقاله شامل توضیحات مفصل، دستورات و کدهای لازم برای راه‌اندازی و بهینه‌سازی این وب سرورهاست.


بخش اول: نصب و پیکربندی وب سرور Apache

1. نصب Apache بر روی لینوکس (Red Hat / CentOS و Ubuntu)

برای نصب Apache روی سیستم‌های مبتنی بر Red Hat (مثل CentOS و Fedora):

sudo yum install httpd

برای نصب Apache روی سیستم‌های مبتنی بر Debian/Ubuntu:

sudo apt update
sudo apt install apache2

2. شروع و متوقف کردن سرویس Apache

پس از نصب، شما می‌توانید Apache را با دستورات زیر شروع کنید:

برای سیستم‌های مبتنی بر Red Hat (CentOS/Fedora):

sudo systemctl start httpd
sudo systemctl enable httpd

برای سیستم‌های مبتنی بر Debian/Ubuntu:

sudo systemctl start apache2
sudo systemctl enable apache2

3. تنظیمات اولیه Apache

پیکربندی Apache در فایل /etc/httpd/conf/httpd.conf (برای Red Hat/CentOS) یا /etc/apache2/apache2.conf (برای Ubuntu) قرار دارد. برای ویرایش این فایل از ویرایشگر متنی مانند nano یا vim استفاده کنید.

ویرایش فایل پیکربندی Apache (برای Red Hat):

sudo nano /etc/httpd/conf/httpd.conf

ویرایش فایل پیکربندی Apache (برای Ubuntu):

sudo nano /etc/apache2/apache2.conf

در این فایل، می‌توانید تنظیمات مختلف مانند تغییر پورت، فعال‌سازی ماژول‌ها و تنظیمات مربوط به دایرکتوری‌ها را انجام دهید.


بخش دوم: نصب و پیکربندی Nginx

1. نصب Nginx

برای نصب Nginx روی سیستم‌های مبتنی بر Red Hat (CentOS/Fedora):

sudo yum install nginx

برای نصب Nginx روی سیستم‌های مبتنی بر Debian/Ubuntu:

sudo apt update
sudo apt install nginx

2. شروع و متوقف کردن سرویس Nginx

پس از نصب، می‌توانید Nginx را با دستورات زیر راه‌اندازی کنید:

برای سیستم‌های مبتنی بر Red Hat:

sudo systemctl start nginx
sudo systemctl enable nginx

برای سیستم‌های مبتنی بر Ubuntu:

sudo systemctl start nginx
sudo systemctl enable nginx

3. تنظیمات اولیه Nginx

پیکربندی Nginx در فایل /etc/nginx/nginx.conf قرار دارد. برای ویرایش این فایل از ویرایشگر متنی استفاده کنید.

ویرایش فایل پیکربندی Nginx:

sudo nano /etc/nginx/nginx.conf

در این فایل، تنظیمات مختلف مانند تعداد worker process‌ها، پورت‌ها و تنظیمات مربوط به سرورهای مجازی (virtual hosts) را می‌توان انجام داد.


بخش سوم: تنظیمات پیشرفته و بهینه‌سازی وب سرور

1. تنظیمات امنیتی

a. جلوگیری از دسترسی به فایل‌های حساس:

برای جلوگیری از دسترسی به فایل‌های حساس (مانند فایل‌های پیکربندی یا log‌ها)، باید تنظیماتی در پیکربندی Apache یا Nginx انجام دهید.

در Apache:

برای جلوگیری از دسترسی به فایل‌های خاص، در فایل پیکربندی Apache تنظیمات زیر را اضافه کنید:

<Files ".ht*">
    Require all denied
</Files>

در Nginx:

در پیکربندی Nginx، از تنظیمات زیر استفاده کنید تا از دسترسی به فایل‌های پیکربندی جلوگیری کنید:

location ~ /\.ht {
deny all;
}

2. استفاده از SSL برای امنیت بیشتر

استفاده از SSL برای رمزگذاری ارتباطات بین وب‌سرور و کاربران ضروری است. برای نصب و پیکربندی SSL می‌توانید از Let’s Encrypt یا یک گواهی SSL تجاری استفاده کنید.

برای نصب Let’s Encrypt و پیکربندی SSL:

نصب Certbot (ابزار Let’s Encrypt):

sudo apt install certbot python3-certbot-nginx
sudo apt install certbot python3-certbot-apache

گرفتن گواهی SSL:

برای Nginx:

sudo certbot --nginx

برای Apache:

sudo certbot --apache

این دستور به‌طور خودکار SSL را برای دامنه شما تنظیم می‌کند.

3. تنظیمات بهینه‌سازی عملکرد

a. کشینگ محتوا (Caching):

یکی از بهترین روش‌ها برای بهینه‌سازی عملکرد وب‌سایت‌ها، استفاده از کشینگ است. کشینگ به‌ویژه برای محتوای ایستا مانند تصاویر، فایل‌های CSS و JS مفید است.

در Apache:

برای فعال‌سازی کشینگ در Apache، باید ماژول mod_expires را فعال کنید و سپس تنظیمات زیر را در فایل پیکربندی اضافه کنید:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
</IfModule>

در Nginx:

برای فعال‌سازی کشینگ در Nginx، تنظیمات زیر را در فایل پیکربندی nginx.conf اضافه کنید:

location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ {
    expires 30d;
}

بخش چهارم: مدیریت سرور و نظارت بر وب سرور

1. نظارت بر وضعیت وب سرور

برای نظارت بر وضعیت Apache یا Nginx، می‌توانید از ابزارهای مختلفی مانند systemctl، journalctl و nginx -t برای بررسی وضعیت سرویس‌ها استفاده کنید.

بررسی وضعیت Apache:

sudo systemctl status apache2  # برای Ubuntu
sudo systemctl status httpd    # برای CentOS

بررسی وضعیت Nginx:

sudo systemctl status nginx

2. بررسی لاگ‌ها

لاگ‌های وب سرور اطلاعات ارزشمندی در مورد عملکرد و مشکلات سرور فراهم می‌کنند. برای بررسی لاگ‌ها از دستورات زیر استفاده کنید:

لاگ‌های Apache:

tail -f /var/log/apache2/access.log  # برای Ubuntu
tail -f /var/log/httpd/access_log    # برای CentOS

لاگ‌های Nginx:

tail -f /var/log/nginx/access.log

بخش پنجم: تنظیمات ویژه برای عملکرد و مقیاس‌پذیری

1. تنظیمات تعداد Worker در Nginx و Apache

در Apache:

برای بهبود عملکرد، تعداد worker‌ها را در پیکربندی Apache تنظیم کنید. مقدارهای متداول برای تنظیمات StartServers، MinSpareServers و MaxSpareServers استفاده می‌شود.

StartServers          5
MinSpareServers      5
MaxSpareServers     10
MaxClients          150
MaxRequestsPerChild  3000

در Nginx:

در پیکربندی Nginx می‌توانید تعداد worker‌ها را با تنظیمات worker_processes تنظیم کنید.

worker_processes  4;
worker_connections 1024;

بخش ششم: Load Balancing و مقیاس‌پذیری

1. مفهوم Load Balancing در وب سرورها

Load balancing به فرآیند توزیع بار شبکه‌ای یا پردازشی میان چندین سرور گفته می‌شود. این تکنیک باعث بهبود کارایی، افزایش قابلیت اطمینان، و کاهش زمان پاسخ‌دهی وب‌سایت‌ها می‌شود. به‌ویژه برای سایت‌هایی با ترافیک بالا، استفاده از Load Balancer ضروری است تا بارها بین سرورهای مختلف توزیع شود.

برای ایجاد Load Balancing می‌توان از روش‌هایی مانند Round Robin، Least Connections یا IP Hash استفاده کرد.

2. تنظیم Load Balancing در Nginx

Nginx یکی از بهترین گزینه‌ها برای Load Balancing است. برای راه‌اندازی Load Balancing در Nginx، کافی است تنظیمات مربوط به upstream را در فایل پیکربندی nginx.conf انجام دهید. در این مثال، درخواست‌ها به دو سرور مختلف توزیع می‌شود:

http {
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
}

server {
location / {
proxy_pass http://backend;
}
}
}

در این پیکربندی، درخواست‌ها به‌طور خودکار بین سرورهایی که در بخش upstream تعریف شده‌اند، توزیع می‌شود.

3. استفاده از Round Robin و Least Connections

Round Robin یک روش معمول در Load Balancing است که به‌صورت پیش‌فرض در Nginx فعال است. به این معنی که درخواست‌ها به ترتیب به سرورها ارسال می‌شود.

برای استفاده از Least Connections (که درخواست‌ها به سروری با کمترین تعداد اتصال فعلی ارسال می‌شود)، می‌توانید از تنظیمات زیر استفاده کنید:

upstream backend {
    least_conn;
    server 192.168.1.101;
    server 192.168.1.102;
}

4. تنظیمات Load Balancer در Apache

برای تنظیم Load Balancing در Apache، می‌توان از ماژول mod_proxy و mod_proxy_balancer استفاده کرد.

ابتدا باید ماژول‌های موردنظر را فعال کنید:

sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http

سپس در فایل پیکربندی Apache (مثل /etc/apache2/sites-available/000-default.conf)، تنظیمات زیر را اضافه کنید:

<Proxy "balancer://mycluster">
    BalancerMember http://192.168.1.101
    BalancerMember http://192.168.1.102
</Proxy>

<VirtualHost *:80>
    ProxyPass "/app" "balancer://mycluster/"
    ProxyPassReverse "/app" "balancer://mycluster/"
</VirtualHost>

در این تنظیمات، درخواست‌ها به‌صورت خودکار بین سرورهای مختلف توزیع خواهد شد.


بخش هفتم: تنظیمات کشینگ پیشرفته

1. کشینگ در Nginx

Nginx به‌طور پیش‌فرض از کشینگ محتوای استاتیک مانند تصاویر، CSS و JS پشتیبانی می‌کند. برای بهینه‌سازی بیشتر کشینگ، می‌توان تنظیمات ویژه‌ای برای فایل‌های خاص انجام داد.

برای مثال، کشینگ برای انواع خاصی از فایل‌ها مانند تصاویر و فایل‌های CSS به‌صورت زیر پیکربندی می‌شود:

http {
    server {
        location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ {
            expires 30d;
            add_header Cache-Control "public";
        }
    }
}

این تنظیمات باعث می‌شود که Nginx فایل‌های تصویری، CSS و JS را به مدت ۳۰ روز در کش نگه دارد.

2. کشینگ در Apache

در Apache، می‌توان از ماژول mod_cache و mod_cache_disk برای کشینگ استفاده کرد. برای فعال‌سازی کشینگ، مراحل زیر را دنبال کنید.

ابتدا ماژول‌ها را فعال کنید:

sudo a2enmod cache
sudo a2enmod cache_disk

سپس در فایل پیکربندی Apache، تنظیمات کشینگ را اضافه کنید:

<IfModule mod_cache.c>
    CacheRoot /var/cache/apache2/mod_cache
    CacheEnable disk /images/
    CacheEnable disk /styles/
    CacheDefaultExpire 3600
</IfModule>

در این تنظیمات، فایل‌های موجود در مسیر /images/ و /styles/ کش خواهند شد و برای یک ساعت (۳۶۰۰ ثانیه) در کش باقی خواهند ماند.


بخش هشتم: بهینه‌سازی عملکرد و استفاده از HTTP/2

1. فعال‌سازی HTTP/2 در Nginx

HTTP/2 یک پروتکل جدید برای انتقال داده‌ها است که سرعت بارگذاری صفحات وب را به‌طور قابل توجهی افزایش می‌دهد. برای فعال‌سازی HTTP/2 در Nginx، کافی است دستور زیر را در فایل پیکربندی nginx.conf اضافه کنید:

server {
    listen 443 ssl http2;
    server_name yourdomain.com;
    ssl_certificate /etc/ssl/certs/yourdomain.crt;
    ssl_certificate_key /etc/ssl/private/yourdomain.key;
}

با این تنظیمات، Nginx درخواست‌های HTTPS را با استفاده از پروتکل HTTP/2 سرویس‌دهی می‌کند.

2. فعال‌سازی HTTP/2 در Apache

برای فعال‌سازی HTTP/2 در Apache، ابتدا باید ماژول mod_http2 را فعال کنید:

sudo a2enmod http2

سپس در فایل پیکربندی Apache (مثلاً /etc/apache2/apache2.conf)، تنظیمات زیر را اضافه کنید:

Protocols h2 http/1.1

این تنظیمات باعث می‌شود که Apache از پروتکل HTTP/2 برای سرویس‌دهی به درخواست‌های HTTPS استفاده کند.


بخش نهم: بهترین شیوه‌ها برای بهینه‌سازی وب سرور

1. استفاده از GZIP برای فشرده‌سازی

فشرده‌سازی داده‌ها باعث کاهش حجم داده‌های ارسالی از سرور به مرورگر می‌شود و می‌تواند به‌طور قابل توجهی زمان بارگذاری صفحات را کاهش دهد.

در Nginx:

برای فعال‌سازی فشرده‌سازی GZIP، تنظیمات زیر را در فایل پیکربندی nginx.conf قرار دهید:

gzip on;
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
gzip_min_length 1000;

در Apache:

برای فعال‌سازی GZIP در Apache، ماژول mod_deflate را فعال کنید:

sudo a2enmod deflate

سپس تنظیمات زیر را در فایل پیکربندی Apache اضافه کنید:

SetOutputFilter DEFLATE

2. محدود کردن تعداد اتصالات همزمان

برای جلوگیری از بار زیاد روی سرور، می‌توان تعداد اتصالات همزمان را محدود کرد. این کار باعث می‌شود که سرور بتواند بار ترافیک را به‌طور بهینه‌تری مدیریت کند.

در Nginx:

برای محدود کردن تعداد اتصالات همزمان، می‌توانید از دستور زیر استفاده کنید:

http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location / {
limit_conn addr 10;
}
}
}

در Apache:

برای محدود کردن تعداد اتصالات همزمان، می‌توانید از تنظیمات زیر استفاده کنید:

<IfModule mpm_worker_module>
MaxRequestWorkers 150
ServerLimit 150
</IfModule>

نتیجه‌گیری

در این مقاله، به‌طور جامع و کامل وب سرورهای لینوکسی مانند Apache و Nginx را معرفی کرده و نحوه نصب، پیکربندی و تنظیمات پیشرفته برای عملکرد بهینه، امنیت و مقیاس‌پذیری را توضیح دادیم. تنظیمات کشینگ، Load Balancing، بهینه‌سازی عملکرد و استفاده از SSL و HTTP/2 از جمله مواردی هستند که می‌توانند به‌طور قابل توجهی عملکرد وب سرور شما را بهبود بخشند.

با رعایت این بهترین شیوه‌ها و تنظیمات، می‌توانید یک وب سرور با عملکرد بالا و ایمن برای سایت خود ایجاد کنید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *