LAMP स्टैक (Linux, Apache, MariaDB, PHP) WordPress, Laravel और अधिकांश PHP एप्लिकेशन की पारंपरिक नींव है। इस गाइड में आप Ubuntu 24.04 वाले एक नए VPS Linux Infrawire पर इसे चरण दर चरण तैयार करेंगे, अलग वर्चुअल होस्ट के साथ और ऐसे फ़ायरवॉल के साथ जो केवल ज़रूरी पोर्ट खोलता है।
📋 पूर्वापेक्षाएँ
- Ubuntu 24.04 वाला एक KVM VPS (IP और root पासवर्ड आपके क्लाइंट एरिया में मिलते हैं)
- root या
sudoअधिकार वाले यूज़र के रूप में SSH एक्सेस - एक डोमेन
example.com, जिसके A (और AAAA) रिकॉर्डVPS_IPकी ओर इशारा करते हों
नीचे के कमांड मानते हैं कि आप root हैं। अन्यथा उनके आगे sudo लगाएँ।
1. सिस्टम अपडेट करें
Bashapt update && apt upgrade -y
2. Apache इंस्टॉल करें
Bashapt install -y apache2 systemctl enable --now apache2 apache2 -v
सर्विस तुरंत शुरू हो जाती है और हर बूट पर अपने-आप चलती है।
3. MariaDB इंस्टॉल करें
MariaDB Ubuntu के रिपॉज़िटरी में उपलब्ध है और MySQL की जगह बिना बदलाव के काम करती है। यदि आप Oracle MySQL पसंद करते हैं तो mysql-server इंस्टॉल करें, लेकिन एक ही मशीन पर दोनों कभी न रखें।
Bashapt install -y mariadb-server systemctl enable --now mariadb mysql_secure_installation
विज़ार्ड में root के लिए unix_socket ऑथेंटिकेशन बनाए रखें, पूछे जाने पर मज़बूत पासवर्ड सेट करें, अनाम यूज़र हटाएँ, root का रिमोट लॉगिन बंद करें और टेस्ट डेटाबेस हटाएँ। फिर अपने एप्लिकेशन के लिए अलग डेटाबेस और यूज़र बनाएँ:
Bashmariadb
SQL1CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; 3GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; 4FLUSH PRIVILEGES; 5EXIT;
4. PHP 8.3 इंस्टॉल करें
Ubuntu 24.04 अपने डिफ़ॉल्ट रिपॉज़िटरी में PHP 8.3 देता है, इसलिए अलग PPA की ज़रूरत नहीं है।
Bashapt install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl php -v
libapache2-mod-php पैकेज Apache को अपने-आप prefork MPM पर स्विच करता है और PHP मॉड्यूल लोड करता है।
5. वर्चुअल होस्ट बनाएँ और mod_rewrite चालू करें
Bashmkdir -p /var/www/example.com/public_html chown -R www-data:www-data /var/www/example.com nano /etc/apache2/sites-available/example.com.conf
Apache1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5 6 <Directory /var/www/example.com/public_html> 7 AllowOverride All 8 Require all granted 9 </Directory> 10 11 ErrorLog ${APACHE_LOG_DIR}/example.com-error.log 12 CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined 13</VirtualHost>
AllowOverride All से .htaccess फ़ाइलें काम करती हैं, जिन पर WordPress या Laravel के सुंदर URL निर्भर हैं। अब मॉड्यूल और साइट चालू करें तथा डिफ़ॉल्ट पेज बंद करें:
Basha2enmod rewrite a2ensite example.com.conf a2dissite 000-default.conf apache2ctl configtest systemctl reload apache2
रीलोड से पहले configtest को Syntax OK बताना चाहिए।
6. फ़ायरवॉल कॉन्फ़िगर करें
पहले SSH की अनुमति दें, वरना फ़ायरवॉल चालू करते ही आप खुद सर्वर से बाहर हो जाएँगे।
Bashufw allow OpenSSH ufw allow 'Apache Full' ufw enable ufw status
Apache Full प्रोफ़ाइल पोर्ट 80 और 443 खोलती है। पोर्ट 3306 न खोलें: MariaDB को केवल लोकल पर सुनना है।
7. PHP टेस्ट करें और टेस्ट फ़ाइल हटाएँ
Bashecho '<?php phpinfo();' > /var/www/example.com/public_html/info.php curl -sI http://example.com/info.php | head -n 1
आपको HTTP/1.1 200 OK मिलना चाहिए। PHP कॉन्फ़िगरेशन पेज देखने के लिए ब्राउज़र में http://example.com/info.php खोलें। phpinfo() पेज वर्ज़न, पाथ और मॉड्यूल उजागर करता है, इसलिए इसे तुरंत हटा दें:
Bashrm /var/www/example.com/public_html/info.php
बाक़ी घटक भी जाँचें:
Bashapache2ctl -M | grep -E 'rewrite|php' php -m | grep -E 'mysqli|pdo_mysql' systemctl is-active apache2 mariadb
🛠️ समस्या निवारण
Apache का डिफ़ॉल्ट पेज अब भी दिख रहा है। डिफ़ॉल्ट साइट अब भी चालू है या DNS अभी फैला नहीं है। a2dissite 000-default.conf चलाएँ, Apache रीलोड करें और curl -I -H 'Host: example.com' http://VPS_IP/ से जाँचें।
403 Forbidden। जाँचें कि डायरेक्टरी में Require all granted है, www-data फ़ाइलें पढ़ सकता है (ls -ld /var/www/example.com/public_html) और लॉग /var/log/apache2/example.com-error.log देखें।
ब्राउज़र PHP फ़ाइल चलाने के बजाय डाउनलोड कर रहा है। PHP मॉड्यूल लोड नहीं है। apache2ctl -M | grep php चलाएँ, फिर systemctl restart apache2। कुछ न दिखे तो libapache2-mod-php दोबारा इंस्टॉल करें।
रीराइट नियम अनदेखे हो रहे हैं (सुंदर URL पर 404)। पुष्टि करें कि a2enmod rewrite चलाया गया है और आपके <Directory> ब्लॉक में AllowOverride All है।
🎉 आपका LAMP स्टैक तैयार है: Apache, MariaDB और PHP 8.3 आपकी पहली साइट होस्ट करने के लिए तैयार हैं।