## ایجاد Virtual Hosts، تولید گواهی SSL و فعالسازی CGI در Gentoo Linux
Gentoo یکی از توزیعهای قدرتمند لینوکس است که با پیکربندی دستی، کنترل کاملی به کاربر میدهد. در این مقاله، گامبهگام ایجاد Virtual Host، تولید SSL دستی، و فعالسازی CGI Gateway در Apache را روی Gentoo آموزش میدهیم.
---
### پیشنیازها
* نصب Gentoo با دسترسی root
* نصب Apache (httpd)
* فعال بودن سرویس OpenRC یا systemd برای مدیریت سرویسها
* دامنه ثبتشده (یا استفاده از `/etc/hosts` برای تست)
---
## ۱. نصب Apache
اگر Apache را نصب نکردهاید، با `emerge` آن را نصب کنید:
```bash
sudo emerge --ask www-servers/apache
```
---
## ۲. فعالسازی ماژولهای موردنیاز در USE flags
برای استفاده از SSL و CGI باید فلگهای مناسب را فعال کنید.
ویرایش USE flags:
```bash
sudo nano /etc/portage/make.conf
```
افزودن:
```
APACHE2_MODULES="ssl cgi alias rewrite socache_shmcb"
APACHE2_MPMS="prefork"
```
سپس Apache را با فلگها بازسازی کنید:
```bash
sudo emerge --ask --changed-use --deep @world
```
---
## ۳. راهاندازی و فعالسازی Apache
```bash
sudo rc-service apache2 start
sudo rc-update add apache2 default
```
---
## ۴. ایجاد میزبان مجازی (Virtual Host)
پیشفرض پیکربندیهای مجازی در مسیر زیر ذخیره میشوند:
```
/etc/apache2/vhosts.d/
```
ایجاد فایل Virtual Host:
```bash
sudo nano /etc/apache2/vhosts.d/site1.conf
```
محتوا:
```apache
<VirtualHost *:80>
ServerName site1.local
DocumentRoot "/var/www/site1/htdocs"
<Directory "/var/www/site1/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/site1_error.log
CustomLog /var/log/apache2/site1_access.log combined
</VirtualHost>
```
ساخت دایرکتوری مربوطه:
```bash
sudo mkdir -p /var/www/site1/htdocs
echo "<h1>Site1 on Gentoo</h1>" | sudo tee /var/www/site1/htdocs/index.html
```
---
## ۵. تولید گواهی SSL و فعالسازی HTTPS
### تولید گواهی خودامضا (Self-Signed):
```bash
sudo mkdir -p /etc/ssl/private
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/site1.key \
-out /etc/ssl/certs/site1.crt
```
### ایجاد Virtual Host برای HTTPS:
```bash
sudo nano /etc/apache2/vhosts.d/site1-ssl.conf
```
محتوا:
```apache
<IfModule ssl_module>
<VirtualHost *:443>
ServerName site1.local
DocumentRoot "/var/www/site1/htdocs"
SSLEngine on
SSLCertificateFile /etc/ssl/certs/site1.crt
SSLCertificateKeyFile /etc/ssl/private/site1.key
<Directory "/var/www/site1/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/site1_ssl_error.log
CustomLog /var/log/apache2/site1_ssl_access.log combined
</VirtualHost>
</IfModule>
```
---
## ۶. فعالسازی CGI در Apache
### فعالسازی ماژول CGI
مطمئن شوید ماژول `cgi` در USE flags فعال است و فایل زیر موجود است:
```bash
sudo nano /etc/apache2/modules.d/45_mod_cgi.conf
```
محتوا (اگر نبود اضافه کنید):
```apache
<IfModule cgi_module>
ScriptAlias /cgi-bin/ "/var/www/site1/cgi-bin/"
<Directory "/var/www/site1/cgi-bin/">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
</IfModule>
```
ساخت مسیر CGI:
```bash
sudo mkdir -p /var/www/site1/cgi-bin
sudo nano /var/www/site1/cgi-bin/test.cgi
```
محتوای فایل:
```bash
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<html><body><h1>CGI Test on Gentoo</h1></body></html>"
```
دادن مجوز اجرایی:
```bash
sudo chmod +x /var/www/site1/cgi-bin/test.cgi
```
---
## ۷. تست و راهاندازی نهایی
### ویرایش فایل `/etc/hosts` برای تست:
```
127.0.0.1 site1.local
```
### ریستارت Apache:
```bash
sudo rc-service apache2 restart
```
### تست:
* HTTP: [http://site1.local](http://site1.local)
* HTTPS: [https://site1.local](https://site1.local)
* CGI: [http://site1.local/cgi-bin/test.cgi](http://site1.local/cgi-bin/test.cgi)
---
## ✅ نتیجهگیری
در این مقاله یاد گرفتید که چگونه در **Gentoo Linux**:
* چند **میزبان مجازی** راهاندازی کنید
* گواهی **SSL خودامضا** بسازید
* و ماژول **CGI** را برای اجرای اسکریپتها فعال کنید
با این تنظیمات میتوانید بهصورت کاملاً کنترلشده و امن، سایتهای خود را روی Gentoo میزبانی کنید.