Lighttpd je bezplatný, open-source a vysokorychlostní webový server speciálně navržený pro prostředí s kritickou rychlostí. Vyžaduje malou paměťovou náročnost ve srovnání s jinými webovými servery, jako jsou Apache a Nginx, a zvláště rychlý pro běh aplikací AJAX. Lighttpd nám také umožňuje hostovat webové aplikace napsané v jiném programovacím jazyce pomocí rozhraní FastCGI, SCGI a CGI. Lighttpd je pro vás nejlepší volbou, pokud váš server trpí problémy se zatížením.
V tomto tutoriálu se naučíme nainstalovat Lighttpd na Debian 10 s podporou PHP-FPM a MariaDB a zabezpečíme webový server SSL certifikátem Let's Encrypt.
Požadavky
- Server se systémem Debian 10.
- Na vašem serveru je nastaveno heslo uživatele root.
V tomto tutoriálu budu používat název domény example.com. Nahraďte example.com ve všech názvech souborů a konfiguračních nastaveních svým vlastním názvem domény níže.
Začínáme
Než začnete, budete muset aktualizovat svůj systém na nejnovější verzi. Můžete to provést spuštěním následujícího příkazu:
apt-get update -y
apt-get upgrade -y
Jakmile je váš server aktualizován, restartujte server, aby se změny projevily.
Instalovat Lighttpd
Ve výchozím nastavení je Lighttpd k dispozici ve výchozím úložišti Debian 10. Můžete jej nainstalovat pouhým spuštěním následujícího příkazu:
apt-get install lighttpd -y
Po dokončení instalace spusťte službu Lighttpd a povolte její spuštění po restartu systému pomocí následujícího příkazu:
systemctl start lighttpd
systemctl enable lighttpd
Stav Lighttpd můžete také zkontrolovat pomocí následujícího příkazu:
systemctl status lighttpd
Měli byste získat následující výstup:
? lighttpd.service - Lighttpd Daemon Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-09-06 02:09:35 EDT; 29s ago Main PID: 4445 (lighttpd) Tasks: 1 (limit: 1138) Memory: 1.4M CGroup: /system.slice/lighttpd.service ??4445 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf Sep 06 02:09:35 debian systemd[1]: Starting Lighttpd Daemon... Sep 06 02:09:35 debian systemd[1]: Started Lighttpd Daemon. Sep 06 02:09:36 debian systemd[1]: /lib/systemd/system/lighttpd.service:6: PIDFile= references path below legacy directory /var/run/, updating lines 1-12/12 (END)
Po dokončení můžete přejít k dalšímu kroku.
Nainstalujte server MariaDB
Server MariaDB můžete nainstalovat spuštěním následujícího příkazu:
apt-get install mariadb-server mariadb-client -y
Po instalaci budete muset zabezpečit instalaci MariaDB. Můžete jej zabezpečit spuštěním následujícího skriptu:
mysql_secure_installation
Answer all the questions as shown below: Change the root password? [Y/n] n Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Po dokončení můžete přejít k dalšímu kroku.
Instalovat PHP a PHP-FPM
Dále budete muset do svého systému nainstalovat PHP, PHP-FPM a FastCGI. Ve výchozím nastavení se Debian 10 dodává s verzí PHP 7.3. Můžete jej nainstalovat pouhým spuštěním následujícího příkazu:
apt-get install php php-cgi php-fpm php-mysql -y
Jakmile jsou všechny balíčky nainstalovány, budete muset upravit soubor php.ini a nastavit cgi.fix_pathinfo na 1. Můžete to udělat pomocí následujícího příkazu:
nano /etc/php/7.3/fpm/php.ini
Změňte následující řádek:
cgi.fix_pathinfo=1
Po dokončení uložte a zavřete soubor.
Ve výchozím nastavení PHP ukazuje na UNIX socket /var/run/php/php7.3-fpm.sock. Takže budete muset nakonfigurovat fond PHP-FPM, aby nastavil PHP naslouchání TCP socketu.
Můžete to udělat úpravou souboru /etc/php/7.3/fpm/pool.d/www.conf:
nano /etc/php/7.3/fpm/pool.d/www.conf
Najděte následující řádek:
listen = /run/php/php7.3-fpm.sock
A nahraďte jej následujícím řádkem:
listen = 127.0.0.1:9000
Po dokončení uložte a zavřete soubor. Poté restartujte službu PHP-FPM, abyste použili změny konfigurace:
systemctl restart php7.3-fpm
Dále budete muset upravit soubor 15-fastcgi-php.conf:
nano /etc/lighttpd/conf-available/15-fastcgi-php.conf
Najděte následující řádky:
"bin-path" => "/usr/bin/php-cgi", "socket" => "/var/run/lighttpd/php.socket",
A nahraďte je následujícím:
"host" => "127.0.0.1", "port" => "9000",
Po dokončení uložte a zavřete soubor. Poté povolte modul FastCGI i FastCHI-PHP pomocí následujících příkazů:
lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php
Nakonec restartujte službu Lighttpd, aby se změny projevily:
systemctl restart lighttpd
Vytvořit virtuálního hostitele Lighttpd
Dále budete muset vytvořit nový soubor virtuálního hostitele pro testování PHP s Lighttpd. Můžete jej vytvořit pomocí následujícího příkazu:
nano /etc/lighttpd/conf-available/example.com.conf
Přidejte následující řádky:
$HTTP["host"] == "www.example.com" { server.document-root = "/var/www/html/" server.errorlog = "/var/log/lighttpd/example.com-error.log" }
Po dokončení uložte a zavřete soubor. Poté povolte virtuálního hostitele pomocí následujícího příkazu:
ln -s /etc/lighttpd/conf-available/example.com.conf /etc/lighttpd/conf-enabled/
Dále vytvořte ukázkový soubor index.php v kořenovém adresáři dokumentu Lighttpd pomocí následujícího příkazu:
nano /var/www/html/index.php
Přidejte následující řádek:
<?php phpinfo(); ?>
Uložte a zavřete soubor. Poté změňte vlastnictví kořenového adresáře dokumentu Lighttpd na www-data pomocí následujícího příkazu:
chown -R www-data:www-data /var/www/html/
Nakonec restartujte službu Lighttpd, abyste použili všechny změny konfigurace:
systemctl restart lighttpd
Zabezpečený Lighttpd s Let's Encrypt Free SSL
Nejprve si budete muset nainstalovat nástroj Certbot, abyste zabezpečili svůj webový server pomocí Let’s Encrypt. Ve výchozím nastavení není nejnovější verze Certbota dostupná ve výchozím úložišti Debianu 10.
Úložiště Certbot můžete přidat pomocí následujícího příkazu:
apt-get install software-properties-common
add-apt-repository ppa:certbot/certbot
Dále aktualizujte úložiště a nainstalujte Certbot pomocí následujícího příkazu:
apt-get update -y
apt-get install certbot -y
Dále vytvořte certifikát Let’s Encrypt pomocí následujícího příkazu:
certbot certonly --webroot -w /var/www/html/ -d www.example.com
Budete požádáni, abyste uvedli svou e-mailovou adresu a přijali podmínky licence, jak je uvedeno níže:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y
Po úspěšném stažení certifikátů byste měli vidět následující výstup:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2019-12-06. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Dále budete muset zkombinovat certifikát i soukromý klíč do jednoho souboru. Můžete to udělat pomocí následujícího příkazu:
cat /etc/letsencrypt/live/example.com/cert.pem /etc/letsencrypt/live/example.com/privkey.pem > /etc/letsencrypt/live/example.com/web.pem
Dále budete muset upravit soubor virtuálního hostitele Lighttpd a definovat cestu k certifikátu Let's Encrypt SSL.
Můžete to udělat pomocí následujícího příkazu:
nano /etc/lighttpd/conf-enabled/example.com.conf
Změňte soubor, jak je znázorněno níže:
$HTTP["host"] == "www.example.com" { server.document-root = "/var/www/html/" } $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/example.com/web.pem" # Combined Certificate ssl.ca-file = "/etc/letsencrypt/live/example.com/chain.pem" # Root CA server.name = "www.example.com" # Domain Name OR Virtual Host Name server.document-root = "/var/www/html/" # Document Root server.errorlog = "/var/log/lighttpd/example.com_error.log" accesslog.filename = "/var/log/lighttpd/example.com_access.log" } $HTTP["scheme"] == "http" { $HTTP["host"] == "www.example.com" { # HTTP URL url.redirect = ("/.*" => "https://www.example.com$0") # Redirection HTTPS URL } }
Uložte a zavřete soubor. Poté restartujte službu Lighttpd, abyste použili změny konfigurace:
systemctl restart lighttpd
Přístup k webovému rozhraní Lighttpd
Lighttpd je nainstalován a konfigurován s podporou PHP a PHP-FPM. Nyní je čas to otestovat.
Otevřete webový prohlížeč a zadejte adresu URL https://www.example.com. Budete přesměrováni na následující stránku:
Výše uvedená stránka ukazuje, že PHP funguje dobře s FastCGI.
Závěr
Gratulujeme! úspěšně jste nainstalovali a nakonfigurovali webový server Lighttpd s podporou PHP-FPM a FastCGI na Debianu 10. Nyní můžete snadno hostovat svůj vlastní webový server. Pro více informací navštivte stránku oficiální dokumentace Lighttpd na Lighttpd Doc.