← Vissza

Apache futtatása Dockerben

Teszteléshez egyszerűen futtatható Apache konténerben.

$ docker run -dit --name my-apache-app -p 8090:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

Apache vezérlés

Apache indítása, leállítása és újraindítása különböző parancsokkal.

$ sudo apachectl status
$ sudo apachectl start
$ sudo apachectl stop
$ sudo apachectl graceful-stop
$ sudo apachectl restart
$ sudo apachectl graceful
$ sudo apachectl reload

# systemd megfelelői
$ sudo systemctl status apache2
$ sudo systemctl stop apache2
$ sudo systemctl restart apache2

# httpd -k parancsok
$ sudo httpd -k restart
$ sudo httpd -k stop
$ sudo httpd -k graceful

Konfiguráció helye

Apache konfigurációs fájlok helye Debian alapú rendszereken.

$ /usr/local/apache2/conf/httpd.conf
$ /etc/apache2/apache2.conf

# Ellenőrzés
$ apachectl -V
$ apachectl -t

Naplófájlok

Apache hibalog és hozzáférési naplók beállítása.

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn

# Példa virtuális hosthoz
ErrorLog ${APACHE_LOG_DIR}/test-error.log
LogLevel info
CustomLog ${APACHE_LOG_DIR}/test-access.log combined

# Debian alapú rendszeren
/var/log/apache2

Direktívák

Apache direktívák, például a DocumentRoot és a .htaccess használata.

DocumentRoot "/usr/local/apache2/docs/dummy-host2.example.com"

# .htaccess fájl
# Azonnali hatás, nem igényel újraindítást
# Biztonsági és teljesítmény okokból nem ajánlott

Virtuális hosztolás

Több domain kiszolgálása egy szerverről.

$ apachectl -t -D DUMP_VHOSTS

Apache modulok

Statikus és dinamikus modulok kezelése.

# Modulok listázása
$ apachectl -t -D DUMP_MODULES

# Debian alapú rendszeren
$ a2enmod modul_neve
$ a2dismod modul_neve

# Elérhető modulok
/etc/apache2/mods-available
/etc/apache2/mods-enabled

# Feltételes direktíva

  # konfiguráció

Virtuális domain beállítása

Több domain kiszolgálása Apache alatt.

NameVirtualHost *

DocumentRoot /web/example.com/www
ServerName www.example.com
ServerAlias example.com
CustomLog /web/example.com/logs/access.log combined
ErrorLog /web/example.com/logs/error.log

Másik konfigurációs fájl betöltése

Külön conf fájlok bevonása.

Include /etc/apache/virtual-hosts/*.conf

Apache verzió elrejtése

Biztonsági okokból a verzióinformáció kikapcsolása.

ServerSignature Off
ServerTokens Prod

Egyedi 404 hibaüzenet

Saját hibaoldal beállítása.

ErrorDocument 404 /404.html

Virtuális könyvtár létrehozása

mod_alias használata könyvtár aliashoz.

Alias /common /web/common

Állandó átirányítás

mod_alias segítségével.

Redirect permanent /old http://example.com/new

CGI-bin létrehozása

CGI szkriptek futtatása.

ScriptAlias /cgi-bin/ /web/cgi-bin/
AddHandler cgi-script .cgi

Könyvtár index fájl

Alapértelmezett index fájlok beállítása.

DirectoryIndex index.cfm index.cfm

Könyvtár böngészés

Könyvtárlistázás engedélyezése vagy tiltása.

# Kikapcsolás
Options -Indexes

# Bekapcsolás
Options +Indexes

Új felhasználó létrehozása Basic Auth-hoz

Parancssorból htpasswd használatával.

htpasswd -c /etc/apacheusers

Apache Basic Authentication

Egyszerű jelszavas védelem beállítása.

AuthName "Authentication Required"
AuthType Basic
AuthUserFile /etc/apacheusers
Require valid-user

Hozzáférés IP alapján

Csak adott IP vagy subnet engedélyezése.

# Csak egy IP
Order Deny,Allow
Deny from all
Allow from 127.0.0.1

# Csak subnet
Order Deny,Allow
Deny from all
Allow from 176.16.0.0/16

mod_rewrite szabályok

Átirányítások és URL átírások.

# Rewrite engine bekapcsolása
RewriteEngine On

# Példa: /news/123 → /news.cfm?id=123
RewriteRule ^/news/([0-9]+)$ /news.cfm?id=$1 [PT,L]

# www → non-www
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com$1 [R=301,L]

Konfiguráció tesztelése és érvényesítése

Az Apache beállítások ellenőrzése és újraindítása.

# Konfiguráció tesztelése
$ sudo apache2ctl configtest

# Ha az eredmény: Syntax OK → mehet élesben

# Újraindítás a beállítások érvényesítéséhez
$ sudo systemctl restart apache2

Tűzfal beállítása Apache2‑höz

HTTP és HTTPS forgalom engedélyezése ufw segítségével.

# Csak HTTP (80-as port)
$ sudo ufw allow "Apache"

# Csak HTTPS (443-as port)
$ sudo ufw allow "Apache Secure"

# HTTP és HTTPS együtt
$ sudo ufw allow "Apache Full"

Apache2 HTTPS modul

SSL modul engedélyezése és HTTPS virtuális hoszt beállítása.

# SSL modul engedélyezése
$ sudo a2enmod ssl

# Virtuális hoszt konfiguráció

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined



    # Ugyanaz mint a *:80 részben
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # SSL beállítások
    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile   /etc/ssl/private/ssl-cert-snakeoil.key