Apache के साथ एक सुरक्षित और उच्च-प्रदर्शन Ubuntu वेब सर्वर कैसे बनाएं (पूर्ण गाइड)

.## 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 को वेब सर्वर के रूप में चलाने के लिए निम्नलिखित न्यूनतम विनिर्देश की सिफ़ारिश की जाती है:

ItemMinimum RequirementsRecommended Requirements
OSUbuntu 22.04 LTSUbuntu 22.04 LTS
CPU1GHz or higher2GHz or higher
Memory512MB2GB or higher
Storage10GB or more20GB or more
NetworkInternet connectionHigh-speed connection recommended

Ubuntu डाउनलोड करना और स्थापित करना

Ubuntu को आधिकारिक वेबसाइट (https://ubuntu.com/download/server) से डाउनलोड किया जा सकता है। ISO फ़ाइल डाउनलोड करें और इसे VirtualBox या VMware जैसे वर्चुअल मशीन में, या समर्पित सर्वर या VPS पर स्थापित करें।

स्थापना चरण:

  1. स्थापना मीडिया बनाएं
  • USB ड्राइव (Rufus जैसे टूल का उपयोग करके)
  • वर्चुअल मशीन में ISO फ़ाइल माउंट करें
  1. स्थापना विज़ार्ड का पालन करें
  • अपनी पसंदीदा भाषा चुनें
  • नेटवर्क कनेक्टिविटी सत्यापित करें
  • उपयोगकर्ता नाम और पासवर्ड सेट करें
  • SSH सर्वर स्थापित करें (वैकल्पिक—आप बाद में इसे स्थापित कर सकते हैं)
  1. स्थापना पूर्ण होने के बाद रीबूट करें
  2. लॉग इन करें और प्रारंभिक कॉन्फ़िगरेशन शुरू करें

बुनियादी प्रारंभिक सेटअप

स्थापना के बाद, निम्नलिखित प्रारंभिक सेटअप चरणों को पूरा करें।

  1. सभी पैकेज अपडेट करें
    sudo apt update && sudo apt upgrade -y
    

→ सुरक्षा पैच लागू करता है और सॉफ़्टवेयर पैकेजों को अपडेट करता है।

  1. समय क्षेत्र सेट करें
    sudo timedatectl set-timezone Asia/Tokyo
    

→ सिस्टम समय को जापान मानक समय (JST) पर सेट करता है।

  1. फ़ायरवॉल सक्षम करें
    sudo ufw enable
    

→ अनधिकृत पहुँच से सिस्टम की रक्षा के लिए फ़ायरवॉल सक्रिय करता है।

  1. 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

कॉन्फ़िगरेशन फ़ाइल की सामग्री:

ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html

<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

निम्नलिखित सामग्री जोड़ें:

ServerAdmin admin@test.com ServerName test.com ServerAlias www.test.com DocumentRoot /var/www/test.com/public_html

<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

कॉन्फ़िगरेशन उदाहरण:

ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html

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 = 600

Fail2Ban सक्षम करें:

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

डायरेक्टरी ब्लॉक खोजें और अपडेट करें:

Options -Indexes +FollowSymLinks AllowOverride All Require all granted

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>` ब्लॉक के भीतर निम्नलिखित जोड़ें:

Header always set X-Content-Type-Options “nosniff” Header always set X-XSS-Protection “1; mode=block” Header always set X-Frame-Options “SAMEORIGIN” Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains”

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` में निम्नलिखित जोड़ें:

.

ExpiresActive On ExpiresDefault “access plus 1 month” ExpiresByType image/jpg “access plus 1 year” ExpiresByType image/jpeg “access plus 1 year” ExpiresByType image/png “access plus 1 year” ExpiresByType text/css “access plus 1 month” ExpiresByType application/javascript “access plus 1 month”

Apache को पुनः शुरू करें:

sudo systemctl restart apache2

### `mod_cache` सक्षम करें (सर्वर कैश)

sudo a2enmod cache cache_disk sudo systemctl restart apache2

`/etc/apache2/sites-available/example.com.conf` में निम्नलिखित जोड़ें:

CacheEnable disk / CacheRoot /var/cache/apache2/mod_cache_disk CacheDefaultExpire 86400

Apache को पुनः शुरू करें:

sudo systemctl restart apache2

### संपीड़न (Compression) सक्षम करें



`mod_deflate` का उपयोग करके वेबसाइट डेटा को संपीड़ित करें और ट्रांसफ़र आकार को कम करें।



#### `mod_deflate` सक्षम करें

sudo a2enmod deflate sudo systemctl restart apache2

`/etc/apache2/sites-available/example.com.conf` में निम्नलिखित जोड़ें:

AddOutputFilterByType DEFLATE text/html text/plain text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE image/svg+xml

Apache को पुनः शुरू करें:

sudo systemctl restart apache2

### संसाधन सीमित करना (Resource Limiting)



भारी ट्रैफ़िक या संभावित दुर्भावनापूर्ण एक्सेस के लिए तैयार होने हेतु, Apache मॉड्यूल का उपयोग करके **संसाधन सीमाएँ** सेट करें।



#### `mod_ratelimit` सक्षम करें

sudo a2enmod ratelimit sudo systemctl restart apache2

`/etc/apache2/sites-available/example.com.conf` में निम्नलिखित जोड़ें:

SetOutputFilter RATE_LIMIT SetEnv rate-limit 200

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 सक्षम करना
  • सर्वर सुरक्षा बढ़ाना (यूएफडब्ल्यू, एसएसएच कठोरकरण, अपाचे सेटिंग्स)
  • प्रदर्शन सुधारना (कैशिंग, संपीड़न, एमपीएम ट्यूनिंग)
  • सर्वर संचालन के दौरान सामान्य समस्याओं का समस्या निवारण

✔ इस गाइड को पूरा करने के बाद आप क्या प्राप्त कर सकते हैं

  • एक ही उबंटू सर्वर पर एकाधिक वेबसाइटें होस्ट करना
  • आधुनिक एसएसएल/टीएलएस का उपयोग करके सुरक्षित संचार सुनिश्चित करना
  • कैशिंग और संपीड़न का उपयोग करके साइट गति और विश्वसनीयता सुधारना
  • अपाचे लॉग्स और सिस्टम टूल्स का उपयोग करके समस्याओं का त्वरित निदान और समाधान करना

✔ अनुशंसित अगले कदम

  • पूर्ण लैम्प वातावरण बनाने के लिए पीएचपी और मायएसक्यूएल/मारियाडीबी इंस्टॉल करें
  • वर्डप्रेस या किसी अन्य सीएमएस को तैनात करें
  • स्वचालित बैकअप समाधान लागू करें
  • क्लाउड सेवाओं का उपयोग करने पर विचार करें (एडब्ल्यूएस, जीसीपी, एज़्योर, आदि)

उचित कॉन्फ़िगरेशन और रखरखाव के साथ, एक उबंटू वेब सर्वर दीर्घकालिक स्थिरता और उत्कृष्ट प्रदर्शन प्रदान कर सकता है।
हम आशा करते हैं कि यह गाइड आपको एक विश्वसनीय और सुरक्षित सर्वर वातावरण बनाने में मदद करेगा।

年収訴求