Buong Gabay sa Ubuntu Web Server: Apache + SSL + Pag-optimize [Para sa Mga Baguhan]

目次

1. Panimula

Ano ang Ubuntu Web Server?

Ang web server ay isang sistema na naghahatid ng mga website sa internet. Sa mga web server software, kinabibilangan ng Apache, Nginx, LiteSpeed at iba pa, ngunit ang pinaka-layuning ginagamit sa Ubuntu ay ang Apache.
Ubuntu ay magaan, matatag, at open source kaya mula sa mga indibidwal hanggang sa mga kumpanya, malawak na ito ay ginagamit. Lalo na madali itong bumuo ng LAMP environment (Linux, Apache, MySQL/MariaDB, PHP), na angkop para sa maraming website at aplikasyon.

Sino ang Mga Target na Mambabasa ng Artikul na Ito

Ang artikulong ito ay para sa mga baguhan na nagsisimulang bumuo ng web server. Gamit ang Ubuntu upang itayo ang web server, ipakilala ang Apache, i-set up ang virtual host at SSL certificate habang tinatalakay nang detalyado ang mga paraan ng pag-optimize at pagpalakas ng seguridad.

Ang Maaari Mong Matutunan sa Artikul na Ito

  • Paano bumuo ng web server sa Ubuntu (Pagpapakilala at basic na setting ng Apache)
  • Pag-set up ng virtual host at pag-ooperate ng maraming site
  • Pagpapakilala ng libreng SSL gamit ang Let’s Encrypt
  • Pagpalakas ng seguridad at pag-optimize ng web server
  • Mga karaniwang troubleshooting at mga solusyon nito

2. Pag-install at Initial na Pag-set up ng Ubuntu

Mga Kinakailangang System Requirements

Upang gamitin ang Ubuntu bilang web server, inirerekomenda ang mga sumusunod na minimum na spesipikasyon.

ItemMinimum na KinakailanganInirerekomendang Kinakailangan
OSUbuntu 22.04 LTSUbuntu 22.04 LTS
CPU1GHz o higit pa2GHz o higit pa
Memory512MB2GB o higit pa
Storage10GB o higit pa20GB o higit pa
NetworkKoneksyon sa InternetInirerekomenda ang mabilis na linya

Ang Pag-download at Pag-install ng Ubuntu

Ang Ubuntu ay maaaring i-download mula sa opisyal na site (https://ubuntu.com/download/server). Kunin ang ISO file, at gumawa ng virtual environment gamit ang VirtualBox o VMware, o i-install sa dedikadong server o VPS.

Mga Hakbang sa Pag-install:

  1. Paglikha ng Installation Media
  • USB memory (gamit ang tool tulad ng Rufus)
  • Mount ang ISO file sa virtual machine
  1. Sunod ang Installation Wizard sa pag-set up
  • I-set ang wika sa “Japanese”
  • Subukan ang koneksyon sa network
  • I-set ang username at password
  • I-install ang SSH server (maaari ring pagkatapos)
  1. Matapos ang set up ng OS, i-restart
  2. Mag-login at simulan ang initial na pag-set up

Basic na Initial na Pag-set up

Ang mga initial na pag-set up na dapat gawin kaagad pagkatapos ng pag-install ay ipinapakilala rito.

  1. Pag-update ng mga Package
   sudo apt update && sudo apt upgrade -y

→ Nag-u-update ng security patches ng system at mga software.

  1. Pag-set up ng Time Zone
   sudo timedatectl set-timezone Asia/Tokyo

→ I-set sa oras ng Japan (JST).

  1. Pag-activate ng Firewall
   sudo ufw enable

→ Upang pigilan ang hindi awtorisadong access, i-activate ang firewall.

  1. Pag-set up ng SSH (para sa remote management)
  • Subukan kung active ang SSH
    sudo systemctl status ssh
  • Kung hindi active, i-activate
    sudo systemctl enable --now ssh

Kapag natapos na ang initial na pag-set up na ito, handa na ang Ubuntu server para sa seryosong paggamit bilang web server.

3. Ang Pag-install at Pangunahing Kagustuhan ng Apache

Ano ang Apache?

Apache (formal na pangalan: Apache HTTP Server) ay isang open-source na web server software, at dahil sa mataas na katatagan, kakayahang palawakin, at seguridad, nag-ooperate ng mga server sa buong mundo ang humigit-kumulang 30% gamit ang Apache.

Pangunahing Mga Tampok:

  • Maaaring gamitin nang libre (open source)
  • Modular na istraktura na madaling palawakin
  • Suporta sa SSL/TLS na nagbibigay-daan sa pagiging posible ng HTTPS
  • Sa pamamagitan ng Virtual Host, maaaring operahin ang maraming site

Ang Pag-install ng Apache

Sa Ubuntu, ang Apache ay madaling mai-install gamit ang package management system apt.

I-install ang Apache

I-execute ang sumusunod na command upang i-install ang Apache.

sudo apt update
sudo apt install apache2 -y

Suriin kung matagumpay ang pag-install

Pagkatapos ng pag-install, maaari mong suriin ang bersyon ng Apache gamit ang sumusunod na command.

apache2 -v

Halimbawa ng output:

Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-07-01T12:34:56

Kung ipapakita ang impormasyong ito ng bersyon, normal na naka-install na ito.

Ang Pagsisimula, Pagpapatigil, at Pag-restart ng Apache

Ang Apache ay pinapamahalaan gamit ang systemctl command.

I-start ang Apache

sudo systemctl start apache2

Sa ganitong paraan, magsisimula ang Apache at handa nang pagproseso ng mga web request.

I-set ang Apache sa awtomatikong pagsisimula

sudo systemctl enable apache2

Suriin ang kalagayan ng Apache

Upang suriin kung normal na gumagana ang Apache, i-execute ang sumusunod na command.

sudo systemctl status apache2

Kung normal na gumagana, ipapakita ang mensaheng katulad nito.

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since ...

I-restart o I-stop ang Apache

Kung nagbago ang setting, gamitin ang sumusunod na command upang i-restart ang Apache.

sudo systemctl restart apache2

Kung nais mong pansamantalang itigil ang Apache, i-execute ang sumusunod na command.

sudo systemctl stop apache2

Ang Pagsusuri ng Pag-gana ng Apache

Upang suriin kung tama ang pag-gana ng Apache, subukan na i-access ang IP address ng server.

1. Suriin ang IP address ng sariling server

hostname -I

O kaya, i-execute ang sumusunod na command upang suriin ang external IP.

curl ifconfig.me

2. Suriin sa Web Browser

Ipasok ang sumusunod sa address bar ng browser.

http://<IP address ng server>/

O kaya, sa local environment:

http://localhost/

Dapat na ipakita ang default page ng Apache (/var/www/html/index.html). Halimbawa ng default display page:

Apache2 Ubuntu Default Page
It works!

Kung ipapakita ang mensaheng ito, normal na gumagana ang Apache.

Ang Setting ng Firewall

Sa Ubuntu, gumagamit ng UFW (Uncomplicated Firewall) upang i-set ang firewall.
Pagkatapos mag-install ng Apache, maaaring na-block ang access mula sa labas para sa HTTP (port 80) at HTTPS (port 443).

I-set ang Firewall Rules para sa Apache

sudo ufw allow 'Apache'

O kaya, kung pinapayagan din ang HTTPS, i-execute ang sumusunod na command.

sudo ufw allow 'Apache Full'

Suriin ang kalagayan ng Firewall

sudo ufw status

Halimbawa ng output:

Status: active

To                         Action      From
--                         ------      ----
Apache                     ALLOW       Anywhere
Apache (v6)                ALLOW       Anywhere (v6)

Kung ipapakita ito, pinapayagan na ang komunikasyon ng Apache.

Buod

Hanggang dito, naka-install na ang Apache sa Ubuntu at natapos ang pangunahing kagustuhan.
Pangunahing nilalaman na ipinaliwanag sa artikulong ito:

  • Paraan ng pag-install ng Apache
  • Ang pagsisimula at awtomatikong pagsisimula ng Apache
  • Ang pagsusuri ng pag-gana ng Apache (access sa browser)
  • Ang setting ng firewall
  • Ang pagpapakilala sa pangunahing setting file ng Apache

4. Pagsasadya ng Virtual Host (Pamamahala ng Maramihang Site)

Ano ang Virtual Host?

Ang virtual host ay, mekanismo para sa pagpapatakbo ng maraming domain (o subdomain) sa isang Apache server.
Halimbawa, sa isang server, maaari kang magbigay ng dalawang magkaibang website tulad ng example.com at test.com.

Ang mga uri ng virtual host ay may dalawa sa ibaba.

  1. Name-based Virtual Host (Batay sa Pangalan)
  • Pagpapatakbo ng maraming site sa parehong IP address
  • Karaniwang paraan ng pagpapatakbo ng web server
  1. IP-based Virtual Host (Batay sa IP)
  • Pagbibigay ng magkaibang site para sa magkaibang IP address
  • Kailangan ng maraming network interface sa isang server

Karaniwan, ang Name-based Virtual Host (Virtual Host Batay sa Pangalan) ang ginagamit.

Mga Hakbang sa Pagsasadya ng Virtual Host

1. Lumikha ng Kinakailangang Direktoryo

Upang i-set up ang virtual host, lumikha ng dedikadong direktoryo para sa bawat site.

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

2. Baguhin ang May-ari ng Direktoryo

Upang mabasa ng Apache nang wasto ang mga file, i-set ang may-ari sa 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. Lumikha ng Pansamantalang HTML File

Para sa pagsusuri ng pagtatrabaho, lumikha ng index.html para sa homepage ng bawat website.

echo "<h1>Maligayang pagdating sa example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Maligayang pagdating sa test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html

4. Lumikha ng Config File ng Virtual Host

Ang config file ng virtual host ay nililikha sa loob ng direktoryo /etc/apache2/sites-available/.

Pagsasadya ng Virtual Host para sa example.com

Gumamit ng sumusunod na command upang lumikha at i-edit ang config file.

sudo nano /etc/apache2/sites-available/example.com.conf

Nilalaman ng config file:

<VirtualHost *:80>
    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
</VirtualHost>

Pagsasadya ng Virtual Host para sa test.com

sudo nano /etc/apache2/sites-available/test.com.conf

Idagdag ang sumusunod na nilalaman:

<VirtualHost *:80>
    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
</VirtualHost>

5. I-activate ang Virtual Host

Pagkatapos lumikha ng config file, i-execute ang a2ensite command upang i-activate ang virtual host.

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

I-test ang Config ng Apache

Suriin kung walang error sa syntax.

sudo apachectl configtest

Resulta ng output:

Syntax OK

Kung walang problema, i-restart ang Apache.

sudo systemctl restart apache2

6. Pagsusuri ng Pagtatrabaho sa Lokal (Pag-edit ng hosts File)

Upang suriin kung tama ang pagtatrabaho ng virtual host, i-edit ang hosts file ng lokal na PC.

sudo nano /etc/hosts

Idagdag ang sumusunod na linya:

127.0.0.1 example.com
127.0.0.1 test.com

Pagkatapos i-save, buksan sa browser ang http://example.com/ at suriin na ipapakita ang “Maligayang pagdating sa example.com”. Katulad nito, buksan ang http://test.com/ at kung ipapakita ang “Maligayang pagdating sa test.com”, matagumpay ito.

7. Pagresolba ng Problema

Kung hindi tama ang pagtatrabaho ng virtual host, suriin ang sumusunod.

1. Suriin ang Error Log ng Apache

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

2. Suriin kung Tama ang Pag-activate ng Config File

ls /etc/apache2/sites-enabled/

Kung nakalista nang tama ang .conf file, activated na ang virtual host.

3. Suriin ang Port Config ng Apache

Upang gumana ang virtual host sa port 80 (HTTP), suriin ang /etc/apache2/ports.conf.

sudo nano /etc/apache2/ports.conf

Suriin na may sumusunod na paglalarawan:

Listen 80

Buod

Sa seksyong ito, ipinaliwanag ang paano i-set up ang virtual host ng Apache sa Ubuntu.
Ang natutunan sa artikulong ito:

  • Konsepto at gamit ng virtual host
  • Paglikha ng direktoryo para sa virtual host
  • Paglikha at pag-activate ng config file ng virtual host
  • Paano suriin ang pagtatrabaho sa lokal na kapaligiran
  • Pagresolba ng problema

5. Pagpapatupad ng SSL/TLS (Pagiging HTTPS)

Ano ang SSL/TLS?

Ang SSL (Secure Sockets Layer) at TLS (Transport Layer Security) ay mga teknolohiyang pang-encrypt upang tiyakin ang ligtas na komunikasyon sa internet.

Mga Benepisyo ng Pagpapatupad ng SSL/TLS

Pag-encrypt ng Komunikasyon (Binabawasan ang panganib ng pag-eavesdrop at pagbabago ng data)
Pagpapahusay ng SEO Rating ng Google (Ang mga site na HTTPS ay pinapaboran sa mga resulta ng paghahanap)
Pag-iwas sa Babalang ng Browser (Ang mga site na HTTP ay ipinapakita bilang “Hindi Protektadong Komunikasyon”)
Proteksyon ng Online Payment at Impormasyon sa LoginNgayon, ang TLS (TLS 1.2 / 1.3) ang inirerekomenda, at ang SSL 3.0 o mas luma ay hindi na inirerekomenda.

Kumuha ng Libreng SSL Certificate Gamit ang Let’s Encrypt

Ang Let’s Encrypt ay isang certification authority (CA: Certificate Authority) na nagbibigay ng libreng SSL certificate.certbot gamit upang madaling makuha ang certificate at ilapat sa Apache.

Pag-install ng Let’s Encrypt Client (Certbot)

Unang hakbang, i-install ang certbot (opisyal na client ng Let’s Encrypt).

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

Automatikong SSL Setting ng Apache

Gamit ang Let’s Encrypt, ang certbot --apache command ay awtomatikong nagse-set ng Apache.

sudo certbot --apache -d example.com -d www.example.com

Kapag pinatakbo ang command na ito, susundan ang mga prosesong ito:

  1. Authentication ng Domain (HTTP-01 Challenge)
  2. Pag-issue ng SSL Certificate
  3. SSL Setting ng Apache
  4. Setting ng HTTPS Redirect

Pagsusuri ng SSL Functionality

Bisitahin ang sumusunod na URL upang suriin na aktibo ang HTTPS.

https://example.com/

Kung makikita ang lock icon sa address bar ng browser, matagumpay na ito.

Manwal na SSL Setting sa Apache

Kung hindi gagamit ng certbot --apache, sundin ang mga hakbang na ito para sa manwal na setting.

1. I-activate ang SSL Module ng Apache

sudo a2enmod ssl
sudo systemctl restart apache2

2. Setting ng SSL Virtual Host

Baguhin ang virtual host setting /etc/apache2/sites-available/example.com-le-ssl.conf:

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

Nilalaman ng Setting:

<VirtualHost *:443>
    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
</VirtualHost>

3. I-activate ang Setting at I-restart ang Apache

sudo a2ensite example.com-le-ssl.conf
sudo systemctl restart apache2

Awtomatikong Pag-update ng SSL Certificate

Ang certificate ng Let’s Encrypt ay epektibo lamang ng 90 araw.
Sa pamamagitan ng awtomatikong pag-update, maiiwasan ang manual na pag-update.

1. I-test ang Awtomatikong Pag-update ng Certbot

sudo certbot renew --dry-run

2. Suriin ang Schedule ng Awtomatikong Pag-update ng Certificate

Ang awtomatikong pag-update ng Certbot ay naka-schedule sa /etc/cron.d/certbot.

sudo systemctl list-timers | grep certbot

Troubleshooting ng SSL

1. Hindi Naaplay ang SSL Certificate

Solusyong: I-restart ang Apache at suriin ang setting

sudo systemctl restart apache2
sudo apachectl configtest

2. Nag-expire na ang Validity ng Certificate

Solusyong: Manwal na i-update ang certificate

sudo certbot renew --force-renewal

3. Nabigo ang Authentication ng Let’s Encrypt

Solusyong: Suriin ang Firewall Setting

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

Buod

Sa seksyong ito, inilarawan nang detalyado ang paraan ng pagpapatupad ng libreng SSL gamit ang Let’s Encrypt.
Ang natutunan sa artikulong ito:

  • Basic Knowledge ng SSL/TLS
  • SSL Setting ng Apache Gamit ang Let’s Encrypt
  • Manwal na SSL Setting
  • Awtomatikong Pag-update ng SSL Certificate
  • Troubleshooting ng SSL

6. Pagpapatibay ng Seguridad ng Web Server

Pag-set up ng Firewall (UFW)

Sa Ubuntu, mahalagang gumamit ng UFW (Uncomplicated Firewall) upang i-block ang hindi kinakailangang komunikasyon.

Suriin ang Kasalukuyang Setting ng Firewall

sudo ufw status

I-allow Lamang ang Kinakailangang Port

Salantala, i-block ang lahat ng koneksyon at buksan lamang ang kinakailangang port.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Mga Port na Bubuksan

  • SSH (Port 22)
  sudo ufw allow 22/tcp
  • HTTP (Port 80)
  sudo ufw allow 80/tcp
  • HTTPS (Port 443)
  sudo ufw allow 443/tcp

I-activate ang Firewall

sudo ufw enable

Pagpapatibay ng Seguridad ng SSH

Kung iiwan sa default, madaling maging target ng brute force attack ang SSH, kaya kailangang mag-aplay ng tamang setting.

Baguhin ang Port ng SSH

sudo nano /etc/ssh/sshd_config

Ang mga bahaging papalitan:

Port 2222  # Baguhin mula 22 patungo sa 2222 (anumang numero ng port)
PermitRootLogin no  # Iprohibit ang login bilang root
PasswordAuthentication no  # I-disable ang password authentication (payagan lamang ang SSH key authentication)

Pagkatapos ng pagbabago, i-restart ang SSH:

sudo systemctl restart ssh

Pag-install ng Fail2Ban

Ang Fail2Ban ay isang tool na pansamantalang nagbo-block ng IP address na sumusubok ng hindi awthorizado na login sa SSH.

sudo apt install fail2ban -y

I-edit ang config file:

sudo nano /etc/fail2ban/jail.local

Magdagdag ng sumusunod na setting:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 600

I-activate ang Fail2Ban:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Security Setting ng Apache

Itago ang Impormasyon ng Bersyon

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

Baguhin ang sumusunod na setting:

ServerTokens Prod
ServerSignature Off

I-apply ang setting:

sudo systemctl restart apache2

I-disable ang Paglalahad ng Listahan ng Directory

sudo nano /etc/apache2/apache2.conf

Hanapin ang sumusunod na linya at tanggalin ang Indexes:

<Directory /var/www/>
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

I-apply ang setting:

sudo systemctl restart apache2

I-disable ang Hindi Kinakailangang Apache Module

sudo a2dismod autoindex
sudo a2dismod status
sudo systemctl restart apache2

Pagdaragdag ng Security Header

Upang protektahan ang website, magdagdag ng angkop na security header.

I-activate ang mod_headers

sudo a2enmod headers
sudo systemctl restart apache2

I-set up ang Header

sudo nano /etc/apache2/sites-available/example.com.conf

Magdagdag ng sumusunod sa loob ng <VirtualHost>:

<IfModule mod_headers.c>
    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"
</IfModule>

I-apply ang setting:

sudo systemctl restart apache2

Troubleshooting

Suriin ang Setting ng Firewall

sudo ufw status

Suriin ang Error sa Setting ng Apache

sudo apachectl configtest

Output:

Syntax OK

Kung Hindi Makakonekta sa SSH

Kung hindi makakonekta sa SSH pagkatapos baguhin ang port, ikonekta gamit ang bagong port tulad ng sumusunod.

ssh -p 2222 user@server-ip

Buod

Sa seksyong ito, ipinaliwanag ang mga hakbang sa pagpapatibay ng seguridad upang ligtas na i-operate ang web server.
Ang natutunan sa artikulong ito:

  • Pag-set up ng UFW (Firewall)
  • Proteksyon ng SSH (Pagbabago ng Port · Fail2Ban)
  • Security Setting ng Apache (Pagkondena ng Impormasyon ng Bersyon · Pag-disable ng Listahan ng Directory)
  • Pagdaragdag ng Security Header

7. Pag-optimize ng Pagganap

Pag-tune ng Apache

Sa default na setting ng Apache, maaaring hindi optimal ang efficiency ng pagproseso ng mga request.
Sa pamamagitan ng pag-adjust ng mga sumusunod na setting, maaaring makamit ang mas mataas na pagganap.

Optimization ng MPM (Multi-Processing Module)

Ang MPM (Multi-Processing Module) ay nagdedesisyon kung paano ipoproseso ng Apache ang mga request.

Suriin ang kasalukuyang setting ng MPM:

apachectl -M | grep mpm

Halimbawa ng output:

mpm_prefork_module (shared)

Kung mpm_prefork_module ito, inirerekomenda na baguhin ito sa mas mabilis na mpm_event.

Paraan ng pagbabago:

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

Pag-activate ng KeepAlive

Sa pamamagitan ng pag-activate ng KeepAlive (persistent connection), maaaring muling gamitin ng client ang parehong connection, na nagre-reduce ng bilang ng mga request.

I-edit ang config file:

sudo nano /etc/apache2/apache2.conf

Suriin ang mga sumusunod na setting:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Matapos ang setting, i-restart ang Apache:

sudo systemctl restart apache2

Paggamit ng Cache

Sa pamamagitan ng paggamit ng browser cache at server cache, binabawasan ang hindi kinakailangang mga request at pinapabuti ang bilis ng response.

Pag-activate ng mod_expires (Browser Cache)

sudo a2enmod expires
sudo systemctl restart apache2

Magdagdag ng sumusunod sa config file /etc/apache2/sites-available/example.com.conf:

<IfModule mod_expires.c>
    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"
</IfModule>

Matapos ang setting, i-restart ang Apache:

sudo systemctl restart apache2

Pag-activate ng mod_cache (Server Cache)

sudo a2enmod cache cache_disk
sudo systemctl restart apache2

Magdagdag ng sumusunod sa config file /etc/apache2/sites-available/example.com.conf:

<IfModule mod_cache.c>
    CacheEnable disk /
    CacheRoot /var/cache/apache2/mod_cache_disk
    CacheDefaultExpire 86400
</IfModule>

I-restart ang Apache:

sudo systemctl restart apache2

Pag-Introduce ng Compression

Gamit ang mod_deflate, pinipress ang data ng website upang bawasan ang laki ng transfer.

Pag-activate ng mod_deflate

sudo a2enmod deflate
sudo systemctl restart apache2

Magdagdag ng sumusunod sa config file /etc/apache2/sites-available/example.com.conf:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Matapos ang setting, i-restart ang Apache:

sudo systemctl restart apache2

Pag-limit ng Resources

Upang maghanda sa malaking bilang ng requests o hindi wastong access, mahalaga ring mag-set ng limitasyon ng resources ng Apache.

Pag-activate ng mod_ratelimit

sudo a2enmod ratelimit
sudo systemctl restart apache2

Magdagdag ng sumusunod sa config file /etc/apache2/sites-available/example.com.conf:

<Location />
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</Location>

Matapos ang setting, i-restart ang Apache:

sudo systemctl restart apache2

Troubleshooting

Ipinapakita rito ang mga paraan ng pagtugon kung may problema pagkatapos ng performance tuning.

Suriin ang Error Log ng Apache

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

Suriin ang Load Situation ng Apache

sudo apachectl status

Suriin ang CPU at Memory Usage ng Server

top

o

htop

(kung wala ang htop, i-install gamit ang sudo apt install htop)

Buod

Sa seksyong ito, ipinaliwanag ang mga paraan upang mapabuti ang pagganap ng web server.
Sa artikulong ito natutunan:

  • Pag-tune ng Apache (Optimization ng MPM · Setting ng KeepAlive)
  • Paggamit ng Cache (Browser Cache · Server Cache)
  • Data Compression (Pag-Introduce ng mod_deflate)
  • Pag-limit ng Resources (Access Control gamit ang mod_ratelimit)

8. Pagresolba ng mga Problema

Ang Apache ay hindi nagsisimula o humihinto

Suriin ang Status ng Apache

sudo systemctl status apache2

Halimbawa ng output:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since ...

Kung Active: failed, may nagaganap na error.

Suriin ang Error Log

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

Suriin ang Ginagamit na Port

sudo netstat -tulnp | grep ':80'

o

sudo lsof -i:80

Kung may salungatan sa port, i-edit ang /etc/apache2/ports.conf at itakda ang angkop na port.

Mga Error na Kaugnay ng SSL Certificate

Ang SSL Certificate ay Nag-expire

sudo certbot renew --force-renewal

AH02572: Failed to configure at least one certificate

Buksan ang config file ng Apache na /etc/apache2/sites-available/example.com-le-ssl.conf at suriin ang sumusunod:

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

Kung tama ang setting, i-restart ang Apache:

sudo systemctl restart apache2

Ang Website ay Hindi Lumalabas (403, 404, 500 Error)

403 Forbidden

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

404 Not Found

Buksan ang virtual host config na /etc/apache2/sites-available/example.com.conf at suriin ang path ng DocumentRoot.

DocumentRoot /var/www/example.com/public_html

Bukod dito, kung hindi naka-enable ang mod_rewrite:

sudo a2enmod rewrite
sudo systemctl restart apache2

500 Internal Server Error

Suriin ang error log:

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

Iwasan sa pamamagitan ng pag-rename ng .htaccess:

mv /var/www/example.com/public_html/.htaccess /var/www/example.com/public_html/.htaccess.bak

Mga Problema sa Mataas na Load o Performance

Suriin ang Load Situation ng Apache

top

o

htop

I-disable ang Walang Saysay na Apache Modules

sudo a2dismod status
sudo a2dismod autoindex
sudo systemctl restart apache2

Optimization ng Cache

sudo a2enmod cache cache_disk

Mga Problema na Kaugnay ng Network

Suriin ang IP Address ng Server

ip a

o

curl ifconfig.me

Suriin kung Nakabukas ang Port

sudo netstat -tulnp | grep LISTEN

o

sudo lsof -i :80

Kung wala sa list ang port 80 (HTTP) o 443 (HTTPS), i-adjust ang firewall:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

Buod

Sa seksyong ito, ipinaliwanag ang mga karaniwang dahilan at solusyon sa mga error na madalas mangyari sa Ubuntu Web Server (Apache).
Ang natutunan sa artikulong ito:

  • Paraan ng paghawak kapag hindi nagsisimula ang Apache
  • Pagresolba ng mga error na kaugnay ng SSL Certificate
  • Mga dahilan at pagwawasto ng 403 / 404 / 500 Error
  • Optimization ng Performance
  • Pagsusuri ng Network Connection

9. Buod

Ang mga natutunan hanggang ngayon

Balikan natin ang mga nilalaman na ipinaliwanag sa bawat seksyon.

SeksiyonMga Nilalaman
1. PanimulaMga batayang konsepto ng Ubuntu Web server at layunin ng artikulong ito
2. Pag-install at initial na pagtatakda ng UbuntuPag-install ng OS, pag-update, pagtatakda ng firewall
3. Pag-install at batayang pagtatakda ng ApachePag-install ng Apache, pag-activate, at pagsusuri ng pagtatrabaho
4. Pagtatatakda ng Virtual HostPagtatatakda para sa pagho-host ng maraming website
5. Pag-install ng SSL/TLSPaggamit ng Let’s Encrypt para sa HTTPS
6. Pagpalakas ng seguridad ng Web serverPagtatatakda ng firewall, proteksyon ng SSH, seguridad ng Apache
7. Pag-optimize ng performanceCache, pag-compress ng data, pagtatakda ng pag-optimize ng Apache
8. Pag-troubleshootPagresolba ng error ng Apache, pagkukumpuni ng problema sa SSL, pagtugon sa load

Sunod na Hakbang

Kapag natapos na ang batayang pagtatakda ng Ubuntu Web server, maaari kang mag-aral ng mga sumusunod namas advanced na pagtatakda o teknolohiya upang magtayo ng mas praktikal na kapaligiran ng server.

Pag-install ng WordPress o PHP applicationPagtatatakda ng database server (MySQL / MariaDB)Pagbuo ng reverse proxy (Nginx + Apache)Pagbuo ng auto-scale environment(paggamit ng AWS, GCP, Azure)
Pamamahala ng log at monitoring(paggamit ng fail2ban o logwatch)

Mga Madalas na Tanong (FAQ)

Q1: Alin ang dapat piliin sa Ubuntu, Nginx o Apache?

A1:Kung static content ang pangunahing ipinapahayag, Nginx; kung maraming dynamic content (PHP at iba pa), Apache ang inirerekomenda.
Nginx ay maaari ring gamitin bilang reverse proxy, at maaaring pagsamahin sa Apache.

Q2: Maaari bang awtomatikong i-update ang SSL certificate?

A2:Kung i-install ang Certbot, posible ang awtomatikong pag-update.Gamitin ang commandsudo certbot renew --dry-runpara sa pagsubok, at itakda angcronsa schedule.

Q3: Paano mas palakasin ang seguridad ng Web server?

A3:Gamitin ang Fail2Ban para pigilan ang brute force attack, itago ang impormasyon ng bersyon ng Apache, at i-disable ang hindi kinakailangang module bilang batayang hakbang.

Q4: Paano mapabuti ang performance ng Apache?

A4:Piliin ang tamang MPM (event / worker), itakda ang cache (mod_cache), at gawin ang pag-compress ng data (mod_deflate)

Q5: Bakit nagiging “403 Forbidden” error ang website?

A5:Suriin kung ang ownership ng directory ay nakatakda sa www-data, at itakda ang tamang permissions gamit ang chmod -R 755

Buod

Ang pagbuo ng Ubuntu Web server ay nangangailangan ng maraming hakbang mula sa batayang pagtatakda hanggang sa advanced na pag-optimize, ngunit kapag naintindihan, maaari kang magtayo ng napakalakas na kapaligiran.

🚀Gamitin ang artikulong ito bilang gabay habang nagbubuo ng mas ligtas at mabilis na Web server, at i-upgrade ang iyong mga kasanayan sa operasyon!🚀