Apache සමඟ ආරක්ෂිත සහ ඉහළ කාර්ය සාධන Ubuntu වෙබ් සේවාදායකයක් ගොඩනැගීම (සම්පූර්ණ මාර්ගෝපදේශය)

目次

1. හැඳින්වීම

යුබුන්ටු වෙබ් සේවාදායකයක් යනු කුමක්ද?

වෙබ් සේවාදායකයක් යනු අන්තර්ජාලය හරහා වෙබ් අඩවි ලබා දෙන පද්ධතියකි. ජනප්‍රිය වෙබ් සේවාදායක මෘදුකාංගවලට Apache, Nginx, සහ LiteSpeed ඇතුළත් වන නමුත් යුබුන්ටුහිදී වඩාත් භාවිතා වන විකල්පය Apache යි.
යුබුන්ටු ලාභ සහිත, ස්ථාවර, සහ ආරම්භ මූලාශ්‍ර වන අතර, එය පුද්ගලයින් සහ සමාගම් අතර ජනප්‍රියයි. එය විශේෂයෙන් LAMP පරිසර (Linux, Apache, MySQL/MariaDB, PHP) ක්‍රියාත්මක කිරීම සඳහා සුදුසුයි, එය බොහෝ වෙබ් අඩවි සහ යෙදුම් බලගැන්වීම් කරයි.

මෙම ලිපිය කා සඳහාද?

මෙම මාර්ගෝපදේශය පළමු වරට වෙබ් සේවාදායකයක් ගොඩනඟන ආරම්භකයින් සඳහා සකස් කර ඇත. එය යුබුන්ටුහි වෙබ් සේවාදායකයක් ආරම්භ කරන්නේ කෙසේද, Apache ස්ථාපනය කරන්නේ කෙසේද, වර්චුවල් හෝස්ට් සහ SSL සහතිකපත් සකර්ණ කරන්නේ කෙසේද, සහ ඔප්ටිමයිසේෂන් සහ ආරක්ෂාවේ වැඩිදියුණු කිරීම් ක්‍රියාත්මක කරන්නේ කෙසේද යන්න පැහැදිලි කරයි.

ඔබ ඉගෙන ගන්නා දේ

  • යුබුන්ටුහි වෙබ් සේවාදායකයක් ගොඩනඟන්නේ කෙසේද (Apache ස්ථාපනය සහ සකර්ණය)
  • වර්චුවල් හෝස්ට් සකර්ණ කරන්නේ සහ බහු වෙබ් අඩවි කළමනාකරණය කරන්නේ කෙසේද
  • Let’s Encrypt සමඟ නොමිලේ SSL ස්ථාපනය කරන්නේ කෙසේද
  • ආරක්ෂාවේ ශක්තිමත් කිරීම සහ කාර්ය සාධන ඔප්ටිමයිසේෂන් යෙදීම
  • සුලබ ගැටලු විසඳීමේ පියවර සහ විසඳුම්

2. යුබුන්ටු ස්ථාපනය කිරීම සහ මුල් සකර්ණය

අවශ්‍ය පද්ධති ප්‍රමාණන

යුබුන්ටු වෙබ් සේවාදායකයක් ලෙස ක්‍රියාත්මක කිරීම සඳහා, පහත අවශ්‍යතාවයන් නිර්දේශ කෙරේ:

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

යුබුන්ටු බාගත කිරීම සහ ස්ථාපනය

යුබුන්ටු නිල වෙබ් අඩවියෙන් (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

මෙම පියවර අවසන් කළ පසු, ඔබේ යුබුන්ටු සේවාදායකය සම්පූර්ණ ක්‍රියාකාරී වෙබ් සේවාදායකයක් ලෙස සකර්ණ කිරීමට සූදානම් වේ.

3. Apache ස්ථාපනය සහ සකර්ණය

Apache යනු කුමක්ද?

Apache (Apache HTTP Server) යනු ස්ථාවරභාවය, ව්‍යාප්තිය, සහ ශක්තිමත් ආරක්ෂා විශේෂාංග සඳහා ප්‍රසිද්ධ ආරම්භ මූලාශ්‍ර වෙබ් සේවාදායකයකි. ලෝකයේ සේවාදායකවලින් ආසන්න වශයෙන් 30% Apache භාවිතා කරයි.

ප්‍රධාන විශේෂාංග:

  • නොමිලේ සහ ආරම්භ මූලාශ්‍ර
  • මොඩියුලර් ආකෘතිය පහසු ව්‍යාප්ති සඳහා
  • SSL/TLS සහාය HTTPS සකර්ණය සඳහා
  • වර්චුවල් හෝස්ට් බහු වෙබ් අඩවි හෝස්ටිං සඳහා

Apache ස්ථාපනය

යුබුන්ටුහිදී, 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 දැන් වෙබ් ඉල්ලීම් භාවිතා කිරීම ආරම්භ කරයි.

ස්වයංක්‍රීය ආරම්භය සක්‍රිය කරන්න

final 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 නිසි ලෙස ක්‍රියා කරයි.



### ගිනුම් බාධකය (Firewall) සැකසීම



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. වර්චුවල් හෝස්ට් (Virtual Hosts) සැකසීම (බහු අඩවි කළමනාකරණය)



### වර්චුවල් හෝස්ට් යනු කුමක්ද?



වර්චුවල් හෝස්ට් ඔබට **එකම 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. නාමාවලියේ අයිතිය වෙනස් කරන්න



`www-data` ලෙස අයිතිකරු සකස් කර Apache ගොනු කියවීමට හැකි බවට සහතික කරන්න:

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 සඳහා Virtual host වින්‍යාසය

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. Virtual Hosts සක්‍රිය කිරීම



වින්‍යාස ගොනු නිර්මාණය කිරීමෙන් පසු, `a2ensite` භාවිතා කරමින් virtual hosts සක්‍රිය කරන්න:

sudo a2ensite example.com.conf sudo a2ensite test.com.conf

#### Apache වින්‍යාසය පරීක්ෂා කිරීම



ව්‍යාකරණ දෝෂ සඳහා පරීක්ෂා කරන්න:

sudo apachectl configtest

උදාහරණ ප්‍රතිදානය:

Syntax OK

දෝෂ නොමැති නම්, Apache නැවත ආරම්භ කරන්න:

sudo systemctl restart apache2

### 6. දේශීයව සත්‍යාපනය කිරීම (hosts ගොනුව සංස්කරණය කිරීම)



දේශීයව virtual hosts පරීක්ෂා කිරීමට, ඔබේ PC හි `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. Virtual Hosts සඳහා ගැටලු විසඳීම



virtual hosts නිවැරදිව ක්‍රියා නොකරන්නේ නම්, පහත සොයන්න:



#### 1. Apache දෝෂ ලොග පරීක්ෂා කිරීම

sudo tail -f /var/log/apache2/error.log

#### 2. වින්‍යාස ගොනු සක්‍රිය බව තහවුරු කිරීම

ls /etc/apache2/sites-enabled/

නිවැරදි `.conf` ගොනු ලැයිස්තුගත වී ඇත්නම්, virtual hosts සක්‍රියය.



#### 3. Apache පෝට් සැකසුම් පරීක්ෂා කිරීම



පෝට් 80 (HTTP) වින්‍යාසගත බව තහවුරු කරන්න:

sudo nano /etc/apache2/ports.conf

පහත පේළිය පවතින බව සහතික කරන්න:

Listen 80

### සාරාංශය



මෙම කොටස **Ubuntu හි Apache හි virtual hosts වින්‍යාස කිරීම කෙසේද** තේරුම් කළේය.  
ප්‍රධාන ඉගෙනුම්:



* **virtual hosts හි සංකල්පය සහ අරමුණ**
* **එක් එක් අඩවිය සඳහා නාවිකාගාර නිර්මාණය කිරීම**
* **virtual host වින්‍යාස ගොනු නිර්මාණය සහ සක්‍රිය කිරීම**
* **hosts ගොනුව භාවිතා කරමින් දේශීය පරීක්ෂණ ක්‍රම**
* **පොදු ගැටලු විසඳීම**



## 5. SSL/TLS හඳුන්වා දීම (HTTPS සක්‍රිය කිරීම)



### SSL/TLS කුමක්ද?



SSL (Secure Sockets Layer) සහ TLS (Transport Layer Security) යනු ඉන්ටර්නෙට් හරහා ආරක්ෂිත සන්නිවේදන සහතික කිරීමට භාවිතා වන ගුප්තකේතන තාක්ෂණයන්ය.



#### SSL/TLS සක්‍රිය කිරීමේ වාසි



✅ **සන්නිවේදනය ගුප්තකේතනය කරයි** (දත්ත අවුස්සා ගැනීම හෝ වෙනස් කිරීමේ අවදානම අඩු කරයි)  
✅ **Google SEO ශ්‍රේණිගත කිරීම වැඩි දියුණු කරයි** (HTTPS අඩවි ප්‍රමුඛ වේ)  
✅ **බ්‍රව්සර් ආරක්ෂාව ඇඟවීම් වළක්වයි** (HTTP අඩවි "Not Secure" පෙන්වයි)  
✅ **ලොගින් අක්තපත්‍ර සහ මාර්ගගත ගනුදෙනු ආරක්ෂා කරයි**



අද වන විට, **TLS (TLS 1.2 / 1.3)** යෝජනා වන අතර, පැරණි SSL සංස්කරණ (SSL 3.0 සහ ඊට පෙර) ප්‍රතික්ෂේප වී ඇත.



### Let’s Encrypt සමඟ නොමිලේ SSL සහතිකයක් ලබා ගැනීම



Let’s Encrypt යනු නොමිලේ SSL සහතික ලබා දෙන Certificate Authority (CA) එකකි.  
`certbot` භාවිතා කරමින්, ඔබට පහසුවෙන් සහතිකයක් නිකුත් කළ හැකි අතර Apache සමඟ එය වින්‍යාස කළ හැක.



#### Let’s Encrypt Client (Certbot) ස්ථාපනය කිරීම



`certbot`, නිල Let’s Encrypt client ස්ථාපනය කරන්න:

sudo apt update sudo apt install certbot python3-certbot-apache -y

#### Apache SSL වින්‍යාසය ස්වයංක්‍රීය කිරීම



ඔබට පහත command එක භාවිතා කරමින් Apache ස්වයංක්‍රීයව වින්‍යාස කළ හැක:

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

#### Fail2Ban ස්ථාපනය කරන්න



Fail2Ban ඔබේ සේවාදායකය ආරක්ෂා කරයි, නැවත නැවත SSH ලොග් ඉන් අසාර්ථකතා උත්සාහ කරන IP ලිපින තාවකාලිකව තහනම් කිරීමෙන්.

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

### Apache දෘඪ කිරීම



#### Apache අනුවාද තොරතුරු සඟවන්න

sudo nano /etc/apache2/conf-available/security.conf

පහත සැකසුම් වෙනස් කරන්න:

ServerTokens Prod ServerSignature Off

වෙනස්කම් අයදුම් කරන්න:

sudo systemctl restart apache2

#### නාමාවලිය ලැයිස්තුගත කිරීම අක්‍රිය කරන්න

sudo nano /etc/apache2/apache2.conf

නාමාවලිය බ්ලොක් සොයාගෙන යාවත්කාලීන කරන්න:

Options -Indexes +FollowSymLinks AllowOverride All Require all granted

Apache නැවත ආරම්භ කරන්න:

sudo systemctl restart apache2

#### අවශ්‍ය නොවන Apache මොඩියුල අක්‍රිය කරන්න

sudo a2dismod autoindex sudo a2dismod status sudo systemctl restart apache2

### ආරක්ෂක ශීර්ෂක එකතු කිරීම



ආරක්ෂක ශීර්ෂක ඔබේ වෙබ් අඩවිය cross-site scripting සහ clickjacking වැනි ප්‍රහාර වලින් ආරක්ෂා කරයි.



#### `mod_headers` සක්‍රිය කරන්න

sudo a2enmod headers sudo systemctl restart apache2

#### ආරක්ෂක ශීර්ෂක එකතු කරන්න

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

### දෝෂ නිරාකරණය



#### ෆයර්වෝල් සැකසුම් පරීක්ෂා කරන්න

sudo ufw status

#### දෝෂ සඳහා Apache වින්‍යාසය පරීක්ෂා කරන්න

sudo apachectl configtest

ප්‍රතිඵල උදාහරණය:

Syntax OK

#### පෝට් වෙනස් කිරීමෙන් පසු SSH හරහා සම්බන්ධ වීමට නොහැක



පෝට් වෙනස් කිරීමෙන් පසු SSH සම්බන්ධ නොවන්නේ නම්, සම්බන්ධ වන විට නව පෝට් නියම කරන්න:

ssh -p 2222 user@server-ip

### සාරාංශය



මෙම කොටස **ඔබේ වෙබ් සේවාදායකයේ ආරක්ෂාව ශක්තිමත් කිරීම** පිළිබඳ විස්තර කරයි.  
ප්‍රධාන ග්‍රහණයන්:



* **UFW ෆයර්වෝල් නීති සැකසීම**
* **SSH ආරක්ෂා කිරීම (පෝට් වෙනස් කිරීම, Fail2Ban)**
* **Apache ආරක්ෂක දෘඪ කිරීම (අනුවාද තොරතුරු සඟවීම, ලැයිස්තුගත කිරීම අක්‍රිය කිරීම)**
* **ආරක්ෂක ශීර්ෂක එකතු කිරීම**



## 7. කාර්ය සාධන අභිලක්ෂණය



### Apache සකස් කිරීම



පෙරනිමි Apache වින්‍යාසය ඉතා හොඳ කාර්ය සාධනය ලබා නොදිය හැක. පහත සකස්කම් අයදුම් කිරීමෙන්, ඔබට **ඉතා වැඩි කාර්ය සාධනය** ලබා ගත හැක.



#### MPM (බහු-සැකසුම් මොඩියුල) අනුකූල කිරීම



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

### KeepAlive සක්‍රිය කරන්න



KeepAlive (ස්ථාවර සම්බන්ධතා) ගනුදෙනුකරුවන්ට පවතින සම්බන්ධතා නැවත භාවිතා කිරීමට ඉඩ දේ, ඉල්ලීම් පිරිවැය අඩු කරයි.



වින්‍යාස ගොනුව සංස්කරණය කරන්න:

sudo nano /etc/apache2/apache2.conf

පහත සැකසුම් තහවුරු කරන්න:

KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5

Apache නැවත ආරම්භ කරන්න:

sudo systemctl restart apache2

### කැෂ් භාවිතය



බ්‍රවුසර කැෂ් සහ සේවාදායක-පාර්ශ්වික කැෂ් භාවිතයෙන්, ඔබට **අවශ්‍ය නොවන ඉල්ලීම් අඩු කර, ප්‍රතිචාර වේගය ඉතා වැඩි කර** ගත හැක.



#### `mod_expires` (බ්‍රවුසර කැෂ්) සක්‍රිය කරන්න

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

### සංඛ්‍යාත කිරීම සක්‍රිය කරන්න

`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

### සම්පත් සීමා කිරීම

බර ගමන් තදබදය හෝ හැකියාවක් ඇති අහිතකර ප්‍රවේශය සඳහා, 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

### කාර්ය සාධන ගැටළු නිරාකරණය

#### 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. නිරාකරණය

### 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. Let’s Encrypt සත්‍යාපනය අසාර්ථක වේ



HTTP සත්‍යාපනය සඳහා පෝට් 80 විවෘතව තිබිය යුතුය.

sudo ufw allow 80/tcp sudo systemctl restart apache2

### මන්දගාමී වෙබ් අඩවි කාර්ය සාධනය



#### 1. සේවාදායක භාරය පරීක්ෂා කරන්න

top

#### 2. Apache ලොග් පරීක්ෂා කරන්න

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 “`

සාරාංශය

මෙම කොටස ඔබගේ Ubuntu වෙබ් සේවාදායකයේ සාමාන්‍ය ගැටළු විසඳුම් ක්‍රම ලබා දී ඇත.
ප්‍රධාන කරුණු:

  • Apache ආරම්භක දෝෂ සහ සැකසුම් පරීක්ෂා
  • ගිනුම් බාධක (Firewall) සහ ජාල-සම්බන්ධ ගැටළු
  • වර්චුවල් හෝස්ට් සැකසුම් ගැටළු
  • SSL සහතික දෝෂ සහ නවීකරණ
  • කාර්ය සාධනය සහ අවසර ගැටළු විසඳුම්

9. සාරාංශය

මෙම ලිපියේ, අපි Apache භාවිතා කර Ubuntu මත සම්පූර්ණ වෙබ් සේවාදායක පරිසරයක් ගොඩනැගීම, ආරක්ෂා වැඩිදියුණු කිරීම, කාර්ය සාධන අනුකූල කිරීම, සහ ගැටළු විසඳුම් තාක්ෂණයන් පිළිබඳ විස්තර කළෙමු.

මෙම මාර්ගෝපදේශය අනුගමනය කිරීමෙන්, ඔබට ස්ථාවර, ආරක්ෂිත, සහ ඉහළ කාර්ය සාධන වෙබ් සේවාදායකයක් ක්‍රියාත්මක කළ හැක, එය පුද්ගලික ව්‍යාපෘති සහ ව්‍යාපාරික-පරිමාණ යෙදුම් සඳහා සුදුසු වේ.

✔ මෙම මාර්ගෝපදේශයේ ආවරණය කළ ප්‍රධාන කරුණු

  • Ubuntu ස්ථාපනය සහ පළමු පද්ධති සැකසුම් කිරීම
  • Apache ස්ථාපනය සහ සැකසුම් කිරීම
  • වර්චුවල් හෝස්ට් සැකසීම බහු වෙබ් අඩවි කළමනාකරණය සඳහා
  • Let’s Encrypt වෙතින් නොමිලේ SSL සහතික භාවිතා කර HTTPS සක්‍රිය කිරීම
  • සේවාදායක ආරක්ෂාව වැඩිදියුණු කිරීම (UFW, SSH ශක්තිමත් කිරීම, Apache සැකසුම්)
  • කාර්ය සාධනය වැඩිදියුණු කිරීම (කෑෂ්, සංකෝචනය, MPM ටියුනින්ග්)
  • සේවාදායක ක්‍රියාකාරීත්වයේ සාමාන්‍ය ගැටළු විසඳුම්

✔ මෙම මාර්ගෝපදේශය අවසන් කිරීමෙන් ඔබට ලැබෙන ප්‍රතිඵල

  • එකම Ubuntu සේවාදායකයේ බහු වෙබ් අඩවි හෝස්ට් කිරීම
  • නවීන SSL/TLS භාවිතා කර ආරක්ෂිත සන්නිවේදනය තහවුරු කිරීම
  • කෑෂ් සහ සංකෝචනය භාවිතා කර අඩවි වේගය සහ විශ්වාසනීයතාවය වැඩිදියුණු කිරීම
  • Apache ලොග් සහ පද්ධති මෙවලම් භාවිතා කර ගැටළු ඉක්මනින් හඳුනාගෙන විසඳීම

✔ නිර්දේශිත ඊළඟ පියවර

  • සම්පූර්ණ LAMP පරිසරයක් ගොඩනැගීමට PHP සහ MySQL/MariaDB ස්ථාපනය කරන්න
  • WordPress හෝ වෙනත් CMS එකක් නිකුත් කරන්න
  • ස්වයංක්‍රීය බැකප් විසඳුම් ක්‍රියාත්මක කරන්න
  • වලාකුළු සේවා (AWS, GCP, Azure, ආදිය) භාවිතා කිරීම ගැන සලකා බලන්න

සුදුසු සැකසුම් සහ නඩත්තු සමඟ, Ubuntu වෙබ් සේවාදායකය දිගුකාලීන ස්ථාවරතාවය සහ විශිෂ්ට කාර්ය සාධනය ලබා දිය හැක. මෙම මාර්ගෝපදේශය ඔබට විශ්වාසනීය සහ ආරක්ෂිත සේවාදායක පරිසරයක් ගොඩනැගීමට උපකාරී වේ යැයි අපි බලාපොරොත්තු වෙමු.

侍エンジニア塾