.## 1. परिचय
Ubuntu वेब सर्वर क्या है?
एक वेब सर्वर वह प्रणाली है जो इंटरनेट पर वेबसाइटें प्रदान करती है। लोकप्रिय वेब सर्वर सॉफ़्टवेयर में Apache, Nginx, और LiteSpeed शामिल हैं, लेकिन Ubuntu पर सबसे अधिक उपयोग किया जाने वाला विकल्प Apache है।
Ubuntu हल्का, स्थिर, और ओपन‑सोर्स है, जिससे यह व्यक्तियों और कंपनियों दोनों के बीच लोकप्रिय है। यह विशेष रूप से LAMP वातावरण (Linux, Apache, MySQL/MariaDB, PHP) चलाने के लिए उपयुक्त है, जो कई वेबसाइटों और अनुप्रयोगों को शक्ति प्रदान करता है।
यह लेख किसके लिए है
यह गाइड पहली बार वेब सर्वर बनाते हुए शुरुआती लोगों के लिए तैयार किया गया है। यह Ubuntu पर वेब सर्वर लॉन्च करने, Apache स्थापित करने, वर्चुअल होस्ट और SSL प्रमाणपत्रों को कॉन्फ़िगर करने, तथा अनुकूलन और सुरक्षा सुधारों को लागू करने की प्रक्रिया को समझाता है।
आप क्या सीखेंगे
- Ubuntu पर वेब सर्वर बनाना (Apache को स्थापित और कॉन्फ़िगर करना)
- वर्चुअल होस्ट सेट अप करना और कई वेबसाइटों का प्रबंधन करना
- Let’s Encrypt के साथ नि:शुल्क SSL स्थापित करना
- सुरक्षा कड़ीकरण और प्रदर्शन अनुकूलन लागू करना
- सामान्य समस्या निवारण चरण और समाधान
2. Ubuntu स्थापित करना और प्रारंभिक सेटअप करना
आवश्यक सिस्टम विनिर्देश
Ubuntu को वेब सर्वर के रूप में चलाने के लिए निम्नलिखित न्यूनतम विनिर्देश की सिफ़ारिश की जाती है:
| Item | Minimum Requirements | Recommended Requirements |
|---|---|---|
| OS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
| CPU | 1GHz or higher | 2GHz or higher |
| Memory | 512MB | 2GB or higher |
| Storage | 10GB or more | 20GB or more |
| Network | Internet connection | High-speed connection recommended |
Ubuntu डाउनलोड करना और स्थापित करना
Ubuntu को आधिकारिक वेबसाइट (https://ubuntu.com/download/server) से डाउनलोड किया जा सकता है। ISO फ़ाइल डाउनलोड करें और इसे VirtualBox या VMware जैसे वर्चुअल मशीन में, या समर्पित सर्वर या VPS पर स्थापित करें।
स्थापना चरण:
- स्थापना मीडिया बनाएं
- USB ड्राइव (Rufus जैसे टूल का उपयोग करके)
- वर्चुअल मशीन में ISO फ़ाइल माउंट करें
- स्थापना विज़ार्ड का पालन करें
- अपनी पसंदीदा भाषा चुनें
- नेटवर्क कनेक्टिविटी सत्यापित करें
- उपयोगकर्ता नाम और पासवर्ड सेट करें
- SSH सर्वर स्थापित करें (वैकल्पिक—आप बाद में इसे स्थापित कर सकते हैं)
- स्थापना पूर्ण होने के बाद रीबूट करें
- लॉग इन करें और प्रारंभिक कॉन्फ़िगरेशन शुरू करें
बुनियादी प्रारंभिक सेटअप
स्थापना के बाद, निम्नलिखित प्रारंभिक सेटअप चरणों को पूरा करें।
- सभी पैकेज अपडेट करें
sudo apt update && sudo apt upgrade -y
→ सुरक्षा पैच लागू करता है और सॉफ़्टवेयर पैकेजों को अपडेट करता है।
- समय क्षेत्र सेट करें
sudo timedatectl set-timezone Asia/Tokyo
→ सिस्टम समय को जापान मानक समय (JST) पर सेट करता है।
- फ़ायरवॉल सक्षम करें
sudo ufw enable
→ अनधिकृत पहुँच से सिस्टम की रक्षा के लिए फ़ायरवॉल सक्रिय करता है।
- SSH कॉन्फ़िगर करें (रिमोट प्रबंधन के लिए)
- जाँचें कि SSH सक्षम है या नहीं
sudo systemctl status ssh - यदि निष्क्रिय है, तो इसे सक्षम करें
sudo systemctl enable --now ssh
इन चरणों को पूरा करने के बाद, आपका Ubuntu सर्वर पूरी तरह कार्यात्मक वेब सर्वर के रूप में सेट अप करने के लिए तैयार है।
3. Apache स्थापित करना और कॉन्फ़िगर करना
Apache क्या है?
Apache (Apache HTTP Server) एक ओपन‑सोर्स वेब सर्वर है जो अपनी स्थिरता, विस्तारशीलता, और मजबूत सुरक्षा सुविधाओं के लिए जाना जाता है। विश्व भर में लगभग 30% सर्वर Apache का उपयोग करते हैं।
मुख्य विशेषताएँ:
- नि:शुल्क और ओपन‑सोर्स
- आसान विस्तार के लिए मॉड्यूलर आर्किटेक्चर
- HTTPS कॉन्फ़िगरेशन के लिए SSL/TLS समर्थन
- कई वेबसाइटों की मेजबानी के लिए वर्चुअल होस्ट
Apache स्थापित करना
Ubuntu पर, Apache को apt पैकेज मैनेजर का उपयोग करके आसानी से स्थापित किया जा सकता है।
Apache स्थापित करें
Apache स्थापित करने के लिए निम्नलिखित कमांड चलाएँ:
sudo apt update
sudo apt install apache2 -y
स्थापना की पुष्टि करें
स्थापना के बाद, Apache संस्करण की जाँच करें:
apache2 -v
उदाहरण आउटपुट:
Server version: Apache/2.4.52 (Ubuntu)
Server built: 2023-07-01T12:34:56
यदि संस्करण जानकारी प्रदर्शित होती है, तो Apache सही ढंग से स्थापित हो गया है।
Apache को शुरू करना, रोकना और पुनः आरंभ करना
Apache को systemctl कमांड के माध्यम से प्रबंधित किया जाता है।
Apache शुरू करें
sudo systemctl start apache2
Apache अब वेब अनुरोधों को स्वीकार करना शुरू कर देगा।
स्वचालित स्टार्टअप सक्षम करें
answer.“` sudo systemctl enable apache2
#### Apache स्थिति जाँचें
Apache चल रहा है या नहीं, यह सत्यापित करने के लिए इस कमांड का उपयोग करें:
sudo systemctl status apache2
उदाहरण आउटपुट:
● apache2.service – The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since …
#### Apache को पुनः आरंभ या रोकें
कॉन्फ़िगरेशन सेटिंग्स में बदलाव करने के बाद Apache को पुनः आरंभ करें:
sudo systemctl restart apache2
Apache को अस्थायी रूप से रोकने के लिए:
sudo systemctl stop apache2
### Apache संचालन की पुष्टि करना
यह सुनिश्चित करने के लिए कि Apache सही ढंग से चल रहा है, **सर्वर के IP पते तक पहुँचें**।
#### 1. अपने सर्वर का IP पता जाँचें
hostname -I
या बाहरी IP जाँचें:
curl ifconfig.me
#### 2. वेब ब्राउज़र में सत्यापित करें
अपने ब्राउज़र में निम्नलिखित दर्ज करें:
http://
स्थानीय सेटअप के लिए:
http://localhost/
आपको Apache का डिफ़ॉल्ट पेज दिखना चाहिए (`/var/www/html/index.html`)।
**उदाहरण डिफ़ॉल्ट पेज:**
Apache2 Ubuntu Default Page It works!
यदि यह संदेश दिखाई देता है, तो Apache सही ढंग से कार्य कर रहा है।
### फ़ायरवॉल कॉन्फ़िगर करना
Ubuntu फ़ायरवॉल नियमों को प्रबंधित करने के लिए **UFW (Uncomplicated Firewall)** का उपयोग करता है।
Apache स्थापित करने के बाद, HTTP (पोर्ट 80) और HTTPS (पोर्ट 443) तक बाहरी पहुँच अभी भी अवरुद्ध हो सकती है।
#### फ़ायरवॉल के माध्यम से Apache को अनुमति दें
sudo ufw allow ‘Apache’
HTTPS को भी अनुमति देने के लिए:
sudo ufw allow ‘Apache Full’
#### फ़ायरवॉल स्थिति जाँचें
sudo ufw status
उदाहरण आउटपुट:
Status: active
To Action From — —— —- Apache ALLOW Anywhere Apache (v6) ALLOW Anywhere (v6)
यदि यह दिखाई देता है, तो Apache ट्रैफ़िक फ़ायरवॉल के माध्यम से अनुमति प्राप्त है।
### सारांश
अब तक, आपने **Ubuntu पर Apache स्थापित किया है और आवश्यक सेटअप चरण पूरे किए हैं**।
कवर किए गए मुख्य बिंदु:
* Apache कैसे स्थापित करें
* Apache को कैसे शुरू और सक्षम करें
* ब्राउज़र में Apache संचालन की पुष्टि कैसे करें
* UFW फ़ायरवॉल नियमों को कैसे कॉन्फ़िगर करें
* Apache की बुनियादी कॉन्फ़िगरेशन फ़ाइलों का अवलोकन
## 4. वर्चुअल होस्ट कॉन्फ़िगर करना (एकाधिक साइटों का प्रबंधन)
### वर्चुअल होस्ट क्या हैं?
वर्चुअल होस्ट आपको **एक ही Apache सर्वर पर कई डोमेनों (या सबडोमेनों) को होस्ट करने** की अनुमति देते हैं।
उदाहरण के लिए, एक सर्वर `example.com` और `test.com` दोनों को होस्ट कर सकता है।
वर्चुअल होस्ट के दो प्रकार होते हैं:
1. **नाम-आधारित वर्चुअल होस्ट**
* कई साइटें **एक ही IP पते** को साझा करती हैं
* सबसे सामान्य विधि
1. **IP-आधारित वर्चुअल होस्ट**
* प्रत्येक साइट **विभिन्न IP पते** का उपयोग करती है
* एक ही सर्वर पर कई नेटवर्क इंटरफ़ेस की आवश्यकता होती है
अधिकांश मामलों में, **नाम-आधारित वर्चुअल होस्ट** का उपयोग किया जाता है।
### वर्चुअल होस्ट कॉन्फ़िगर करने के चरण
#### 1. आवश्यक डायरेक्टरी बनाएं
प्रत्येक वेबसाइट के लिए **एक अलग डायरेक्टरी** बनाएं:
sudo mkdir -p /var/www/example.com/public_html sudo mkdir -p /var/www/test.com/public_html
#### 2. डायरेक्टरी स्वामित्व बदलें
फ़ाइलों को पढ़ने के लिए Apache को `www-data` मालिक बनाकर सुनिश्चित करें:
sudo chown -R www-data:www-data /var/www/example.com/public_html sudo chown -R www-data:www-data /var/www/test.com/public_html
#### 3. प्लेसहोल्डर HTML फ़ाइलें बनाएं
परीक्षण के लिए एक बुनियादी `index.html` फ़ाइल बनाएं:
echo “
Welcome to example.com
” | sudo tee /var/www/example.com/public_html/index.html echo “Welcome to test.com
” | sudo tee /var/www/test.com/public_html/index.html### 4. वर्चुअल होस्ट कॉन्फ़िगरेशन फ़ाइलें बनाएं
वर्चुअल होस्ट कॉन्फ़िगरेशन फ़ाइलें `/etc/apache2/sites-available/` डायरेक्टरी में संग्रहीत होती हैं।
#### example.com के लिए वर्चुअल होस्ट कॉन्फ़िगरेशन
निम्नलिखित कमांड के साथ कॉन्फ़िगरेशन फ़ाइल बनाएं और संपादित करें:
sudo nano /etc/apache2/sites-available/example.com.conf
कॉन्फ़िगरेशन फ़ाइल की सामग्री:
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
#### test.com के लिए वर्चुअल होस्ट कॉन्फ़िगरेशन
sudo nano /etc/apache2/sites-available/test.com.conf
निम्नलिखित सामग्री जोड़ें:
<Directory /var/www/test.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
### 5. वर्चुअल होस्ट्स को सक्षम करें
कॉन्फ़िगरेशन फ़ाइलें बनाने के बाद, `a2ensite` का उपयोग करके वर्चुअल होस्ट्स को सक्षम करें:
sudo a2ensite example.com.conf sudo a2ensite test.com.conf
#### अपाचे की कॉन्फ़िगरेशन की जाँच करें
सिंटैक्स त्रुटियों की जाँच करें:
sudo apachectl configtest
उदाहरण आउटपुट:
Syntax OK
यदि कोई त्रुटियाँ नहीं हैं, तो अपाचे को पुनः आरंभ करें:
sudo systemctl restart apache2
### 6. स्थानीय रूप से सत्यापित करें (होस्ट्स फ़ाइल संपादित करें)
वर्चुअल होस्ट्स को स्थानीय रूप से परीक्षण करने के लिए, अपने पीसी की `hosts` फ़ाइल संपादित करें।
sudo nano /etc/hosts
निम्नलिखित पंक्तियाँ जोड़ें:
127.0.0.1 example.com 127.0.0.1 test.com
फ़ाइल सहेजें, फिर एक ब्राउज़र खोलें और जाएँ:
http://example.com/
आपको **“Welcome to example.com”** दिखना चाहिए।
इसी प्रकार, विज़िट करके:
http://test.com/
**“Welcome to test.com”** प्रदर्शित होना चाहिए।
### 7. वर्चुअल होस्ट्स की समस्या निवारण
यदि वर्चुअल होस्ट्स ठीक से काम नहीं कर रहे हैं, तो निम्नलिखित की जाँच करें:
#### 1. अपाचे त्रुटि लॉग्स की जाँच करें
sudo tail -f /var/log/apache2/error.log
#### 2. कॉन्फ़िगरेशन फ़ाइलों के सक्षम होने की पुष्टि करें
ls /etc/apache2/sites-enabled/
यदि सही `.conf` फ़ाइलें सूचीबद्ध हैं, तो वर्चुअल होस्ट्स सक्रिय हैं।
#### 3. अपाचे पोर्ट सेटिंग्स की जाँच करें
सत्यापित करें कि पोर्ट 80 (HTTP) कॉन्फ़िगर है:
sudo nano /etc/apache2/ports.conf
निम्नलिखित पंक्ति के अस्तित्व को सुनिश्चित करें:
Listen 80
### सारांश
इस खंड ने **उबंटू पर अपाचे में वर्चुअल होस्ट्स कॉन्फ़िगर करने का तरीका** समझाया।
मुख्य बिंदु:
* **वर्चुअल होस्ट्स का अवधारणा और उद्देश्य**
* **प्रत्येक साइट के लिए निर्देशिकाएँ बनाना**
* **वर्चुअल होस्ट कॉन्फ़िगरेशन फ़ाइलें बनाना और सक्षम करना**
* **होस्ट्स फ़ाइल का उपयोग करके स्थानीय परीक्षण विधियाँ**
* **सामान्य समस्याओं का समस्या निवारण**
## 5. SSL/TLS का परिचय (HTTPS सक्षम करना)
### SSL/TLS क्या है?
SSL (सिक्योर सॉकेट्स लेयर) और TLS (ट्रांसपोर्ट लेयर सिक्योरिटी) इंटरनेट पर सुरक्षित संचार सुनिश्चित करने के लिए उपयोग की जाने वाली एन्क्रिप्शन तकनीकें हैं।
#### SSL/TLS सक्षम करने के लाभ
✅ **संचार को एन्क्रिप्ट करता है** (डेटा के चुराए जाने या बदले जाने का जोखिम कम करता है)
✅ **गूगल SEO रैंकिंग में सुधार** (HTTPS साइट्स को प्राथमिकता दी जाती है)
✅ **ब्राउज़र सुरक्षा चेतावनियों को रोकता है** (HTTP साइट्स पर "Not Secure" दिखता है)
✅ **लॉगिन क्रेडेंशियल्स और ऑनलाइन लेनदेन की रक्षा करता है**
आज, **TLS (TLS 1.2 / 1.3)** की सिफारिश की जाती है, और पुराने SSL संस्करण (SSL 3.0 और इससे पहले) अप्रचलित हैं।
### Let’s Encrypt के साथ मुफ्त SSL प्रमाणपत्र प्राप्त करना
Let’s Encrypt एक सर्टिफ़िकेट अथॉरिटी (CA) है जो मुफ्त SSL प्रमाणपत्र प्रदान करती है।
`certbot` का उपयोग करके, आप आसानी से एक प्रमाणपत्र जारी कर सकते हैं और इसे अपाचे के साथ कॉन्फ़िगर कर सकते हैं।
#### Let’s Encrypt क्लाइंट (Certbot) इंस्टॉल करें
`certbot` इंस्टॉल करें, आधिकारिक Let’s Encrypt क्लाइंट:
sudo apt update sudo apt install certbot python3-certbot-apache -y
#### अपाचे SSL कॉन्फ़िगरेशन को स्वचालित करें
आप निम्नलिखित कमांड का उपयोग करके अपाचे को स्वचालित रूप से कॉन्फ़िगर कर सकते हैं:
sudo certbot –apache -d example.com -d www.example.com
यह कमांड निम्न कार्य करता है:
1. **डोमेन वैधता (HTTP-01 चुनौती)**
2. **SSL प्रमाणपत्र जारी करना**
3. **स्वचालित Apache SSL कॉन्फ़िगरेशन**
4. **वैकल्पिक रूप से HTTP से HTTPS पर रीडायरेक्ट**
#### SSL संचालन सत्यापित करें
HTTPS सक्षम है यह पुष्टि करने के लिए निम्न URL तक पहुँचें:
https://example.com/
यदि आपका ब्राउज़र **ताला आइकन** दिखाता है, तो SSL सफलतापूर्वक लागू हो गया है।
### Apache के लिए SSL को मैन्युअल रूप से कॉन्फ़िगर करना
यदि आप `certbot --apache` का उपयोग नहीं करना चाहते, तो आप SSL को मैन्युअल रूप से कॉन्फ़िगर कर सकते हैं।
#### 1. Apache का SSL मॉड्यूल सक्षम करें
sudo a2enmod ssl sudo systemctl restart apache2
#### 2. SSL वर्चुअल होस्ट कॉन्फ़िगर करें
`/etc/apache2/sites-available/example.com-le-ssl.conf` SSL कॉन्फ़िगरेशन फ़ाइल को संपादित करें:
sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf
कॉन्फ़िगरेशन उदाहरण:
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
#### 3. SSL कॉन्फ़िगरेशन सक्षम करें और Apache को पुनः आरंभ करें
sudo a2ensite example.com-le-ssl.conf sudo systemctl restart apache2
### SSL प्रमाणपत्रों का स्वचालित नवीनीकरण
Let’s Encrypt प्रमाणपत्र **90 दिनों** के लिए वैध होते हैं। मैन्युअल नवीनीकरण से बचने के लिए, स्वचालित अपडेट्स कॉन्फ़िगर करें।
#### 1. Certbot स्वचालित नवीनीकरण का परीक्षण करें
sudo certbot renew –dry-run
#### 2. नवीनीकरण शेड्यूल जांचें
Certbot का स्वचालित नवीनीकरण शेड्यूल **`/etc/cron.d/certbot`** में संग्रहीत है।
sudo systemctl list-timers | grep certbot
### SSL समस्या निवारण
#### 1. SSL प्रमाणपत्र लागू नहीं हुआ
**समाधान: Apache को पुनः आरंभ करें और कॉन्फ़िगरेशन सत्यापित करें**
sudo systemctl restart apache2 sudo apachectl configtest
#### 2. प्रमाणपत्र समाप्त हो गया है
sudo certbot renew –force-renewal
#### 3. Let’s Encrypt वैधता त्रुटियाँ
**समाधान: फ़ायरवॉल नियमों की जाँच करें**
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload
### सारांश
इस अनुभाग में बताया गया है कि **Let’s Encrypt का उपयोग करके मुफ्त SSL कैसे स्थापित और कॉन्फ़िगर करें**।
मुख्य बिंदु:
* **SSL/TLS की मूल बातें**
* **Let’s Encrypt के साथ Apache को कॉन्फ़िगर करना**
* **मैन्युअल SSL कॉन्फ़िगरेशन**
* **स्वचालित प्रमाणपत्र नवीनीकरण**
* **SSL समस्याओं का समाधान**
## 6. वेब सर्वर सुरक्षा को बढ़ाना
### फ़ायरवॉल (UFW) कॉन्फ़िगर करना
Ubuntu **UFW (Uncomplicated Firewall)** का उपयोग अनावश्यक ट्रैफ़िक को ब्लॉक करने और सर्वर की सुरक्षा के लिए करता है।
#### वर्तमान फ़ायरवॉल सेटिंग्स जांचें
sudo ufw status
#### केवल आवश्यक पोर्ट्स की अनुमति दें
डिफ़ॉल्ट रूप से, सभी इनकमिंग ट्रैफ़िक को ब्लॉक करें और केवल आवश्यक पोर्ट्स की अनुमति दें:
sudo ufw default deny incoming sudo ufw default allow outgoing
**आवश्यक पोर्ट्स खोलें:**
* **SSH (पोर्ट 22)**
sudo ufw allow 22/tcp
* **HTTP (पोर्ट 80)**
sudo ufw allow 80/tcp
* **HTTPS (पोर्ट 443)**
sudo ufw allow 443/tcp
#### फ़ायरवॉल सक्षम करें
sudo ufw enable
### SSH सुरक्षा को सुदृढ़ करना
यदि डिफ़ॉल्ट सेटिंग्स के साथ छोड़ दिया जाए तो SSH ब्रूट‑फ़ोर्स हमलों का सामान्य लक्ष्य बन जाता है। उचित कॉन्फ़िगरेशन लागू करके सुरक्षा को सुदृढ़ करें।
#### SSH पोर्ट बदलें
sudo nano /etc/ssh/sshd_config
इन पंक्तियों को संशोधित करें:
Port 2222 # Change from 22 to any unused port PermitRootLogin no # Disable root login PasswordAuthentication no # Disable password login (use SSH keys only)
SSH को पुनः आरंभ करें:
sudo systemctl restart ssh
.
#### Install Fail2Ban
Fail2Ban आपके सर्वर की सुरक्षा करता है उन IP पतों को अस्थायी रूप से प्रतिबंधित करके जो बार‑बार SSH लॉगिन विफलताओं का प्रयास करते हैं।
sudo apt install fail2ban -y
कॉन्फ़िगरेशन संपादित करें:
sudo nano /etc/fail2ban/jail.local
निम्नलिखित जोड़ें:
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 600Fail2Ban सक्षम करें:
sudo systemctl restart fail2ban sudo systemctl enable fail2ban
### Hardening Apache
#### Hide Apache Version Information
sudo nano /etc/apache2/conf-available/security.conf
निम्नलिखित सेटिंग्स बदलें:
ServerTokens Prod ServerSignature Off
परिवर्तनों को लागू करें:
sudo systemctl restart apache2
#### Disable Directory Listing
sudo nano /etc/apache2/apache2.conf
डायरेक्टरी ब्लॉक खोजें और अपडेट करें:
Apache पुनः आरंभ करें:
sudo systemctl restart apache2
#### Disable Unnecessary Apache Modules
sudo a2dismod autoindex sudo a2dismod status sudo systemctl restart apache2
### Adding Security Headers
सुरक्षा हेडर आपके वेबसाइट को क्रॉस‑साइट स्क्रिप्टिंग और क्लिकजैकिंग जैसे हमलों से बचाते हैं।
#### Enable `mod_headers`
sudo a2enmod headers sudo systemctl restart apache2
#### Add Security Headers
sudo nano /etc/apache2/sites-available/example.com.conf
`<VirtualHost>` ब्लॉक के भीतर निम्नलिखित जोड़ें:
Apache पुनः आरंभ करें:
sudo systemctl restart apache2
### Troubleshooting
#### Check Firewall Settings
sudo ufw status
#### Check Apache Configuration for Errors
sudo apachectl configtest
आउटपुट उदाहरण:
Syntax OK
#### Cannot Connect via SSH After Changing Port
यदि पोर्ट बदलने के बाद SSH कनेक्ट नहीं हो रहा है, तो कनेक्ट करते समय नया पोर्ट निर्दिष्ट करें:
ssh -p 2222 user@server-ip
### Summary
इस अनुभाग में बताया गया है **कैसे अपने वेब सर्वर की सुरक्षा को मजबूत किया जाए**।
मुख्य बिंदु:
* **UFW फ़ायरवॉल नियमों को कॉन्फ़िगर करना**
* **SSH को सुरक्षित करना (पोर्ट बदलना, Fail2Ban)**
* **Apache सुरक्षा सुदृढ़ीकरण (संस्करण जानकारी छुपाना, लिस्टिंग अक्षम करना)**
* **सुरक्षा हेडर जोड़ना**
## 7. Performance Optimization
### Tuning Apache
डिफ़ॉल्ट Apache कॉन्फ़िगरेशन संभवतः इष्टतम प्रदर्शन नहीं देता। निम्नलिखित समायोजन लागू करके आप **काफी अधिक प्रदर्शन** प्राप्त कर सकते हैं।
#### Optimizing the MPM (Multi-Processing Module)
MPM (मल्टी‑प्रोसेसिंग मॉड्यूल) यह निर्धारित करता है कि Apache अनुरोधों को कैसे संभालता है।
वर्तमान MPM जांचें:
apachectl -M | grep mpm
उदाहरण आउटपुट:
mpm_prefork_module (shared)
यदि `mpm_prefork_module` सक्षम है, तो `mpm_event` में स्विच करने से प्रदर्शन में सुधार हो सकता है।
MPM बदलें:
sudo a2dismod mpm_prefork sudo a2enmod mpm_event sudo systemctl restart apache2
### Enable KeepAlive
KeepAlive (स्थायी कनेक्शन) क्लाइंट्स को मौजूदा कनेक्शन को पुनः उपयोग करने की अनुमति देता है, जिससे अनुरोध ओवरहेड कम होता है।
कॉन्फ़िगरेशन फ़ाइल संपादित करें:
sudo nano /etc/apache2/apache2.conf
निम्नलिखित सेटिंग्स की पुष्टि करें:
KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5
Apache पुनः आरंभ करें:
sudo systemctl restart apache2
### Using Cache
ब्राउज़र कैश और सर्वर‑साइड कैश का उपयोग करके आप **अनावश्यक अनुरोधों को कम कर सकते हैं और प्रतिक्रिया गति में काफी सुधार कर सकते हैं**।
#### Enable `mod_expires` (Browser Cache)
sudo a2enmod expires sudo systemctl restart apache2
`/etc/apache2/sites-available/example.com.conf` में निम्नलिखित जोड़ें:
.
Apache को पुनः शुरू करें:
sudo systemctl restart apache2
### `mod_cache` सक्षम करें (सर्वर कैश)
sudo a2enmod cache cache_disk sudo systemctl restart apache2
`/etc/apache2/sites-available/example.com.conf` में निम्नलिखित जोड़ें:
Apache को पुनः शुरू करें:
sudo systemctl restart apache2
### संपीड़न (Compression) सक्षम करें
`mod_deflate` का उपयोग करके वेबसाइट डेटा को संपीड़ित करें और ट्रांसफ़र आकार को कम करें।
#### `mod_deflate` सक्षम करें
sudo a2enmod deflate sudo systemctl restart apache2
`/etc/apache2/sites-available/example.com.conf` में निम्नलिखित जोड़ें:
Apache को पुनः शुरू करें:
sudo systemctl restart apache2
### संसाधन सीमित करना (Resource Limiting)
भारी ट्रैफ़िक या संभावित दुर्भावनापूर्ण एक्सेस के लिए तैयार होने हेतु, Apache मॉड्यूल का उपयोग करके **संसाधन सीमाएँ** सेट करें।
#### `mod_ratelimit` सक्षम करें
sudo a2enmod ratelimit sudo systemctl restart apache2
`/etc/apache2/sites-available/example.com.conf` में निम्नलिखित जोड़ें:
Apache को पुनः शुरू करें:
sudo systemctl restart apache2
### प्रदर्शन समस्याओं का निवारण (Troubleshooting Performance Issues)
#### Apache त्रुटि लॉग जांचें
sudo tail -f /var/log/apache2/error.log
#### Apache लोड स्थिति जांचें
sudo apachectl status
#### CPU और मेमोरी उपयोग जांचें
top
या
htop
यदि `htop` स्थापित नहीं है:
sudo apt install htop
### सारांश
यह अनुभाग **वेब सर्वर प्रदर्शन को अनुकूलित** करने के तरीकों को समझाता है।
मुख्य बिंदु:
* **Apache ट्यूनिंग (MPM अनुकूलन और KeepAlive सेटिंग्स)**
* **कैश का उपयोग (ब्राउज़र कैश और सर्वर कैश)**
* **mod_deflate के साथ डेटा संपीड़न**
* **mod_ratelimit के साथ संसाधन नियंत्रण**
## 8. समस्या निवारण (Troubleshooting)
### Apache शुरू नहीं हो रहा है
यदि Apache शुरू नहीं हो पाता, तो सबसे आम कारण कॉन्फ़िगरेशन त्रुटि होती है।
#### 1. त्रुटि संदेश जांचें
sudo systemctl status apache2
#### 2. कॉन्फ़िगरेशन परीक्षण करें
sudo apachectl configtest
यदि आउटपुट में **"Syntax error"** शामिल है, तो त्रुटि संदेश में सूचीबद्ध पथ या सेटिंग्स को सत्यापित करें।
#### 3. Apache को पुनः शुरू करें
sudo systemctl restart apache2
### सर्वर तक पहुँच नहीं हो रही है
यदि ब्राउज़र में सर्वर तक पहुँच नहीं पा रहे हैं, तो निम्नलिखित बिंदुओं की जाँच करें।
#### 1. फ़ायरवॉल सेटिंग्स जांचें
sudo ufw status
सुनिश्चित करें कि पोर्ट **80** और **443** की अनुमति दी गई है।
#### 2. Apache स्थिति जांचें
sudo systemctl status apache2
#### 3. सर्वर IP पता जांचें
hostname -I
### वर्चुअल होस्ट काम नहीं कर रहे हैं
यदि वर्चुअल होस्ट अपेक्षित रूप से कार्य नहीं कर रहे हैं, तो कॉन्फ़िगरेशन को पुनः जाँचें।
#### 1. वर्चुअल होस्ट फ़ाइलें सक्षम हैं, यह पुष्टि करें
ls /etc/apache2/sites-enabled/
यदि आपका `.conf` सूचीबद्ध नहीं है, तो इसे सक्षम करें:
sudo a2ensite example.com.conf sudo systemctl restart apache2
#### 2. होस्टनेम रेज़ॉल्यूशन जांचें
यदि स्थानीय रूप से परीक्षण कर रहे हैं, तो सुनिश्चित करें कि `/etc/hosts` फ़ाइल में निम्नलिखित हो:
127.0.0.1 example.com
#### 3. DocumentRoot पथ जांचें
गलत पथ अक्सर वर्चुअल होस्ट समस्याओं का कारण बनते हैं।
DocumentRoot /var/www/example.com/public_html
### SSL प्रमाणपत्र समस्याएँ
#### 1. HTTPS काम नहीं कर रहा है
SSL सक्षम है, यह पुष्टि करें:
sudo apachectl -M | grep ssl
यदि आवश्यक हो तो सक्षम करें:
sudo a2enmod ssl sudo systemctl restart apache2
#### 2. प्रमाणपत्र की समाप्ति हो गई है
sudo certbot renew
#### 3. लेट्स एनक्रिप्ट सत्यापन विफल हो जाता है
HTTP सत्यापन के लिए पोर्ट 80 खुला होना आवश्यक है।
sudo ufw allow 80/tcp sudo systemctl restart apache2
### धीमी वेबसाइट प्रदर्शन
#### 1. सर्वर लोड की जाँच करें
top
#### 2. अपाचे लॉग्स की समीक्षा करें
sudo tail -f /var/log/apache2/access.log
#### 3. कैश सेटिंग्स की पुष्टि करें
यह सुनिश्चित करें कि `mod_expires`, `mod_cache`, और `mod_deflate` सक्षम हैं।
### अनुमति त्रुटियाँ (403 निषिद्ध)
यह त्रुटि आमतौर पर गलत फ़ाइल या निर्देशिका अनुमतियों को इंगित करती है।
#### 1. निर्देशिका स्वामित्व की जाँच करें
sudo chown -R www-data:www-data /var/www/example.com
#### 2. निर्देशिका अनुमतियों की जाँच करें
sudo chmod -R 755 /var/www/example.com
### त्रुटि लॉग निगरानी
समस्या निवारण के दौरान हमेशा त्रुटि लॉग्स की निगरानी करें:
sudo tail -f /var/log/apache2/error.log “`
सारांश
इस खंड में आपके उबंटू वेब सर्वर के साथ सामान्य समस्याओं के निवारण के तरीकों को प्रदान किया गया है।
मुख्य बिंदु:
- अपाचे स्टार्टअप त्रुटियाँ और कॉन्फ़िगरेशन जाँचें
- फ़ायरवॉल और नेटवर्क-संबंधित समस्याएँ
- वर्चुअल होस्ट कॉन्फ़िगरेशन समस्याएँ
- एसएसएल प्रमाणपत्र त्रुटियाँ और नवीकरण
- प्रदर्शन और अनुमति समस्या निवारण
9. सारांश
इस लेख में, हमने अपाचे का उपयोग करके उबंटू पर एक पूर्ण वेब सर्वर वातावरण बनाने की व्याख्या की है, साथ ही सुरक्षा वृद्धि, प्रदर्शन अनुकूलन, और समस्या निवारण तकनीकों के साथ।
इस गाइड का पालन करके, आप स्थिर, सुरक्षित, और उच्च-प्रदर्शन वेब सर्वर चला सकते हैं जो व्यक्तिगत परियोजनाओं और व्यवसाय-ग्रेड अनुप्रयोगों दोनों के लिए उपयुक्त है।
✔ इस गाइड में कवर किए गए मुख्य बिंदु
- उबंटू इंस्टॉल करना और प्रारंभिक सिस्टम कॉन्फ़िगरेशन करना
- अपाचे इंस्टॉल करना और कॉन्फ़िगर करना
- एकाधिक वेबसाइटों का प्रबंधन करने के लिए वर्चुअल होस्ट सेटअप करना
- लेट्स एनक्रिप्ट से मुफ्त एसएसएल प्रमाणपत्रों का उपयोग करके HTTPS सक्षम करना
- सर्वर सुरक्षा बढ़ाना (यूएफडब्ल्यू, एसएसएच कठोरकरण, अपाचे सेटिंग्स)
- प्रदर्शन सुधारना (कैशिंग, संपीड़न, एमपीएम ट्यूनिंग)
- सर्वर संचालन के दौरान सामान्य समस्याओं का समस्या निवारण
✔ इस गाइड को पूरा करने के बाद आप क्या प्राप्त कर सकते हैं
- एक ही उबंटू सर्वर पर एकाधिक वेबसाइटें होस्ट करना
- आधुनिक एसएसएल/टीएलएस का उपयोग करके सुरक्षित संचार सुनिश्चित करना
- कैशिंग और संपीड़न का उपयोग करके साइट गति और विश्वसनीयता सुधारना
- अपाचे लॉग्स और सिस्टम टूल्स का उपयोग करके समस्याओं का त्वरित निदान और समाधान करना
✔ अनुशंसित अगले कदम
- पूर्ण लैम्प वातावरण बनाने के लिए पीएचपी और मायएसक्यूएल/मारियाडीबी इंस्टॉल करें
- वर्डप्रेस या किसी अन्य सीएमएस को तैनात करें
- स्वचालित बैकअप समाधान लागू करें
- क्लाउड सेवाओं का उपयोग करने पर विचार करें (एडब्ल्यूएस, जीसीपी, एज़्योर, आदि)
उचित कॉन्फ़िगरेशन और रखरखाव के साथ, एक उबंटू वेब सर्वर दीर्घकालिक स्थिरता और उत्कृष्ट प्रदर्शन प्रदान कर सकता है।
हम आशा करते हैं कि यह गाइड आपको एक विश्वसनीय और सुरक्षित सर्वर वातावरण बनाने में मदद करेगा।



