Virtual hostların konfiqurasiyası
1. Virtual host-lar nədir?
Təsəvvür elə ki, sən bir rahat kafe açmısan. Müştərilərinin çoxu qəhvə ☕ üçün gəlir, amma ara-sıra kimlərsə çay 🍵 sifariş edir. Çay sevənlər üçün ayrı bir məkan açmaqdansa, sadəcə onlar üçün kiçik bir künc ayırırsan. Veb-serverlər dünyasında bu konsepsiyaya virtual host-lar deyilir. Bu, serverinə bir fiziki serveri qoruyaraq bir neçə sayt (fərqli domenlərlə) idarə etməyə imkan yaradır.
Virtual host-ların növləri
- IP ünvanı əsasında — hər sayt özünə unikal bir IP ünvanı alır. Bu, konsertdəki VIP zona kimidir: hər bir VIP bilet sahibi öz yerini alır.
- Domen adları əsasında — bir neçə sayt bir IP ünvanını paylaşa bilər. Burada server, müştəri sorğusundan gələn host adını (domen adını) istifadə edərək hansı saytı göstərməli olduğunu başa düşür. Bu, əksər layihələr üçün daha çox yayılmış və rahat bir variantdır.
2. Nginx-də virtual hostun tənzimlənməsi
1. Yeni virtual host yaratmaq
Virtual host tənzimləmək üçün ilk öncə konfiqurasiya faylı yaratmaq lazımdır. Bu fayl serverin müəyyən bir domain üçün sorğuları necə idarə etməli olduğunu göstərir.
Saytımız üçün bir fayl yaradırıq, misal üçün example.com
:
sudo nano /etc/nginx/sites-available/example.com
Aşağıdakı konfiqurasiya blokunu əlavə edirik:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Kodu detallarla nəzərdən keçirək:
listen 80;
: Serverin 80-ci portu dinləyəcəyini göstərir (əlavə olaraq HTTP üçün istifadə olunur).server_name example.com www.example.com;
: Serverin hansı domain adları üçün cavab verəcəyini müəyyənləşdirir.root /var/www/example.com;
: Sayt fayllarının saxlandığı əsas qovluğu göstərən direktivdir.index index.html;
: Saytın "əsas səhifəsi" olaraq istifadə olunacaq faylı göstərir.location / { try_files $uri $uri/ =404; }
: Sorğuların yönləndirilməsi üçün tənzimləmə. Əgər fayl və ya qovluq tapılmırsa, 404 xətası qaytarılır.
2. Konfiqurasiyanın aktivləşdirilməsi
İndi virtual hostumuzu "aktivləşdirmək" lazımdır. Nginx-də bu, simvolik keçidlər vasitəsilə edilir:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Sonra konfiqurasiyada səhv olmadığından əmin olmaq üçün yoxlama aparırıq:
sudo nginx -t
Hər şey qaydasındadırsa, serveri yenidən başladırıq:
sudo systemctl reload nginx
3. İşləməsini yoxlama
Sayt faylları üçün qovluq yaradırıq:
sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html
Aşağıdakı sadə HTML kodunu əlavə edirik:
<h1>Example.com saytına xoş gəldiniz!</h1>
<p>Sizin Nginx serveriniz xidmətə hazırdır.</p>
Faylı yadda saxlayırıq, daha sonra brauzerdə açın: http://example.com
. Əgər salamlama mesajını görsəniz, deməli virtual host işləyir!
4.Linux-də simvolik keçidlər
Simvolik keçidlər (və ya soft links, symlinks) digər fayl və ya qovluğa işarə edən xüsusi fayl obyektləridir. Windows-da "qısa yollar" kimi işləyərək, alternativ bir yol vasitəsilə hədəf fayla və ya qovluğa müraciət etməyə imkan verir.
Simvolik keçidlər orijinal obyektə yolu saxlayır, özü obyekt deyil. Əgər orijinal fayl və ya qovluq daşınır və ya silinirsə, keçid "pozulur", çünki artıq mövcud obyektə işarə etmir.
Simvolik keçid yaratmaq üçün əmr:
ln -s target link_name
target
— orijinal obyekt üçün yol.link_name
— keçidin adı.
Nümunə:
ln -s /var/log/syslog log_link
İndi log_link
vasitəsilə /var/log/syslog
faylına müraciət edə bilərsiniz.
Tətbiq sahələri:
- Navqasiyanı asanlaşdırmaq.
- Fayllara alternativ giriş nöqtələri yaratmaq.
- Kataloqların təşkili.
3. Apache-də virtual hostun sazlanması
1. Konfiqurasiya faylının yaradılması
Apache fərqli bir yanaşma istifadə edir. Burada virtual hostların konfiqurasiyaları /etc/apache2/sites-available/
qovluğunda yerləşir. Saytımız üçün fayl yaradırıq:
sudo nano /etc/apache2/sites-available/example.com.conf
Aşağıdakı kodu əlavə edirik:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Qısa izah:
<VirtualHost *:80>
: 80-ci porta gələn bütün sorğular üçün konfiqurasiyanın tətbiq edildiyini göstərir.ServerName
vəServerAlias
: Saytın əsas və əlavə domen adlarını təyin edir.DocumentRoot
: Saytın kök qovluğunu göstərir.<Directory>
: Müəyyən edilmiş qovluq üçün giriş hüquqlarını və davranışı təyin edən blok.
2. Konfiqurasiyanın aktivləşdirilməsi
Konfiqurasiyanı aktivləşdirmək üçün bu əmrdən istifadə edirik:
sudo a2ensite example.com.conf
Dəyişikliklərin qüvvəyə minməsi üçün serveri yenidən başladırıq:
sudo systemctl restart apache2
3. İşləməsini yoxlamaq
Yenidən sayt üçün qovluq və fayl yaradırıq:
sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html
Məzmunu əlavə edirik:
<h1>Apache-də example.com saytına xoş gəldiniz!</h1>
Saxlayırıq və brauzerdə açırıq: http://example.com
. Əgər qarşınıza salam səhifəsi çıxırsa — təbriklər, Apache-də virtual hostu sazladınız!
4. Bir neçə hostun yoxlanılması və idarə edilməsi
İkinci virtual hostun tənzimlənməsi
Tutaq ki, siz ikinci bir sayt işlətmək istəyirsiniz: test.com
. Proses eyni qalır:
- Yeni bir konfiqurasiya faylı yaradırsınız.
- Təkrarsız domen adı və kök qovluq göstərirsiniz.
- Konfiqurasiyanı aktivləşdirirsiniz və serveri yenidən işə salırsınız.
Nginx üçün:
sudo nano /etc/nginx/sites-available/test.com
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx
Apache üçün:
sudo nano /etc/apache2/sites-available/test.com.conf
sudo a2ensite test.com.conf
sudo systemctl restart apache2
Problemlərin diaqnostikası
Əgər virtual hostlar işləmirsə, xətaları yoxlamaqla başlayın. Məsələn:
Nginx üçün:
sudo tail -f /var/log/nginx/error.log
Apache üçün:
sudo tail -f /var/log/apache2/error.log
Siz həmçinin curl
komandasını istifadə edərək saytı birbaşa test edə bilərsiniz:
curl -I http://example.com
İndi siz virtual hostları quraşdıra və bir server üzərində bir neçə sayt işlədə bilərsiniz. Bununla yanaşı, HTTPS konfiqurasiyası da çox vacibdir ki, saytlarınızı təhlükəsiz edəsiniz. Amma bu artıq növbəti mühazirənin mövzusudur!
GO TO FULL VERSION