VPS पर WordPress चलाने के लिए एक वेब सर्वर (यहाँ Caddy), WordPress के लिए ज़रूरी एक्सटेंशन वाला PHP-FPM और MariaDB इंस्टॉल करें; एक डेटाबेस और यूज़र बनाएं; WP-CLI से WordPress डाउनलोड करें; और सर्वर पर एक डोमेन पॉइंट करें ताकि Caddy HTTPS चालू कर सके। Ubuntu 24.04 पर पूरे सेटअप में लगभग 20 मिनट लगते हैं।
अगर आप मैनुअल काम छोड़ना चाहते हैं, तो Wolkra पर WordPress वन-क्लिक ऐप यही स्टैक अपने-आप इंस्टॉल करता है। यह गाइड दिखाती है कि अंदर क्या होता है, ताकि आप इसे खुद चला और ठीक कर सकें।
शुरू करने से पहले
- Ubuntu 24.04 वाला एक सर्वर (Debian 12 पर भी यही स्टेप्स काम करते हैं), 2 GB मेमोरी की सलाह है।
- पहले कदम पूरे: अपडेट, sudo यूज़र, SSH की।
- सर्वर की ओर पॉइंट करने वाले A रिकॉर्ड (और IPv6 इस्तेमाल करें तो AAAA) वाला एक डोमेन। इस गाइड में:
blog.example.com। - UFW और किसी भी क्लाउड फ़ायरवॉल में पोर्ट 80 और 443 खुले।
sudo ufw allow 80,443/tcp
1. PHP और MariaDB इंस्टॉल करें
sudo apt update
sudo apt install -y mariadb-server \
php-fpm php-mysql php-curl php-gd php-intl php-mbstring \
php-xml php-zip php-imagick php-bcmath unzip
Ubuntu 24.04 पर PHP 8.3 इंस्टॉल होता है; Debian 12 पर PHP 8.2। जाँचें कि आपके पास कौन-सा है:
php -v
ls /run/php/
सॉकेट का नाम नोट करें, जैसे php8.3-fpm.sock। स्टेप 5 में इसकी ज़रूरत होगी।
2. MariaDB को सुरक्षित करें और डेटाबेस बनाएं
sudo mariadb-secure-installation
डिफ़ॉल्ट स्वीकार करें: root के लिए unix socket ऑथेंटिकेशन रखें, एनॉनिमस यूज़र और टेस्ट डेटाबेस हटा दें।
WordPress के लिए एक डेटाबेस और यूज़र बनाएं:
DBPASS=$(openssl rand -hex 20)
echo "Database password: $DBPASS"
sudo mariadb <<SQL
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp'@'localhost' IDENTIFIED BY '$DBPASS';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'localhost';
FLUSH PRIVILEGES;
SQL
पासवर्ड सेव कर लें; WP-CLI को जल्द ही इसकी ज़रूरत होगी।
3. Caddy इंस्टॉल करें
Caddy एक आधिकारिक Debian/Ubuntu रिपॉज़िटरी पब्लिश करता है:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | \
sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy
4. WP-CLI इंस्टॉल करें और WordPress डाउनलोड करें
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
साइट डायरेक्टरी बनाएं और उसका ओनर PHP यूज़र को बनाएं:
sudo mkdir -p /var/www/blog
sudo chown www-data:www-data /var/www/blog
cd /var/www/blog
sudo -u www-data wp core download
sudo -u www-data wp config create \
--dbname=wordpress --dbuser=wp --dbpass="$DBPASS" --dbhost=localhost
sudo -u www-data wp core install \
--url=https://blog.example.com \
--title="My Blog" \
--admin_user=admin_$(openssl rand -hex 3) \
[email protected] \
--prompt=admin_password
आसानी से अंदाज़ा न लगने वाला एडमिन यूज़रनेम अनुमान लगाकर किए जाने वाले हमलों को मुश्किल बनाता है। --prompt पासवर्ड को आपकी शेल हिस्ट्री में छोड़ने के बजाय उसे पूछता है।
5. Caddy कॉन्फ़िगर करें
/etc/caddy/Caddyfile को इससे बदलें:
blog.example.com {
root * /var/www/blog
encode zstd gzip
php_fastcgi unix//run/php/php8.3-fpm.sock
file_server
@blocked path /xmlrpc.php /wp-config.php /.git/* /.env
respond @blocked 404
header {
Strict-Transport-Security "max-age=31536000"
X-Content-Type-Options "nosniff"
Referrer-Policy "strict-origin-when-cross-origin"
}
}
अपना PHP सॉकेट नाम इस्तेमाल करें। फिर:
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
Caddy पहली रिक्वेस्ट पर सर्टिफ़िकेट माँगता है। https://blog.example.com/wp-admin/ खोलें और लॉग इन करें। और विकल्प Caddy रिवर्स प्रॉक्सी गाइड में हैं।
6. PHP ट्यून करें
मीडिया अपलोड के लिए डिफ़ॉल्ट सेटिंग छोटी हैं। /etc/php/8.3/fpm/conf.d/99-wordpress.ini बनाएं (वर्ज़न एडजस्ट करें):
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 120
opcache.enable = 1
opcache.memory_consumption = 128
sudo systemctl restart php8.3-fpm
OPcache कंपाइल किए गए PHP को मेमोरी में रखता है और यह बिना खर्च की सबसे बड़ी स्पीड बढ़त है।
7. कैशिंग जोड़ें
ज़्यादातर ब्लॉग के लिए एक पेज-कैश प्लगइन काफ़ी है। व्यस्त साइटों के लिए ऑब्जेक्ट कैश के रूप में Redis जोड़ें:
sudo apt install -y redis-server php-redis
sudo systemctl restart php8.3-fpm
cd /var/www/blog
sudo -u www-data wp plugin install redis-cache --activate
sudo -u www-data wp redis enable
Redis डिफ़ॉल्ट रूप से केवल localhost पर सुनता है। इसे ऐसे ही रहने दें।
8. WordPress cron को सिस्टम से चलाएं
WordPress शेड्यूल किए गए काम पेज व्यू पर ट्रिगर करता है, जो शांत साइटों पर भरोसेमंद नहीं है और व्यस्त साइटों पर बेकार का बोझ है। इसकी जगह एक असली cron जॉब इस्तेमाल करें:
sudo -u www-data wp config set DISABLE_WP_CRON true --raw
echo '*/5 * * * * www-data cd /var/www/blog && /usr/local/bin/wp cron event run --due-now --quiet' | \
sudo tee /etc/cron.d/wordpress
9. इसे अपडेट रखें
ज़्यादातर WordPress हैक पुराने प्लगइन के ज़रिए होते हैं। हर हफ़्ते अपडेट करें, या इसे ऑटोमेट करें:
cd /var/www/blog
sudo -u www-data wp core update
sudo -u www-data wp plugin update --all
sudo -u www-data wp theme update --all
जो प्लगइन और थीम इस्तेमाल नहीं करते उन्हें हटा दें। हर एक ऐसा कोड है जिसमें कोई कमज़ोरी हो सकती है।
10. बैकअप लें
आपको दो चीज़ों की ज़रूरत है: डेटाबेस और wp-content।
sudo mkdir -p /var/backups/blog
cd /var/www/blog
sudo -u www-data wp db export - | gzip | sudo tee /var/backups/blog/db-$(date +%F).sql.gz >/dev/null
sudo tar czf /var/backups/blog/files-$(date +%F).tar.gz -C /var/www/blog wp-content
इसे हर रात के लिए शेड्यूल करें और कहीं और कॉपी करें। Wolkra पर ऑटोमैटिक रोज़ाना सर्वर बैकअप जोड़ें (सर्वर की कीमत का 20%, 7 रिस्टोर पॉइंट) और बड़े अपडेट से पहले स्नैपशॉट लें। देखें बैकअप स्ट्रैटेजी गाइड।
11. बुनियादी हार्डनिंग करें
- SSH को केवल की पर रखें और OS को पैच करते रहें (Ubuntu सर्वर को सुरक्षित करें)।
- एक प्लगइन से WordPress एडमिन के लिए टू-फ़ैक्टर लॉगिन चालू करें।
- डैशबोर्ड में फ़ाइल एडिटिंग बंद करें:
sudo -u www-data wp config set DISALLOW_FILE_EDIT true --raw
- किसी प्लगइन या Fail2ban से लॉगिन प्रयास सीमित करें।
12. भरोसेमंद तरीके से ईमेल भेजें
WordPress पासवर्ड रीसेट, कमेंट नोटिस और ऑर्डर मेल डिफ़ॉल्ट रूप से PHP के mail() से भेजता है, जो अक्सर स्पैम में चले जाते हैं। एक SMTP प्लगइन और सही मेल प्रोवाइडर इस्तेमाल करें, और प्रोवाइडर के बताए अनुसार अपने डोमेन के लिए SPF और DKIM रिकॉर्ड जोड़ें। अगर सर्वर खुद मेल भेजता है, तो कंसोल में उसके IP का रिवर्स DNS सर्वर के hostname पर सेट करें; देखें IP एड्रेस।
13. जाँचें कि सब कुछ काम कर रहा है
सेटअप के बाद एक छोटा हेल्थ चेक:
curl -I https://blog.example.com
sudo -u www-data wp --path=/var/www/blog core verify-checksums
sudo -u www-data wp --path=/var/www/blog cron event list
systemctl status caddy php8.3-fpm mariadb --no-pager
verify-checksums कोर फ़ाइलों की तुलना आधिकारिक रिलीज़ से करता है और बाद में छेड़छाड़ पकड़ने का भी एक तेज़ तरीका है।
साइज़िंग और ग्रोथ
कुछ हफ़्तों तक कंसोल के ग्राफ़ में मेमोरी और CPU पर नज़र रखें। अगर PHP वर्कर कम पड़ें, तो /etc/php/8.3/fpm/pool.d/www.conf में pm.max_children बढ़ाएं या सर्वर को बड़े प्लान पर रीसाइज़ करें। हर Wolkra प्लान पर ट्रैफ़िक अनमीटर्ड है, इसलिए व्यस्त महीने में बिल नहीं बढ़ता। इस तरह साइटें चलाने के बारे में और जानने के लिए देखें WordPress होस्टिंग।
अक्सर पूछे जाने वाले सवाल
क्या WordPress के लिए VPS शेयर्ड होस्टिंग से बेहतर है?
VPS आपको अपने खुद के रिसोर्स, PHP और कैशिंग पर पूरा नियंत्रण देता है, और उसी अकाउंट पर शोर मचाने वाले पड़ोसी नहीं होते। साथ ही अपडेट और सुरक्षा की ज़िम्मेदारी भी आपकी होती है, जो शेयर्ड होस्टिंग आपके लिए करती है।
VPS पर WordPress को कितनी मेमोरी चाहिए?
डेटाबेस के साथ एक साइट सावधानी से 1 GB पर चल जाती है। 2 GB ज़्यादा आरामदायक है, और WooCommerce वाले व्यस्त स्टोर को अक्सर 4 GB चाहिए।
Nginx या Apache की जगह Caddy क्यों?
Caddy HTTPS सर्टिफ़िकेट खुद लेता और रिन्यू करता है और उसे कुछ ही लाइन कॉन्फ़िग चाहिए। Nginx और Apache भी उतने ही अच्छे हैं, लेकिन उन्हें ज़्यादा सेटअप चाहिए।
क्या WordPress पहले से इंस्टॉल मिल सकता है?
हाँ। Wolkra का WordPress वन-क्लिक ऐप आपके लिए Caddy, PHP, MariaDB और WP-CLI सेट करता है, जो सर्वर बूट होने के कुछ मिनट बाद तैयार हो जाता है।
WordPress का बैकअप कैसे लें?
डेटाबेस और wp-content फ़ोल्डर दोनों का बैकअप लें। रात में WP-CLI से डेटाबेस एक्सपोर्ट और फ़ाइलों की एक कॉपी, सर्वर के बाहर स्टोर की हुई, इसके लिए काफ़ी है।