LEMP सर्वर पर वर्डप्रेस कैसे इंस्टॉल करें

क्या आप Cloud सर्वर पर LEMP stack के साथ वर्डप्रेस इंस्टॉल करना चाहते हैं? यह आर्टिकल को पढ़ें।

मैं यह दावे के साथ कह सकता हुँ कि आपका नया WordPress साइट अगले 30 मिनट में तैयार हो जाएगा।

बताते चलें कि LEMP एक प्रकार का सॉफ्टवेयर बंडल है जिसमें ये सभी सॉफ्टवेयर का उपयोग होता है।

ऑपरेटिंग सिस्टमUbuntu (Linux kernel पर आधारित)
वेब सर्वरNGINX
डेटाबेसMySQL या MariaDB
स्क्रिप्टिंग एवं प्रोग्रामिंगPHP

यह एक ऐसा stack है जो वर्डप्रेस इंस्टालेशन की बेसिक जरूरत को 100% पूरा करता है। ना सिर्फ वर्डप्रेस बल्कि इस सेटअप पर ऐसे किसी भी PHP script को इसके माध्यम से चलाया जा सकता है।

LEMP stack पर वर्डप्रेस इनस्टॉल करने लिए इन 3 Steps को फॉलो करें

  1. Cloudflare DNS का उपयोग करते रहें
  2. Ubuntu सर्वर सेटअप करें
  3. LEMP stack के लिए जरुरी सॉफ्टवेयर को इनस्टॉल करें

पहला भाग: Cloudflare DNS का उपयोग करते रहें ताकि Let’s Encrypt SSL पाना हो आसान

मैं चाहता हुँ कि आपकी वेबसाइट पर HTTPS support हो ताकि Google में बेहतर रैंक करे। इसके लिए हमें Trusted Certificate Authority जैसे Let’s Encrypt से TLS (SSL) Certificate प्राप्त करना होगा।

सामान्यतः Let’s Encrypt सर्वर से नया certificate issue अनुरोध से ठीक पहले उसी सर्वर का IP अपडेट करना ज़रूरी होता है जिससे की आप certbot command चलाकर certificate(s) माँग रहे हों। यह प्रक्रिया से Let’s Encrypt आपके डोमेन को DNS level पर ownership verification करती है।

ऐसा भी हो सकता है कि अभी आपकी वर्डप्रेस साइट पहले से कहीं Hosted हो और उसपे Real Time में बहुत सारा ट्रैफिक भी हो। ऐसे में आप क़दापि नहीं चाहेंगे की सिर्फ डोमेन का Let’s Encrypt certificate पाने के लिए directly नई सर्वर पर बिना किसी Testing या Data Migration किये IP अपडेट करना पड़े।

इसलिए यह जरुरी है कि आप पुराने होस्टिंग के साथ ही certificate को बिना IP अपडेट किये सिर्फ TXT Record से certificate पा सकें।

अच्छी बात यह है कि यह process हमें manual नहीं करना है। बल्कि हम इसके लिए हम आगे स्टेप में Let’s Encrypt का Certbot सॉफ्टवेर Cloudflare प्लगिन के साथ इस्तेमाल करेंगें। जिसमें हम Cloudflare अकाउंट API और Email के जरिए connect करेंगे। इसलिए आपके डोमेन पर Cloudflare का nameservers शुरू से active होनी चाहिए।

कृपया नीचे दिए गए निर्देशों का पालन करें।

दूसरा भाग: Ubuntu Server 22.04 LTS वाला सर्वर लें

image 4
उबुन्टु का लोगो

1. Vultr में एक नया अकाउंट बनाएं

image 7

मैं जैसा कि बहुत सारे Cloud Infrastructure company का इस्तेमाल कर अच्छा और बुरा दोनो को बखूबी अनुभव किया है, उसके आधार पर मैं यह कह सकता हुं कि एक नए वर्डप्रेस यूजर के लिए Vultr बिल्कुल सही choice है। यहां आपको जबरदस्त Uptime, Network Speed, और ढेर सारा Bandwidth बिल्कुल वाजिब कीमत पर मिलता है।

बड़ी से बड़ी साइट को VULTR पर आसानी से चलाया जा सकता है। मैं पिछले कई सालों से इस कम्पनी को सुझाव देता आ रहा हुँ और अब तक कोई भी शिकायत सामने नहीं आया।

Vultr के मार्केट में काफी अच्छे पार्टनर हैं, जो की अपने प्लेटफॉर्म से integrate किए हुए हैं। इतना बड़ा कवरेज होने का फायदा यह है को आपको किसी भी समस्या का समाधान इंटरनेट पर आसानी से मिल जाएगा।

Performance

  • 3rd Generation AMD EPYC™
  • NVME / SSD
  • Up to 4 GHz CPU
  • Up to 5Gbps Network Speed
  • Datacenter in America, Europe, Asia, Austraillia
  • IPV6 ready

🛍️ Features

  • Beginner-Friendly Dashboard
  • One-click to Snapshot
  • Automtatic Backup (Paid)
  • Free Cloud Firewall
  • DDoS protection (Paid)
  • 100% KVM Virtualization

⚙ Support

  • PayPal/Card
  • 24/7 Ticket Support
  • Documentation

नया अकाउंट बनाने के लिए मेरे रेफरल लिंक पर क्लिक कीजिये।

2. नया Cloud Instance को Deploy करें

एक नया Cloud Instance पाने के लिए Vultr Dashboard को login कीजिए। एक + icon दिखाई देगा, जिसपे आपको क्लिक करना है।

image 18

3. Server type चुनें

Cloud Compute चुन लीजिए। ये प्लान Shared CPU के साथ आता है।

image 16

इसके बाद CPU & Storage Technology में AMD High Performance विकल्प को चुन लीजिए। इसमें अब तक का सबसे fastest CPU और NVMe Disk मिलता है। अगर बजट कम है तो Intel CPU वाला Regular प्लान के साथ जाएँ जिसमे आपको SSD डिस्क मिलेगा।

image 9

4. Server Location चुनें

वेबसाइट की Target Audience को ध्यान में रखते हुए सबसे करीब Location वाला ही सर्वर चुनें। इससे आपके visitors आपकी वेबसाइट को Low Latency के साथ तेज़ी से browse कर पाएंगे।

image 17

उदाहरण के लिए, मान लिजिए कि आपकी एक वर्डप्रेस ब्लॉग भारत में सबसे ज्यादा प्रसिद्ध है तो इस स्थिति में भारतीय Datacenter मुम्बई, दिल्ली एनसीआर, या बेंगलूरु को चुनना बेहतर साबित होगा।

आज दुनियाभर में Vultr की 27 डेटासेंटर मौजूद है। यह कंपनी Public Cloud, Storage और Single-tenant, Bare metal सर्वर देती है।

एशिया
  • मुंबई, भारत
  • दिल्ली एनसीआर, भारत
  • बैंगलोर, भारत
  • सिंगापुर, सिंगापुर
  • टोक्यो, जापान
  • सियोल, दक्षिण कोरिया
अमेरिका
  • मियामी, संयुक्त राज्य अमेरिका
  • अटलांटा, संयुक्त राज्य अमेरिका
  • शिकागो, संयुक्त राज्य अमेरिका
  • डलास, संयुक्त राज्य अमेरिका
  • होनोलूलू, संयुक्त राज्य अमेरिका
  • लॉस एंजिल्स, संयुक्त राज्य अमेरिका
  • मेक्सिको सिटी, मेक्सिको
  • न्यूयॉर्क (एनजे), संयुक्त राज्य अमेरिका
  • सिएटल, संयुक्त राज्य अमेरिका
  • सिलिकॉन वैली, संयुक्त राज्य अमेरिका
  • टोरंटो, कनाडा, साओ पाउलो
यूरोप
  • स्टॉकहोम, स्वीडन
  • लंदन, यूनाइटेड किंगडम
  • एम्स्टर्डम, नीदरलैंड
  • फ्रैंकफर्ट, जर्मनी
  • मैड्रिड, स्पेन
  • पेरिस, फ्रांस
  • वारसॉ, पोलैंड
ऑस्ट्रेलिया
  • सिडनी, ऑस्ट्रेलिया
  • मेलबोर्न, ऑस्ट्रेलिया

आप Ping Test करके भी देख सकते हैं कि आपके लिए कौनसा ज्यादा फास्ट है।

5. Server Image का चयन करें

  • Operating System टैब में जाकर Ubuntu 22.04 LTS x64 को चुनें
image 14

Long Term Supported (LTS) एक Product Lifecycle Management policy है जिसमें कंप्यूटर सॉफ़्टवेयर (उबुन्टु) की एक Stable release को Standard release की तुलना में लंबे समय तक Maintain किया जाता है।

image 15

6. एक Server Size चुनें

Server size plan
Cloud Instance प्लान चुनने का सही तरीका
  • $6/महीने की Plan एक नए ब्लॉग के लिए सही है। आप बाद में इसे बढ़ा भी सकते हैं।
  • अगर किसी पहले से मौजूद वर्डप्रेस साइट को Vultr पर host करना चाह रहे हैं तो इस स्थिति में सबसे पहले “Total installation size” की जांच WordPress Dashboard > Tools > Site health में करें।
image 11

7. Auto Backups को Enable करें

एक ब्लॉग पर कई सालों का मेहनत होता है। Auto Backups नहीं Enable रहने का खामियाज़ा तब भुगतना पड़ता है जब दुर्भाग्यवश कुछ दिक्ततें सामने आ जाए फिर चाहे वो साइट हैक या किसी भी तरह का डाटा loss हो। इसलिए इसे बिलकुल ignore ना करें।

image 12

IPV6 enable करना चाहे तो कर सकते हैं या फिर छोड़ सकते हैं, ये ऑप्शनल है। क्यूंकि IPV4 सभी ISP सपोर्ट already करते हैं।

8. SSH key सेट करें

यह बेहतर सुरक्षा के लिए एक जरुरी, optional step है। अगर आप नहीं Add करेंगे तो सिर्फ पासवर्ड से हीं Cloud Instance को Login कर पाएंगे।

Password पर Brute Force attack का खतरा रहता है। इसलिए SSH Keys का उपयोग करना हमेशा सुरक्षित माना जाता है।

image 2

SSH Keys के एक जोड़े में यह दो चीज़ें होती हैं।

  • 🔒 Public Key – इसे puTTYgen application के जरिये generate कर Vultr में Add करना होगा।
  • 🔑 Private Key – यह Cloud Instance Login करने के काम आएगा, इसे अपने पास सुरक्षित रखें।
एक नया Public Key पाने के लिए निम्नलिखित स्टेप्स को फॉलो कीजिये।
विंडोज
Windows
  • PuTTy एप्लीकेशन को डाउनलोड कर इनस्टॉल कीजिये
  • इसमे PuTTy और PuTTYgen दोनो साथ आयेगा।
  • स्टार्ट मेनू में PuTTYgen को सर्च करें
  • RSA या EdSA key को generate करें
  • जेनरेट बटन पर क्लिक कर माउस प्वाइंटर को मूव करें
  • Public Key को कॉपी करके VULTR को प्रोवाइड करें
  • Enter key passphrase (optional)
  • Private Key को सबसे सुरक्षित स्थान पर save करें
  • इसका उपयोग Port 22 पर SSH या SFTP में लॉगिन करने के लिए किया जा सकता है।
लिनक्स
Linux
  • टर्मिनल में ssh-keygen -t rsa ssh-keygen -t rsa कमांड को execute करें. अधिक सुरक्षित 4096-bit keys के लिए, चलाएँ: ssh-keygen -t rsa -b 4096
  • यह पूछे जाने पर एंटर दबाएं कि आप कुंजी को कहां सहेजना चाहते हैं (यह डिफ़ॉल्ट स्थान का उपयोग करेगा)।
  • अपनी कुंजी के लिए password दर्ज करें।
  • कैट ~/.ssh/id_rsa.pub चलाएँ – यह आपको Control Panel में पेस्ट करने के लिए उचित प्रारूप में कुंजी देगा।
  • ~/.ssh/id_rsa फ़ाइल का बैकअप लेना सुनिश्चित करें। यह खो जाने पर इसे दुबारा पाया नहीं किया जा सकता है।
  • Vultr पर नया Public SSH Key add करते हीं Cloud Instance Deploy करने वाले पेज पर वापस Redirect कर दिए जायेंगे। ये प्रोसेस बिलकुल flawless है।
  • अगर पहले से Key added दिख रहा है तो उसे भी सेलेक्ट कर आगे बढ़ सकते हैं।
image 8

9. नया Web Firewall Group बना कर Cloud Instance से लिंक करें (Optional)

image 3

Manage पर क्लिक कर नया Firewall Group को IPV4 और IPV6 दोनों के लिए बनाएं

image
acceptTCP22Anywhere
acceptTCP80Anywhere
acceptTCP443Anywhere
Cloud Web Firewall Policy

10. Hostname और label नाम डाल कर Deploy Now कीजिये

image 6
  • Deploy Now पर click कर थोड़ी देर प्रतीक्षा करें।
image 10

11. नयी Cloud Instance पर क्लिक करें

  • यहाँ पर IP Address, Username और Password मिल जाएगा।
image

12. Password Based Login को Disable करें

सुरक्षा कारणों से हमें Password Based Authentication को disable कर देनी चाहिए। सिर्फ SSH Private Key के जरिये सिर्फ Login method रखना चाहिए।

  • root user से लॉगिन करें sudo -s
  • nano /etc/ssh/sshd_config.d/50-cloud-init.conf
  • Nano Editor में अब Find (CTRL + W) command का इस्तेमाल करें और PasswordAuthentication को search करें
  • Value को yes हटाकर सीधा no करें। आख़िरकार, PasswordAuthentication no रहना चाहिए।
  • SSH service को रीस्टार्ट करें service ssh restart

अगले बार से आप सिर्फ Key के through ही लॉगिन कर पाएंगे।

Step 13. UFW को Disable करें

आज कल Vultr पर हर नया Instance में पहले से UFW Installed रहता है। By default सिर्फ SSH वाला पोर्ट 22 Allowed रहता है और बाकी सब blocked रहता है। इसलिए ऐसा हो सकता है की आप पूरा स्टेप्स फॉलो कर लें और लास्ट में जब साइट ओपन करने जाएँ तो आपको ERR_CONNECTION_REFUSED मैसेज दिखे। अगर आप पोर्ट 80 और 443 allow करते हैं तो काम बन जाएगा। UFW सर्वर की सुरक्षा को बढ़ाने के लिए होते हैं।

ufw allow 80
ufw allow 443

या फिर सीधा UFW को Disable भी कर सकते हैं।

ufw disable

अब तक आपने एक नया Cloud Instance को सही तरीके से deploy करना सीखा।

तीसरा भाग: LEMP Stack पर वर्डप्रेस इनस्टॉल करें

अब इसके बाद आप वर्डप्रेस चलाने के लिए जरुरी Softwares को इनस्टॉल करना सीखेंगे। वर्डप्रेस के लिए हम NGINX सर्वर इस्तेमाल करने जा रहे हैं, इसका मतलब हमें LEMP stack तैयार करना होगा।

1. Update repositories

root user से logged इन रहें

sudo -s
apt update && apt upgrade -y && apt dist-upgrade && apt autoclean && apt autoremove -y && reboot

या, अगर आप बार-बार इतना लम्बा command नहीं लिखना चाहते हैं तो यह बैश फाइल को डाउनलोड कर executable permission सेट करें।

 wget -qO update https://dl.gulshankumar.net/update && chmod +x update

यह छोटे से command से काम चल जाएगा। लेकिन ध्यान रहे, कोई prompt आये तो ध्यान से answer दें।

./update

2. MariaDB को Install करें

sudo apt install mariadb-server -y && sudo mysql_secure_installation

आपसे कुछ प्रश्न पूछे जाएंगे जिसका ज़वाब इस तरह से देना है।

  • Enter current password for root (enter for none): Enter key दबाएं।
  • Switch to unix_socket authentication [Y/n]: n लिख कर Enter Key दबाएं।
  • Set root password? [Y/n]: Enter key दबाएं।
  • New password: एक नया पासवर्ड Dashlane से Generate कर Right click से SSH Console में Paste करें। पासवर्ड paste होने के बाद ******** ऐसा कुछ भी hint दिखाई नहीं देगा। सीधा Enter Key दबा दें।
  • Re-enter new password: दुबारा Right Click से पासवर्ड paste कर Enter key दबाएं।

पासवर्ड सफलतापूर्वक सेट हो जाने के बाद आपको यह एक मैसेज मिलेगा

Password updated successfully!
Reloading privilege tables..
... Success!

इसके बाद इन सभी प्रश्नो का उत्तर दें

  • Remove anonymous users? [Y/n]: Y या Enter key दबाएं
  • Disallow root login remotely? [Y/n]: Y या Enter key दबाएं
  • Remove test database and access to it? [Y/n]: Y या Enter key दबाएं
  • Reload privilege tables now? [Y/n]: Y या Enter key दबाएं

3. वर्डप्रेस के लिए एक नयी Database बनायें

MySQL में लॉग इन करें, पासवर्ड मांगे जाने पर Enter Key दबाएं।

mysql -u root -p

MariaDB सर्वर में नया डेटाबेस नाम, यूजरनाम, और पासवर्ड बनायें।

create database example_com;
grant all on example_com.* to example_com@localhost identified by 'RBMqnfrTNwlV0WPZx7';
flush privileges;
exit;

आप Unique Password रखें। बाकी ये जानकारी हम वर्डप्रेस इंस्टालेशन के वक़्त इस्तेमाल करेंगे।

Databaseexample_com
Usernameexample_com
PasswordRBMqnfrTNwlV0WPZx7

4. PHP 8.2 और NGINX को इनस्टॉल करें

आप PHP 8.2 इनस्टॉल करने जा रहे हैं। ये अभी के समय का सबसे stable version है। ज्यादातर popular plugins जैसे RankMath, Forget Spam Comment, ये सभी आसानी से काम करेंगे।

अगर version downgrade करना हो तो 8.2 के जगह 7.4 लिख दीजिये। ध्यान रहे, उसी प्रकार से आगे भी सभी कमांड या कोड में खास करके NGINX configuration file (/etc/nginx/sites-available/example.conf) में PHP installed version सही सेट करना होगा। गलत version व mismatch के स्थिति से error message का सामना करना पड़ेगा।

sudo add-apt-repository ppa:ondrej/php -y && apt update && apt install php8.2-fpm php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-soap php8.2-zip php8.2-bcmath -y && sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/8.2/fpm/php.ini && service php8.2-fpm restart && apt install nginx -y && chown -R www-data:www-data /var/www/ && chmod -R 755 /var/www

कुछ heavy थीम और प्लगइन ज्यादा resources की डिमांड कर सकते हैं। ऐसे में आपको यह PHP configuration रखना चाहिए। इसके परिणाम आपको वर्डप्रेस की Site health > Info रिपोर्ट में मिल जायेगी।

sed -i 's/memory_limit = .*/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = .*/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = .*/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = .*/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = .*/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = .*/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
service php8.2-fpm restart

5. Let’s Encrypt SSL Certificate पायें और Auto renewal सेट करें

/root/.secrets/ डायरेक्टरी में cloudflare.ini फाइल बनायें।

mkdir -p /root/.secrets/ && cd /root/.secrets/ && nano cloudflare.ini

नीचे दिए गए कोड को जोड़ें और CTRL + O का उपयोग करके Save करें और CTRL + X का उपयोग करके बाहर निकलें।

dns_cloudflare_email = "[email protected]"
dns_cloudflare_api_key = "XXXXXXXXXXXXXXXXX"

Cloudflare Login e-mail लगेगा, और Global API key आपको My Profile > API Tokens > Global API Key में जा कर मिलेगा।

सही permission सेट करें

chmod 0400 /root/.secrets/cloudflare.ini

Certbot और DNS Authenticator सॉफ्टवेयर को हमें Ubuntu OS Version 22.04 और HTTP web server (NGINX) के compatibility अनुसार Install करना होगा।

apt install snapd -y
snap install --beta --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install --beta certbot-dns-cloudflare
snap connect certbot:plugin certbot-dns-cloudflare

Wildcard SSL पायें

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01

Set Automatic Renewal using Cron Job

  • crontab -e टाइप करें
  • Nano Editor के लिए 1 टाइप करें
  • CRON Rule सेटअप करें, और CTRL+O से Save करें। फिर CTRL+X से exit कर दें।
0 0 * * *  /etc/init.d/nginx reload >/dev/null 2>&1

Renewal status की जांच करें। (ऑप्शनल)

certbot renew --dry-run

6. NGINX कॉन्फ़िगरेशन फाइल बनाएं

यह एक ज़रूरी फाइल है जहाँ आपको अपने Domain और PHP version को मुख्यतः सेट करना होगा.

एक नया सर्वर ब्लॉक बनाएँ

cd /etc/nginx/sites-available/
nano example.com
  1. example.com स्वयं के डोमेन से बदलें
  2. कोड के नीचे दर्ज करें और सहेजने के लिए CTRL+O दबाएं और बाहर निकलने के लिए CTRL+X दबाएं।

सामान्य

server {
    listen         80;
    return 301 https://$host$request_uri;
}
server {
# Document Root
root /var/www/html;
index index.php index.html index.htm;
server_name .example.com;
client_max_body_size 0;

    listen [::]:443 ssl http2 ipv6only=on;
    listen 443 ssl http2;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_prefer_server_ciphers on;
        ssl_session_cache   shared:SSL:20m;
        ssl_session_timeout 20m;
        ssl_ciphers 'TLS13+AESGCM+AES128:EECDH+AES128';


error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

# Block XMLRPC
location = /xmlrpc.php {
    deny all;
}

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

location ~* \.php$ {
if ($uri !~ "^/uploads/") {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
log_not_found off;
access_log off;
allow all;
}

location ~* .(css|gif|svg|ico|woff2|eot|jpeg|webp|jpg|js|png)$ {
expires 1y;
log_not_found off;
}

# Enable Gzip compression.
gzip on;

# Disable Gzip on IE6.
gzip_disable "msie6";

# Allow proxies to cache both compressed and regular version of file.
# Avoids clients that don't support Gzip outputting gibberish.
gzip_vary on;

# Compress data, even when the client connects through a proxy.
gzip_proxied any;

# The level of compression to apply to files. A higher compression level increases
# CPU usage. Level 5 is a happy medium resulting in roughly 75% compression.
gzip_comp_level 5;

# Compress the following MIME types.
gzip_types
 application/atom+xml
 application/javascript
 application/json
 application/ld+json
 application/manifest+json
 application/rss+xml
 application/vnd.geo+json
 application/vnd.ms-fontobject
 application/x-font-ttf
 application/x-web-app-manifest+json
 application/xhtml+xml
 application/xml
 font/opentype
 image/bmp
 image/svg+xml
 image/x-icon
 text/cache-manifest
 text/css
 text/plain
 text/vcard
 text/vnd.rim.location.xloc
 text/vtt
 text/x-component
 text/x-cross-domain-policy;
}

Cache Enabler के लिए

  • इसके लिए आपको Cache Enabler प्लगइन को इनस्टॉल करना होगा
server {
    listen         80;
    return 301 https://$host$request_uri;
}
server {
# Document Root
root /var/www/html;
index index.php index.html index.htm;
server_name .example.com;
client_max_body_size 0;

    listen [::]:443 ssl http2 ipv6only=on;
    listen 443 ssl http2;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_prefer_server_ciphers on;
        ssl_session_cache   shared:SSL:20m;
        ssl_session_timeout 20m;
        ssl_ciphers 'TLS13+AESGCM+AES128:EECDH+AES128';


error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;


# Block XMLRPC
location = /xmlrpc.php {
    deny all;
}


# Rules for Cache Enabler Plugin - Static File Serving

    set $cache_uri $request_uri;

    # bypass cache if POST requests or URLs with a query string
    if ($request_method = POST) {
    set $cache_uri 'nullcache';
    }

    if ($query_string != '') {
    set $cache_uri 'nullcache';
    }

    # bypass cache if URLs containing the following strings
    if ($request_uri ~* '(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(index)?.xml|[a-z0-9-]+-sitemap([0-9]+)?.xml)') {
    set $cache_uri 'nullcache';
    }

    # bypass cache if cookies contain the following strings
    if ($http_cookie ~* '(wp-postpass|wordpress_logged_in|comment_author)_') {
    set $cache_uri 'nullcache';
    }

    # custom installation subdirectory
    set $custom_subdir '';

    # default HTML file
    set $cache_enabler_uri '${custom_subdir}/wp-content/cache/cache-enabler/${http_host}${cache_uri}${scheme}-index.html';

    # WebP HTML file
    if ($http_accept ~* 'image/webp') {
    set $cache_enabler_uri '${custom_subdir}/wp-content/cache/cache-enabler/${http_host}${cache_uri}${scheme}-index-webp.html';
    }

    location / {
    gzip_static on; # this directive is not required but recommended
    try_files $cache_enabler_uri $uri $uri/ $custom_subdir/index.php?$args;
    }

location ~* \.php$ {
if ($uri !~ "^/uploads/") {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
log_not_found off;
access_log off;
allow all;
}

location ~* .(css|gif|svg|ico|jpeg|webp|woff2|eot|jpg|js|png)$ {
expires 1y;
log_not_found off;
}

# Enable Gzip compression.
gzip on;

# Disable Gzip on IE6.
gzip_disable "msie6";

# Allow proxies to cache both compressed and regular version of file.
# Avoids clients that don't support Gzip outputting gibberish.
gzip_vary on;

# Compress data, even when the client connects through a proxy.
gzip_proxied any;

# The level of compression to apply to files. A higher compression level increases
# CPU usage. Level 5 is a happy medium resulting in roughly 75% compression.
gzip_comp_level 5;

# Compress the following MIME types.
gzip_types
 application/atom+xml
 application/javascript
 application/json
 application/ld+json
 application/manifest+json
 application/rss+xml
 application/vnd.geo+json
 application/vnd.ms-fontobject
 application/x-font-ttf
 application/x-web-app-manifest+json
 application/xhtml+xml
 application/xml
 font/opentype
 image/bmp
 image/svg+xml
 image/x-icon
 text/cache-manifest
 text/css
 text/plain
 text/vcard
 text/vnd.rim.location.xloc
 text/vtt
 text/x-component
 text/x-cross-domain-policy;
}

NGINX FastCGI

यदि आप FastCGI कैश का उपयोग करना चाहते हैं तो इसके बजाय सर्वर ब्लॉक को लागू करें।

# NGINX Cache path
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=6h;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

server {
    listen         80;
    return 301 https://$host$request_uri;
}
server {
root /var/www/html;
index index.php index.html index.htm;
server_name .example.com;
client_max_body_size 0;

    listen [::]:443 ssl http2 ipv6only=on;
    listen 443 ssl http2;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_prefer_server_ciphers on;
        ssl_session_cache   shared:SSL:20m;
        ssl_session_timeout 20m;
        ssl_ciphers 'TLS13+AESGCM+AES128:EECDH+AES128';

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;


set $skip_cache 0;
    if ($request_method = POST) {set $skip_cache 1;}
    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|/wp-.*.php|index.php|sitemap(_index)?.xml") {set $skip_cache 1;}
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {set $skip_cache 1;}
    if ($query_string = "unapproved*") {set $skip_cache 1;}
    if ($cookie_woocommerce_items_in_cart = "1" ){ set $skip_cache 1;}
    if ($request_uri ~* "/(cart|checkout|my-account)/*$") {set $skip_cache 1;}

# Block XMLRPC
location = /xmlrpc.php {
    deny all;
}

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location ~* \.php$ {

 if ($uri !~ "^/uploads/") {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        }

        try_files                       $uri =404;
        include                         /etc/nginx/fastcgi_params;
        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass                    unix:/run/php/php8.2-fpm.sock;
        fastcgi_index                   index.php;
                fastcgi_cache_bypass $skip_cache;
                fastcgi_no_cache $skip_cache;
                fastcgi_cache WORDPRESS;
                fastcgi_cache_valid 200 30d;
                fastcgi_cache_valid 301 302 303 307 308 404 410 451 1m;
                add_header X-Cache $upstream_cache_status;

}

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
log_not_found off;
access_log off;
allow all;
}

location ~* .(css|gif|ico|svg|webp|woff2|eot|jpeg|jpg|js|png)$ {
expires 1y;
log_not_found off;
}

# Enable Gzip compression.
gzip on;

# Disable Gzip on IE6.
gzip_disable "msie6";

# Allow proxies to cache both compressed and regular version of file.
# Avoids clients that don't support Gzip outputting gibberish.
gzip_vary on;

# Compress data, even when the client connects through a proxy.
gzip_proxied any;

# The level of compression to apply to files. A higher compression level increases
# CPU usage. Level 5 is a happy medium resulting in roughly 75% compression.
gzip_comp_level 5;

# Compress the following MIME types.
gzip_types
 application/atom+xml
 application/javascript
 application/json
 application/ld+json
 application/manifest+json
 application/rss+xml
 application/vnd.geo+json
 application/vnd.ms-fontobject
 application/x-font-ttf
 application/x-web-app-manifest+json
 application/xhtml+xml
 application/xml
 font/opentype
 image/bmp
 image/svg+xml
 image/x-icon
 text/cache-manifest
 text/css
 text/plain
 text/vcard
 text/vnd.rim.location.xloc
 text/vtt
 text/x-component
 text/x-cross-domain-policy;
}

बचाने के लिए, दबाएं CTRL+Oऔर Enterकुंजी। फिर, कमांड का उपयोग करके नैनो एडिटर से बाहर निकलें CTRL+X

FastCGI के मामले में, आपको NGINX हेल्पर प्लगइन का उपयोग करने की आवश्यकता है। यह हिंदी एन्कोडेड URL के साथ भी काम करता है। ध्यान रखें, यह AMP को सपोर्ट नहीं करेगा। मैं व्यक्तिगत रूप से एएमपी का उपयोग नहीं करता हूं । ( अनुशंसित )

वैकल्पिक रूप से, एनजीआईएनएक्स कैश एएमपी यूआरएल को शुद्ध करने के लिए काम करता है लेकिन यह हिंदी एन्कोडेड यूआरएल का समर्थन नहीं करता है। सेटिंग्स में, आपको कैश पथ रखना चाहिए/var/run/nginx-cache/

सावधान!

  • उदाहरण के लिए, यदि आप समाचार पत्र थीम का उपयोग कर रहे हैं और अलग मोबाइल थीम परोस रहे हैं, तो कृपया FastCGI विधि के बिना रहें और एक प्लगइन WP रॉकेट का उपयोग करें क्योंकि यह बॉक्स से अलग मोबाइल कैश की सेवा कर सकता है।

7. दो निर्देशिकाओं के बीच प्रतीकात्मक लिंक बनाएँ

यदि आप इस चरण को याद करते हैं, तो आप प्राप्त कर सकते हैंERR_CONNECTION_REFUSED

सर्वर ब्लॉक को सक्रिय करने के लिए, निर्देशिका से अपने NGINX सर्वर ब्लॉक फ़ाइल का प्रतीकात्मक लिंक बनाएं/etc/nginx/sites-available//etc/nginx/sites-enabled

कमांड के नीचे चलने से पहले, कृपया example.comअपने डोमेन से बदलें।

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

परीक्षण विन्यास

nginx -t

पुनरारंभ करें और अपडेट करें

service nginx restart && service php8.2-fpm restart && service mysql restart && apt-get update && apt upgrade -y

8. वर्डप्रेस इंस्टॉल करें

निर्देशिका में वर्डप्रेस फ़ाइलें डाउनलोड करें /var/www/htmlऔर अनुमति सेट करें।

cd /var/www/html && wget https://wordpress.org/latest.tar.gz && tar -xvzf latest.tar.gz && mv -v wordpress/* /var/www/html && rm -rf index.nginx-debian.html latest.tar.gz wordpress && chown -R www-data:www-data /var/www/ && sudo chmod -R 755 /var/www

भविष्य में अनुमति को अद्यतन करने के लिए, निम्न आदेश का उपयोग करें

chown -R www-data:www-data /var/www/ && sudo chmod -R 755 /var/www

9. डीएनएस को अपडेट करना

यदि आप वर्डप्रेस को स्थानीय रूप से होस्ट कर रहे हैं, प्रॉक्सी को बायपास करना चाहते हैं या शून्य डाउनटाइम माइग्रेशन करना चाहते हैं, तो यह चरण उपयोगी है। मैं आमतौर पर स्टेटिक वर्डप्रेस देव क्षेत्र के मामले में पसंद करता हूं। 😉

  • DNS को पॉइंट करने के दो तरीके हैं। यदि आप साइट को वल्चर में माइग्रेट कर रहे हैं और पहले स्थानीय रूप से परीक्षण करना चाहते हैं तो अपनी मेजबानों की फाइल को संपादित करें और वहां इंगित करें।

विंडोज के लिए

  • C:\Windows\System32\drivers\etc\hosts के गुणों पर जाएं
  • अपने वर्तमान उपयोगकर्ता नाम के लिए “सुरक्षा” अनुमति को पूर्ण नियंत्रण में बदलें
  • अब आप अपने सिस्टम उपयोगकर्ता के तहत होस्ट फ़ाइल को स्वतंत्र रूप से संपादित कर सकते हैं और इसे सहेज सकते हैं।
# For same machine you can have localhost address else public IP
127.0.0.1 example.com
127.0.0.1 www.example.com

इसे इस तरह देखना चाहिए।

मैक या लिनक्स के लिए

आप निम्न आदेश का उपयोग करके होस्ट फ़ाइल को संपादित कर सकते हैं

sudo nano /etc/hosts

क्लाउडफ्लेयर के साथ डीएनएस को अपडेट करना

  • यदि सब कुछ सही है और आप अपनी साइट को लाइव करना चाहते हैं, तो क्लाउडफ्लेयर डीएनएस में लॉग इन करें और नया आईपी अपडेट करें
@IPV4 पता
एएए@IPV6 पता
CNAMEwwwexample.com

जहां @नग्न डोमेन example.com को दर्शाता है

9. वर्डप्रेस सेटअप करने के लिए अपने डोमेन नाम पर जाएं

अगर आप अपने WordPress के लिए non-www version Domain रखना चाहते हैं तो non-www version पर जाएँ वरना www.

https://example.com
  • वर्डप्रेस सेटअप शुरू करने के लिए डेटाबेस लॉगिन क्रेडेंशियल प्रदान करें
  • स्थापना चलाएँ
  • अपनी नई साइट का मूल विवरण भरें और वर्डप्रेस इंस्टॉल करें।
  • वर्डप्रेस में लॉग इन करें
  • यदि आपने FastCGI सर्वर ब्लॉक का उपयोग किया है, तो सबसे पहले आपको NGINX कैश प्लगइन स्थापित करना होगा और /var/www/cache कैश path के रूप में कॉन्फ़िगर करना होगा।

अन्य आवश्यक बातें

वर्डप्रेस के ज़रिये Outgoing ईमेल भेजने के लिए SMTP प्लगइन का उपयोग करें अन्यथा आप Password Reset Link, Contact Form 7 के messages को प्राप्त करने में सक्षम नहीं होंगे।

आख़िरकार, वर्डप्रेस इंस्टॉलेशन पूरा हो गया है। हमेशा बैकअप enable रखें।

इस लेख को पढ़ने में आपके लगे बहुमूल्य समय की मैं बहुत सराहना करता हूं। अगले ट्यूटोरियल में मिलते हैं!

Leave a Comment