Apache Virtual Hosting در لینوکس پرینت


 

# 🌐 Apache Virtual Hosting در لینوکس

## ✳️ Virtual Hosting چیست؟

Virtual Hosting به شما اجازه می‌دهد چند سایت را روی یک سرور Apache میزبانی کنید. این‌کار از طریق تنظیمات خاصی در فایل‌های پیکربندی Apache انجام می‌شود.

---

## 📁 محل فایل‌های پیکربندی Apache

بسته به توزیع لینوکس:

* Ubuntu/Debian:

* فایل اصلی: `/etc/apache2/apache2.conf`
* سایت‌ها: `/etc/apache2/sites-available/`
* RHEL/CentOS:

* فایل اصلی: `/etc/httpd/conf/httpd.conf`
* دایرکتوری‌های مجازی معمولاً در فایل اصلی تعریف می‌شوند.

---

## ✅ پیش‌نیازها

1. نصب Apache:

```bash
sudo apt install apache2 # برای Debian/Ubuntu
sudo yum install httpd # برای CentOS/RHEL
```

2. تنظیم hostname صحیح:

```bash
hostnamectl set-hostname myserver
```

---

## 🟢 Name-Based Virtual Hosting

مناسب برای زمانی که چند **نام دامنه** دارید ولی فقط **یک آدرس IP**.

### 🎯 مثال:

دامنه‌ها:

* `site1.local`
* `site2.local`

### 🛠️ مراحل:

#### 1. ایجاد دایرکتوری برای سایت‌ها:

```bash
sudo mkdir -p /var/www/site1.local/public_html
sudo mkdir -p /var/www/site2.local/public_html
```

#### 2. ایجاد فایل index:

```bash
echo "<h1>Site 1</h1>" | sudo tee /var/www/site1.local/public_html/index.html
echo "<h1>Site 2</h1>" | sudo tee /var/www/site2.local/public_html/index.html
```

#### 3. ایجاد Virtual Host Files (در Debian/Ubuntu):

```bash
sudo nano /etc/apache2/sites-available/site1.local.conf
```

```apache
<VirtualHost *:80>
ServerAdmin admin@site1.local
ServerName site1.local
DocumentRoot /var/www/site1.local/public_html
</VirtualHost>
```

همین کار را برای `site2.local` تکرار کنید.

#### 4. فعال‌سازی سایت‌ها:

```bash
sudo a2ensite site1.local.conf
sudo a2ensite site2.local.conf
sudo systemctl reload apache2
```

#### 5. افزودن به `/etc/hosts`:

```bash
sudo nano /etc/hosts
```

اضافه کنید:

```
127.0.0.1 site1.local
127.0.0.1 site2.local
```

---

## 🔵 IP-Based Virtual Hosting

در این روش، هر سایت به یک **آدرس IP جداگانه** اختصاص داده می‌شود.

### ⚙️ فرض:

* IP اول: `192.168.1.10`
* IP دوم: `192.168.1.11`

### 🛠️ VirtualHost:

```apache
<VirtualHost 192.168.1.10:80>
ServerName site1.local
DocumentRoot /var/www/site1.local/public_html
</VirtualHost>

<VirtualHost 192.168.1.11:80>
ServerName site2.local
DocumentRoot /var/www/site2.local/public_html
</VirtualHost>
```

اطمینان حاصل کنید که هر دو IP به سرور اختصاص داده شده‌اند و در دسترس هستند.

---

## ✅ بررسی صحت تنظیمات

```bash
sudo apachectl configtest
```

اگر پیغام `Syntax OK` گرفتید:

```bash
sudo systemctl reload apache2 # یا httpd
```

---

## 🧪 تست

در مرورگر باز کنید:

```
http://site1.local
http://site2.local
```

---

## 🛡️ نکات امنیتی و حرفه‌ای

* از گواهینامه SSL برای هر Virtual Host استفاده کنید (با Let's Encrypt)
* دایرکتوری‌ها را با `AllowOverride` یا `DirectoryIndex` کنترل کنید
* سطح دسترسی فایل‌ها را محدود نگه دارید

---

## 📌 نتیجه‌گیری

Virtual Hosting در Apache ابزاری قدرتمند برای میزبانی چند سایت در یک سرور است. Name-based برای اکثر موارد کافی است، ولی در برخی سناریوهای پیشرفته، IP-based مفید است.

 


آیا این پاسخ به شما کمک کرد؟

  • 0
« برگشت