Apache: تنصیب اور ورچوئل ہوسٹس
VPS پر Apache کی تنصیب، ورچوئل ہوسٹس اور ماڈیولز کی کنفیگریشن، اور پورٹ 80 پر Nginx کے ساتھ عام ٹکراؤ کا حل۔
اپ ڈیٹ 23 اگست، 2026
آپ Apache اس وقت منتخب کرتے ہیں جب آپ کو .htaccess، کوئی پرانا CMS، یا ایپلیکیشن ڈویلپر کی تیار شدہ گائیڈ درکار ہو۔ یہ میموری کے لحاظ سے Nginx سے بھاری ہے، لیکن VDS-1 پر ایک چھوٹی سائٹ کے ساتھ آپ کو یہ فرق محسوس نہیں ہوگا۔
انسٹالیشن
apt update && apt install -y apache2 # Debian, Ubuntu
dnf install -y httpd && systemctl enable --now httpd # AlmaLinux, CentOS Stream
سروس کا نام مختلف ہوتا ہے: Debian اور Ubuntu پر apache2، RHEL فیملی میں httpd۔ کنفیگریشن ڈائریکٹریز بھی مختلف ہیں — /etc/apache2 اور /etc/httpd۔
جانچ کریں:
systemctl status apache2
curl -I http://127.0.0.1
ورچوئل ہوسٹ
فائل /etc/apache2/sites-available/example.ru.conf:
<VirtualHost *:80>
ServerName example.ru
ServerAlias www.example.ru
DocumentRoot /var/www/example.ru
<Directory /var/www/example.ru>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.ru-error.log
CustomLog ${APACHE_LOG_DIR}/example.ru-access.log combined
</VirtualHost>
فعال کرنا اور جانچنا:
a2ensite example.ru
a2dissite 000-default
apachectl configtest && systemctl reload apache2
AllowOverride All صرف اس صورت میں درکار ہے جب آپ واقعی .htaccess استعمال کرتے ہوں۔ اگر نہیں کرتے تو None مقرر کریں: Apache ہر درخواست پر ہر ڈائریکٹری میں ان فائلوں کو تلاش کرنا بند کر دے گا۔
ماڈیولز
a2enmod rewrite headers ssl
systemctl restart apache2
فعال ماڈیولز کی فہرست دیکھنے کے لیے — apache2ctl -M۔ سب کچھ فعال نہ کریں: ہر ماڈیول ہر ورکر پروسیس میں لوڈ ہوتا ہے۔
PHP کے لیے پرانے mod_php کی بجائے PHP-FPM استعمال کریں: PHP-FPM۔
Apache اور Nginx ایک ساتھ
دونوں سرورز بطور ڈیفالٹ پورٹ 80 پر سنتے ہیں، اس لیے دوسرا محض شروع نہیں ہوگا اور Address already in use کی خرابی دے گا۔ آپ کے پاس دو آپشنز ہیں:
- صرف ایک سرور رکھیں؛
- Nginx کو آگے رکھیں، Apache کو
Listen 127.0.0.1:8080پر منتقل کریں، اور اس کی طرف پروکسی کریں — دیکھیں reverse proxy۔
یہ دیکھنے کے لیے کہ پورٹ کون استعمال کر رہا ہے:
ss -tulpn | grep :80
عام خرابیاں
| علامت | وجہ |
|---|---|
AH00558: Could not reliably determine ... server's fully qualified domain name | ServerName مقرر نہیں ہے — یہ صرف ایک وارننگ ہے، لیکن پھر بھی اسے مقرر کریں |
.htaccess کام نہیں کرتا | Directory بلاک میں AllowOverride None |
| ترمیم کے بعد سروس شروع نہیں ہوتی | سنٹیکس — ری لوڈ سے پہلے ہمیشہ apachectl configtest چلائیں |
| ڈائریکٹری پر 403 | Require all granted موجود نہیں یا www-data کے پاس اجازتیں نہیں |
لاگز: /var/log/apache2/ (Debian، Ubuntu) یا /var/log/httpd/ (AlmaLinux)۔
ہر ترمیم سے پہلے کنفیگ کی کاپی بنائیں:
cp file file.bak۔ ورچوئل مشین پر واپس جانا اس بات کو یاد کرنے سے آسان ہے کہ ایک گھنٹہ پہلے آپ نے کیا تبدیل کیا تھا۔