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

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

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

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

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

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

LAMP पर वर्डप्रेस चलाना बहुत आसान होता है

दिलचस्प बात यह है कि LAMP stack में Apache वेब सर्वर का होने के कारण इसमें .htaccess फाइल का native सपोर्ट भी मिल जाता है। डायरेक्टरी लेवल पर किसी भी सर्वर configuration में तुरंत बदलाव करने लिए इस फाइल का इस्तेमाल किया जाता है।

एक बड़ी उदारहण के तौर पर ShortPixel प्लगइन .htaccess फाइल की मदद से जरुरी कॉन्फ़िगरेशन जैसे

  • सिर्फ सपोर्टेड ब्राउज़र पर ही WebP format इमेज को दिखाना अन्यथा JPEG इमेज को दिखाना
  • URL Rewriting / Redirect
  • फाइल Caching आटोमेटिक रूप से सेटअप किया जाता है।

जबकि इंजन-एक्स (NGINX) वाली LEMP stack सर्वर में ऐसे सेटिंग्स हर प्लगइन के Documentation को पढ़ कर खुद से करना पडता है। इसलिए LEMP की तुलना में LAMP पर वर्डप्रेस चलाना बहुत आसान होता है।

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

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

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

मैं चाहता हुँ कि आपकी वेबसाइट पर HTTPS support हो ताकि गूगल में बेहतर रैंक करे। इसके लिए हमें 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 वाला सर्वर लें

Ubuntu Logo

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

vultr.com site

मैं जैसा कि बहुत सारे 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 दिखाई देगा, जिसपे आपको क्लिक करना है।

Deploy a new Instance

3. Server type चुनें

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

Cloud Instance Type

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

CPU Technology

4. Server Location चुनें

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

vultr server region

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

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

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

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

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

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

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

ubuntu releases 2

6. एक Server Size चुनें

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

7. Auto Backups को Enable करें

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

vultr enable backup ipv6

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

8. SSH key सेट करें

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

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

add ssh key

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 दिख रहा है तो उसे भी सेलेक्ट कर आगे बढ़ सकते हैं।
select ssh public key

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

Manage Firewall

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

firewall status
ActiomProtocolPortSource
acceptTCP22Anywhere
acceptTCP80Anywhere
acceptTCP443Anywhere
Cloud Web Firewall Policy

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

server hostname label
  • Deploy Now पर click कर थोड़ी देर प्रतीक्षा करें।
server added successfully

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

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

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 करना सीखा।

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

अब इसके बाद आप वर्डप्रेस चलाने के लिए जरुरी Softwares को इनस्टॉल करना सीखेंगे। वर्डप्रेस के लिए हम Apache सर्वर इस्तेमाल करने जा रहे हैं, इसका मतलब हमें LAMP 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 रखें। बाकी ये जानकारी हम वर्डप्रेस इंस्टालेशन के वक़्त इस्तेमाल करेंगे।

ParticularValue
Databaseexample_com
Usernameexample_com
PasswordRBMqnfrTNwlV0WPZx7

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

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

अगर version downgrade करना हो तो 8.2 के जगह 7.4 लिख दीजिये। ध्यान रहे, उसी प्रकार से आगे भी सभी कमांड या कोड में खास करके Apache2 configuration file में 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 apache2 -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 (Apache2) के 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/apache2 reload >/dev/null 2>&1

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

certbot renew --dry-run

Apache2 के आवश्यक modules को enable करें।

a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2

6. अपनी वर्डप्रेस साइट के लिए एक Directory path बनायें

mkdir -p /var/www/example.com/public

यह आपकी Apache2 Configuration फ़ाइल में आपका DocumentRoot के लिए path होगा। यह हर साइट के लिए अलग-अलग हो सकता है। www के अंदर example.com बनाने का कारण प्रत्येक साइट को व्यवस्थित रखना है। दूसरा, मैंने सभी वर्डप्रेस core files को वहां रखने के उद्देश्य से Public Directory बनाई लेकिन wp-config.php एक level ऊपर (/var/www/example.com/) रखा जा सकता है ताकि wp-config.php फाइल सुरक्षित hidden रहे। संदर्भ: Stackoverflow

7. Apache2 Configuration फाइल बनायें

यह configuration file से यह तय होता है कि Apache2 सर्वर को किसी भी HTTP request को किस प्रकार से handle करना है।

पहले से मौज़ूद Default Configuration files को डिलीट कर दीजिये।

rm /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/default-ssl.conf
rm /etc/apache2/sites-enabled/000-default.conf
source /etc/apache2/envvars

अब एक नया Configuration File बनायेंगे। हर नई डोमेन पर वर्डप्रेस साइट के लिए यह seperate होना चाहिए। इस फाइल को हमेशा .conf format में ही save करें, नहीं तो ये काम नहीं करेगा।

example.com को अपने domain से बदल दें।

cd /etc/apache2/sites-available/
nano example.com.conf
  • नीचे दिए गए कोड को example.com.conf फाइल में Enter करें फिर Save करने के लिए CTRL+O दबाएं और बाहर निकलने के लिए CTRL+X दबाएं।
##############################################################
#                                                               
# NOTES: Kindly make search and replace of example.com to own domain.  
#                                                                
##############################################################


# We are going to Force HTTPS non-www
# If you want HTTPS www please keep https://www.example.com/ in the last line.
# Or you may face redirect loop issue.

<VirtualHost *:80>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Protocols h2 h2c http/1.1
   DirectoryIndex index.php index.html
    
   # Recommended for Cloudflare users
   # RemoteIPHeader X-Forwarded-For
   
   # Document Root Path (Pay attention to this path to avoid 404)
   DocumentRoot /var/www/example.com/public
   
   # Logs Path is /var/log/apache2/example.com-access.log
   ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
   CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
   
   # Let's Encrypt SSL
   SSLEngine On
   SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
   
   # Allow use of .htaccess file to override configuration
   <Directory /var/www/example.com/public>
     Options FollowSymLinks
     AllowOverride All
     Require all granted
   </Directory>
   
   # Block PHP execution inside Uploads Directory
   <Directory /var/www/example.com/public/wp-content/uploads>
    <Files *.php>
      deny from all
    </Files>
   </Directory>
   
   # Protect wp-config.php
   <files wp-config.php>
      order allow,deny
      deny from all
   </files>

  # HTTP Auth for additional security
  # If you want HTTP Auth for WordPress Login page then consider uncommenting this block of code.
  # If you do so you must generate .htpasswd file as well.
  # <Files wp-login.php>
  #  AuthName "Admins Only"
  #    AuthUserFile /var/www/.htpasswd
  #   AuthType basic
  #    require user gulshan
  #   <RequireAny>
  #      Require ip 127.0.0.1
  #       Require valid-user
  #   </RequireAny>
  # </Files>
   
   # Block XML-RPC to prevent DDoS Attack. 
   <Files xmlrpc.php>
      Order Deny,Allow
      Deny from all
   </Files>
   
   # Handle PHP requests
   <FilesMatch ".php$">
      SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>

सर्वर ब्लॉक configuration फाइल को activate करने के लिए, यह command दर्ज करें।

a2ensite example.com.conf

Test configuration file (optional)

apache2 -t

Restart और update करें।

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

8. WordPress इनस्टॉल करें

/var/www/example.com/public/ directory में वर्डप्रेस core files को डाउनलोड करें।

cd /var/www/example.com/public/ && wget https://wordpress.org/latest.tar.gz && tar -xvzf latest.tar.gz && mv -v wordpress/* /var/www/example.com/public/ && rm -rf latest.tar.gz wordpress && chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

अगर आप root यूजर को कुछ भी फाइल modify करेंगे तो chances है की आपको फिर से permission अपडेट करना पड़े।

chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

9. Updating DNS

अगर आप साइट live करने से पहले locally test करना चाहते हैं तो इन निर्देशों का पालन करें।

Windows OS
  • Properties में जाएँ ‪‪C:\Windows\System32\drivers\etc\hosts
  • “Security” permission को बदल कर full control अपने current Username के लिए करें।
  • अब आप hosts file को अपने System user के जरिये Edit और save कर सकते हैं।
  • इस process से आप अपने डोमेन के सिर्फ अपने कंप्यूटर पर testing के लिए मैन्युअली IP को point करते हैं।
Linux या Mac
  • hosts फाइल को sudo यूजर के जरिये एडिट करना होगा। इसलिए यह command दर्ज करें।
sudo nano /etc/hosts
Cloudflare पर DNS अपडेट कैसे करें?
  • आपको इस प्रकार से DNS records को सेट-अप कर लेना है।
RecordNameValue
A@IPV4 Address
AAAA@IPV6 Address
CNAME@example.com

@ root domain example.com को दर्शाता है।

10. Famous Five Minutes Installation Page पर जाएँ

मेरे मतलब आपको वर्डप्रेस साइट को access करने की कोशिश करना है। फर्स्ट टाइम, आपको WordPress installation वाला पेज दिखेगा जहाँ पे Database credentials और बाकी basic जानकारी आपको fill-up करना है।

अगर आप HTTPS non-www रखना चाहते हैं तो ठीक उसी प्रकार से visit करें।

  • Go to https://example.com
  • Database login credential डाल कर वर्डप्रेस सेटअप process को आगे बढ़ायें
  • अपने नयी वर्डप्रेस साइट के लिए basic जानकारी भरें जैसे Site Name, Username, password, etc.
  • अब आप वर्डप्रेस को लॉगिन कर सकते हैं।
अन्य आवश्यक चीजें जो आपको पता होनी चाहिए।
  • Swap Memory को बढ़ायें ताकि अचानक लोड को झेला जा सके।
swapoff -a
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • एक पेज कैशिंग प्लगइन का इस्तेमाल जरूर करें। WP Rocket, WP Fastest Cache अच्छे प्लगिन्स है। इससे सर्वर Server Response Time यानी TTFB सीधा जो पहले 200ms के आसपास होगा अब वो 50ms तक हो जाएगा। मतलब साइट आपका काफी Fast रहेगा और ज्यादा से ज्यादा traffic को handle करने में सक्षम होगा।
  • बैकअप के लिए UpdraftPlus प्लगइन का उपयोग Google Drive के साथ करें।
  • वर्डप्रेस के outgoing email भेजने के लिए SMTP प्लगइन का उपयोग करें अन्यथा आप Password Reset Link, Contact Form का message प्राप्त नहीं कर पाएंगे।

वर्डप्रेस इंस्टॉलेशन LAMP stack पर सफलतापूर्वक पूरा हो गया है। कोई भी सवाल या सुझाव हो बेझिझक कमेंट कर साझा करें। धन्यवाद!

LAMP स्टैक का क्या अर्थ है?

LAMP एक संक्षिप्त रूप है जो Linux, Apache, MySQL और PHP के लिए है, website को होस्ट और प्रबंधित करने के लिए उपयोग होता है।

Leave a Comment