Skip to content
VDS · वेबसाइट और वेब सर्वर

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 nameServerName सेट नहीं है — यह सिर्फ़ चेतावनी है, फिर भी इसे सेट करें
.htaccess काम नहीं करताDirectory ब्लॉक में AllowOverride None
एडिट के बाद सर्विस शुरू नहीं होतीसिंटैक्स — रीलोड से पहले हमेशा apachectl configtest चलाएँ
डायरेक्टरी पर 403Require all granted नहीं है या www-data के पास परमिशन नहीं है

लॉग: /var/log/apache2/ (Debian, Ubuntu) या /var/log/httpd/ (AlmaLinux)।

हर एडिट से पहले कॉन्फ़िग की कॉपी बनाएँ: cp file file.bak। वर्चुअल मशीन पर रोलबैक करना इससे आसान है कि आप एक घंटे पहले क्या बदला था, यह याद करने की कोशिश करें।