PHP/MySQL वेबसाइट को VPS Linux Infrawire पर ले जाने से आपको समर्पित संसाधन और पूरे स्टैक पर पूरा नियंत्रण मिलता है। आसान माइग्रेशन की कुंजी है: सब कुछ नए सर्वर पर तैयार करें, DNS छूने से पहले टेस्ट करें, और उसके बाद ही ट्रैफ़िक स्विच करें। यह गाइड इसी क्रम का पालन करती है।
📋 पूर्वापेक्षाएँ
- Ubuntu 24.04 या Debian 12 वाला Linux VPS (IP और root पासवर्ड आपके कस्टमर एरिया में मिलते हैं)
- शेयर्ड होस्टिंग तक पहुँच (फ़ाइल मैनेजर, FTP/SSH और phpMyAdmin जैसा डेटाबेस टूल)
- आपके डोमेन के DNS ज़ोन तक पहुँच
- एक डोमेन
example.comऔर आपके VPS का IP, जिसे नीचेVPS_IPलिखा गया है
1. पुरानी साइट की सूची बनाएँ
नोट करें कि साइट को क्या चाहिए: PHP संस्करण, एक्सटेंशन, डेटाबेस का नाम, cron जॉब, .htaccess नियम, SSL प्रमाणपत्र और खासकर यह कि आपका ईमेल कहाँ होस्ट है। पुराने कंट्रोल पैनल में PHP संस्करण देखें; अगर SSH एक्सेस है:
Bashphp -v php -m | sort crontab -l
अभी से अपने DNS रिकॉर्ड का TTL 300 सेकंड कर दें, माइग्रेशन से कम से कम एक दिन पहले, ताकि अंतिम स्विच तेज़ हो।
2. फ़ाइलें और डेटाबेस एक्सपोर्ट करें
अगर पुरानी होस्टिंग SSH देती है, तो VPS से सीधे फ़ाइलें खींच सकते हैं:
Bashmkdir -p ~/migration && cd ~/migration rsync -avz OLDUSER@OLD_HOST:~/public_html/ ./site/
SSH के बिना FTP या फ़ाइल मैनेजर से आर्काइव डाउनलोड करें और scp से अपलोड करें। डेटाबेस को mysqldump से (या phpMyAdmin के Export बटन से) एक्सपोर्ट करें:
Bashmysqldump --single-transaction -u DBUSER -p DBNAME > db.sql
3. VPS पर स्टैक तैयार करें
Bashsudo apt update sudo apt install -y nginx mariadb-server php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-gd sudo mysql_secure_installation php -v
Ubuntu 24.04 में PHP 8.3 और Debian 12 में PHP 8.2 आता है; सॉकेट /run/php/php8.3-fpm.sock या /run/php/php8.2-fpm.sock होता है। /etc/nginx/sites-available/example.com में Nginx साइट बनाएँ:
Nginx1server { 2 listen 80; 3 listen [::]:80; 4 server_name example.com www.example.com; 5 root /var/www/example.com; 6 index index.php index.html; 7 8 location / { 9 try_files $uri $uri/ /index.php?$args; 10 } 11 12 location ~ \.php$ { 13 include snippets/fastcgi-php.conf; 14 fastcgi_pass unix:/run/php/php8.3-fpm.sock; 15 } 16}
Bashsudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
Nginx .htaccess को अनदेखा करता है: उसके rewrite नियमों को location ब्लॉक में बदलें।
4. फ़ाइलें और डेटाबेस इम्पोर्ट करें
Bashsudo mkdir -p /var/www/example.com sudo cp -a ~/migration/site/. /var/www/example.com/ sudo chown -R www-data:www-data /var/www/example.com sudo mysql -e "CREATE DATABASE dbname CHARACTER SET utf8mb4;" sudo mysql -e "CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';" sudo mysql -e "GRANT ALL ON dbname.* TO 'dbuser'@'localhost'; FLUSH PRIVILEGES;" sudo mysql dbname < ~/migration/db.sql
फिर एप्लिकेशन कॉन्फ़िगरेशन (जैसे wp-config.php) में नया डेटाबेस नाम, उपयोगकर्ता और पासवर्ड डालें। होस्ट अब localhost है।
5. स्विच से पहले टेस्ट करें
अपने कंप्यूटर पर hosts फ़ाइल बदलकर डोमेन को VPS की ओर इंगित करें (Linux और macOS पर /etc/hosts, Windows पर C:\Windows\System32\drivers\etc\hosts):
BashVPS_IP example.com www.example.com
या कुछ बदले बिना टेस्ट करें:
Bashcurl -I --resolve example.com:80:VPS_IP http://example.com/
साइट ब्राउज़ करें, लॉगिन करें, फ़ॉर्म भेजें और /var/log/nginx/error.log के लॉग देखें। बाद में hosts की वह पंक्ति हटा दें।
6. DNS बदलें और ईमेल सँभालें
पुरानी साइट पर कंटेंट बदलाव रोक दें, हाल के बदलाव लेने के लिए rsync और डेटाबेस एक्सपोर्ट/इम्पोर्ट दोबारा करें, फिर A रिकॉर्ड को VPS_IP पर और AAAA रिकॉर्ड को VPS के IPv6 पते पर बदलें। DNS फैल जाने पर प्रमाणपत्र जारी करें:
Bashsudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com
ईमेल: केवल A/AAAA रिकॉर्ड बदलें। अगर आपके मेलबॉक्स पुराने प्रदाता के पास ही रहते हैं, तो MX, SPF और DKIM रिकॉर्ड को न छुएँ। पुरानी होस्टिंग तभी रद्द करें जब कुछ दिन बिना समस्या बीत जाएँ।
🔧 समस्या निवारण
502 Bad Gateway
fastcgi_pass में PHP सॉकेट इंस्टॉल संस्करण से मेल नहीं खाता। ls /run/php/ और systemctl status php8.3-fpm से जाँचें।
"Error establishing a database connection"
कॉन्फ़िग फ़ाइल में क्रेडेंशियल या होस्ट गलत हैं। mysql -u dbuser -p dbname से टेस्ट करें।
403 या खाली पेज
स्वामित्व और अनुमतियाँ (chown -R www-data:www-data) जाँचें, और sudo tail -n 50 /var/log/nginx/error.log तथा PHP लॉग देखें।
स्विच के बाद भी पुरानी साइट दिख रही है
DNS कैश अभी सक्रिय हैं। dig +short example.com से जाँचें और TTL समाप्त होने की प्रतीक्षा करें।
✅ आपकी वेबसाइट अब अपने VPS पर चल रही है, बिना डाउनटाइम के माइग्रेट हुई और वापसी का सुरक्षित रास्ता भी है।