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पर शिफ़्ट करें, और उस पर प्रॉक्सी करें — देखें रिवर्स प्रॉक्सी।
पोर्ट कौन इस्तेमाल कर रहा है, यह देखने के लिए:
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। वर्चुअल मशीन पर रोलबैक करना इससे आसान है कि आप एक घंटे पहले क्या बदला था, यह याद करने की कोशिश करें।