GNU/Linux >> Znalost Linux >  >> Fedora

Jak nainstalovat Nginx s PHP a MariaDB (LEMP Stack) s Opcache, Redis a Lets Encrypt na Fedoře 32

Zásobník softwaru LEMP je skupina softwaru s otevřeným zdrojovým kódem, který se instaluje společně, aby umožnil serveru hostovat webové stránky a aplikace. Je to zkratka pro L inux, E Server Nginx, M ySQL (pomocí MariaDB) a P HP.

V této příručce nainstalujete zásobník LEMP na server založený na Fedoře 32. Nainstalujeme také phpMyAdmin, Redis, Opcache a Let's Encrypt SSL.

Předpoklady

Server se systémem Fedora 32.

Uživatel sudo bez oprávnění root.

Ujistěte se, že je vše aktualizováno.

$ sudo dnf upgrade

Několik balíčků, které váš systém potřebuje.

$ sudo dnf install wget curl nano -y

Některé z těchto balíčků již mohou být ve vašem systému nainstalovány.

Zakázat SELinux.

$ sudo setenforce 0

Konfigurovat bránu firewall

Prvním krokem je konfigurace firewallu. Server Fedora je dodáván s předinstalovaným firewallem Firewalld.

Zkontrolujte, zda je spuštěna brána firewall.

$ sudo firewall-cmd --state

Měli byste získat následující výstup.

running

Nastavte výchozí zónu brány firewall na veřejnou.

$ sudo firewall-cmd --set-default-zone=public

Zkontrolujte aktuální povolené služby/porty.

$ sudo firewall-cmd --zone=public --permanent --list-services

Měl by ukazovat následující výstup.

dhcpv6-client mdns ssh

Povolit porty HTTP a HTTPS.

$ sudo firewall-cmd --zone=public --permanent --add-service=http
$ sudo firewall-cmd --zone=public --permanent --add-service=https

Znovu zkontrolujte stav brány firewall.

$ sudo firewall-cmd --zone=public --permanent --list-services

Měli byste vidět podobný výstup.

dhcpv6-client http https mdns ssh

Znovu načtěte bránu firewall.

$ sudo systemctl reload firewalld

Instalovat PHP

Fedora 32 se standardně dodává s PHP 7.4, ale abychom měli aktualizované úložiště PHP, přidáme úložiště REMI.

Nainstalujte si úložiště REMI, což je oficiální úložiště Fedory pro instalaci balíčků PHP.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-32.rpm

Povolte remi úložiště a deaktivujte remi-modular úložiště. To umožňuje úložiště potřebné k instalaci balíčků PHP 7.4.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-disabled remi-modular

Nainstalujte PHP 7.4 spolu s některými dalšími balíčky.

$ sudo dnf install -y php-cli php-fpm php-mysqlnd

Zkontrolujte, zda PHP funguje správně.

$ php --version

Měli byste vidět podobný výstup.

PHP 7.4.6 (cli) (built: May 12 2020 08:09:15) ( NTS ) 
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Instalovat MariaDB

MariaDB je náhradní náhrada za MySQL, což znamená, že příkazy ke spuštění a ovládání MariaDB jsou stejné jako příkazy pro MySQL.

Fedora 32 je standardně dodávána s MariaDB 10.4, což je nejnovější stabilní verze, která je nyní k dispozici, takže ji budeme používat.

Chcete-li nainstalovat MariaDB, zadejte následující příkaz.

$ sudo dnf install mariadb-server -y

Zkontrolujte, zda je MariaDB správně nainstalována.

$ mysql --version

Měli byste vidět následující výstup.

mysql  Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using  EditLine wrapper

Povolte a spusťte službu MariaDB.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Spuštěním následujícího příkazu provedete výchozí konfiguraci, jako je zadání hesla uživatele root, odebrání anonymních uživatelů, zakázání vzdáleného přihlášení uživatele root a zrušení testovacích tabulek.

$ sudo mysql_secure_installation

S MariaDB 10.4 budete nyní dotázáni, zda chcete použít heslo root nebo unix_socket zapojit. unix_socket plugin vám umožňuje přihlásit se do MariaDB pomocí vašich uživatelských údajů pro Linux. Je považováno za bezpečnější, ačkoli budete potřebovat tradiční uživatelské jméno/heslo, abyste mohli používat aplikace třetích stran, jako je phpMyAdmin. V tomto tutoriálu se budeme držet používání unix_socket pluginu. Stále můžete používat phpMyAdmin prostřednictvím libovolného uživatele, kterého vytvoříte pro své databáze.

Stisknutím klávesy Enter vyberete výchozí možnost (ta, která je velká, v tomto případě Y).

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Enabled successfully!
Reloading privilege tables..
 ... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] [ANSWER n]
... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] [PRESS ENTER]
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] [PRESS ENTER]
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] [PRESS ENTER]
 \- Dropping test database...
 ... Success!
 \- Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] [PRESS ENTER]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

A je to. Až se příště budete chtít přihlásit do MySQL, použijte následující příkaz

$ sudo mysql

Po zobrazení výzvy zadejte heslo uživatele root.

Nainstalovat Redis

Fedora 32 obsahuje v5.0.8 balíčku Redis, ale úložiště Remi, které jsme dříve nainstalovali pro PHP, s sebou nese nejnovější verzi Redis (v6.0.1) v době psaní tohoto návodu.

Pomocí následujícího příkazu nainstalujte Redis a odpovídající rozšíření PHP Redis.

$ sudo dnf install redis php-redis

Povolte službu Redis.

$ sudo systemctl enable --now redis

Konfigurace serveru Redis

Proveďme některé základní konfigurace na serveru Redis.

Otevřete soubor /etc/redis.conf s editorem Nano.

$ sudo nano /etc/redis.conf

Pokud chcete, aby se vzdálení klienti připojovali k vaší instanci Redis, najděte řádek bind 127.0.0.1 a změňte jej na následující.

bind 0.0.0.0

Můžete také změnit výchozí port, na kterém Redis naslouchá, z 6379 na hodnotu dle vašeho výběru.

port 3458

Chcete-li nakonfigurovat Redis jako server mezipaměti, nastavte následující hodnoty.

maxmemory 256mb
maxmemory-policy allkeys-lru

To říká Redis, aby odstranil jakýkoli klíč pomocí algoritmu LRU, když je dosaženo maximální paměti 256 MB. Hodnotu paměti můžete nastavit podle svých požadavků a serveru, který používáte.

Můžete nastavit heslo tak, aby se každý klient, který potřebuje Redis, musel nejprve ověřit. Chcete-li to provést, nastavte heslo pomocí následující směrnice.

requirepass  <AuthPassword>

Další příkazy ke změně naleznete v konfiguračním souboru. Až budete hotovi, stiskněte Ctrl + X a zadejte Y až budete vyzváni k uložení souboru.

Chcete-li použít změny, restartujte server Redis.

$ sudo systemctl restart redis

Budeme také muset přidat pravidlo do našeho Firewallu, aby Redis mohl fungovat.

$ sudo firewall-cmd --zone=public --permanent --add-port=6379/tcp
$ sudo firewall-cmd --reload

Budete muset změnit hodnotu ve výše uvedeném příkazu tak, aby odpovídala portu, který jste vybrali v konfiguračním souboru výše.

Instalovat Nginx

Fedora 32 se standardně dodává s nejnovější stabilní verzí Nginx. (1.18.0).

Nainstalujte Nginx.

$ sudo dnf install nginx -y

Zkontrolujte, zda funguje správně.

$ nginx -v

V závislosti na verzi Nginx, kterou jste se rozhodli nainstalovat, byste měli vidět následující výstup.

nginx version: nginx/1.18.0

Spusťte a povolte Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Otevřete IP adresu svého serveru v prohlížeči a zobrazí se následující stránka. Znamená to, že Nginx funguje správně.

Nakonfigurujte Nginx

Nastavte adresáře, ve kterých budou serverové bloky sídlit.

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

Vytvořte adresář, kde bude váš web žít.

$ sudo mkdir /var/www/example.com/html -p

Pomocí -p direktiva vytváří nadřazené adresáře, které dříve neexistovaly.

Spusťte následující příkaz pro přidání konfiguračního souboru pro váš web.

$ sudo nano /etc/nginx/sites-available/example.com.conf

Vložte následující kód do editoru.

server {
  listen          *:80;
  server_name     example.com;
  root            /var/www/example.com/html;
  index           index.php index.html;

  location / {
    try_files   $uri $uri/ =404;
  }
    
  access_log /var/log/nginx/example.com.access.log;
  error_log /var/log/nginx/example.com.error.log;

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass  unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include  fastcgi_params;
  }
}

Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.

Tento soubor předpokládá, že budeme hostit example.com v adresáři /var/www/html . Pokud nebudete používat žádnou doménu a konfigurujete svůj server tak, aby byl přístupný pouze přes IP adresu/localhost, budete muset odstranit odpovídající nastavení blokování serveru z nginx.conf jinak to bude mít problémy s blokem serveru, který vytvoříte.

Tento konfigurační soubor aktivujte jeho propojením s sites-enabled adresář.

$ sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Otevřete /etc/nginx/nginx.conf soubor pro úpravy.

$ sudo nano /etc/nginx/nginx.conf	

Vložte následující řádky za řádek include /etc/nginx/conf.d/*.conf

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Změňte hodnotu types_hash_max_size od 2048 do 4096.

types_hash_max_size 4096;

Stiskněte Ctrl + X zavřete editor a stiskněte Y po zobrazení výzvy k uložení souboru. Otestujte konfiguraci Nginx.

$ sudo nginx -t

Měli byste vidět následující výstup indikující, že vaše konfigurace je správná.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Znovu načtěte službu Nginx.

$ sudo systemctl reload nginx

Konfigurace PHP-FPM

Otevřete soubor /etc/php-fpm.d/www.conf .

$ sudo nano /etc/php-fpm.d/www.conf

Musíme nastavit unixového uživatele/skupinu PHP procesů na nginx . Najděte user=apache a group=apache řádků v souboru a změňte je na nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Restartujte proces PHP-fpm.

$ sudo systemctl restart php-fpm

Chcete-li otestovat nastavení PHP, vytvořte soubor test.php v html složka.

$ sudo nano /var/www/example.com/html/test.php

Přidejte do něj následující obsah a uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

<?php phpinfo();

Spusťte http://<yourserverip>/test.php ve vašem webovém prohlížeči a měli byste vidět následující.

Instalovat phpMyAdmin

Remi Repository obsahuje nejnovější phpMyAdmin, takže jej můžeme jednoduše nainstalovat pomocí následujícího příkazu.

$ sudo dnf install phpmyadmin

Nainstaluje se do /usr/share/phpMyAdmin adresář.

Nakonfigurujte phpMyAdmin

Aby webový server Nginx správně našel a obsluhoval soubory phpMyAdmin, budeme muset vytvořit symbolický odkaz z jeho skutečného umístění na kořenový adresář dokumentů Nginx.

Chcete-li to provést, spusťte následující příkaz.

$ sudo ln -s /usr/share/phpmyadmin /var/www/example.com/html/phpmyadmin

Vaše instalace phpMyAdmin je funkční. Chcete-li se k němu dostat, stačí otevřít http://example.com/phpmyadmin .

Pokud se zobrazí chyby php session, spusťte následující příkaz a udělte správná oprávnění adresáři PHP Session. Zkontrolujte cestu relace z test.php soubor, který jsme vytvořili dříve. Pro nás je to na /var/lib/php/session .

$ sudo chown -R nginx:nginx /var/lib/php/session

Ve výchozím nastavení by se toto výchozí umístění mělo změnit, protože je to nejběžnější umístění, které může hacker najít vaši instalaci phpMyAdmin. Chcete-li to provést, spusťte následující příkaz.

$ sudo mv phpmyadmin sm123

V podstatě jsme přesunuli umístění našeho phpMyAdmina na sm123 složka. Pro přístup k němu nyní budete muset otevřít http://example.com/sm123 ve vašem prohlížeči.

Protože zde používáme unix_authentication s MySQL, není zde žádný uživatel root, který by se mohl přihlásit přes phpMyAdmin. Nejprve budete muset vytvořit uživatele MySQL a dát mu oprávnění k databázím, abyste mohli používat phpMyAdmin.

Konfigurace Opcache

Instalace phpMyAdmin z úložiště Remi nainstaluje také Opcache. V případě, že jste nenainstalovali phpMyAdmin a nechcete, můžete jednoduše nainstalovat Opcache pomocí následujícího příkazu.

$ sudo dnf install php-opcache	

Ověřte, že byl nainstalován.

$ php -v
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies

Chcete-li změnit nastavení Opcache, otevřete soubor /etc/php.d/10-opcache.ini .

$ sudo nano /etc/php.d/10-opcache.ini

Následující nastavení by vám mělo pomoci začít s používáním Opcache a obecně se doporučuje jako dobrý výkon. Konfiguraci můžete povolit zrušením komentáře odstraněním ; před ním.

opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Chcete-li použít nastavení, restartujte server.

$ sudo systemctl reload nginx

Instalovat SSL přes Let's Encrypt

SSL se stalo nezbytnou součástí každé webové stránky. Zde nainstalujeme SSL pomocí služby Let's Encrypt.

Nejprve si nainstalujte nástroj Certbot.

$ sudo dnf install certbot-nginx

Vygenerujte certifikáty.

$ sudo certbot --nginx -d example.com -d www.example.com -d phpmyadmin.example.com

Vytváříme certifikáty pro oba – náš hlavní web a doménu phpMyAdmin.

Pokud je to vaše první spuštění certbota ve vašem systému, budete požádáni o e-mailovou adresu a souhlas s podmínkami služby. Budete také dotázáni, zda souhlasíte se sdílením dat s nadací EFF, kterým můžete říci ne. Poté bude certbot komunikovat se servery Let's Encrypt a spustí výzvu k ověření vašich domén.

Pokud to bude úspěšné, budete dotázáni, jak zacházet s přesměrováním HTTPS.

Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Vyberte svou volbu a stiskněte enter. Vaše certifikáty budou vytvořeny a vaše konfigurace Nginx bude aktualizována pomocí nastavení SSL.

Vaše certifikáty jsou připraveny a nyní můžete otevřít svůj web na adrese https://example.com

Konfigurace automatického obnovení SSL

Toto je poslední krok před ukončením tohoto tutoriálu. K obnovení SSL použijeme cron.

Potřebujeme přidat záznam do Cronu pomocí editoru Crontab. Chcete-li otevřít editor crontab, spusťte následující příkaz.

$ EDITOR=nano sudo crontab -e

EDITOR=nano před příkazem zajišťuje, že crontab za nás otevře editor Nano, protože Fedora ve výchozím nastavení preferuje editor VIM.

Vložte následující řádek do spodní části.

. . .
25 2 * * * /usr/bin/certbot renew --quiet

25 2 * * * část tohoto řádku znamená „spusťte následující příkaz ve 2:25 každý den“. Můžete si vybrat kdykoli.

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

renew příkaz pro Certbot zkontroluje všechny certifikáty nainstalované v systému a aktualizuje všechny, u kterých je nastavena doba platnosti za méně než třicet dní. --quiet říká Certbotu, aby nevydával informace nebo nečekal na vstup uživatele.

Tento příkaz bude spouštěn denně.

Závěr

To je vše k tomuto tutoriálu. Nastavení LEMP je dokončeno a můžete začít vytvářet a hostovat své webové stránky a aplikace.


Fedora
  1. Jak nainstalovat LEMP (Linux, Nginx, MariaDB, PHP) na Fedora 30 Server

  2. Jak nainstalovat Nginx s PHP a MySQL (LEMP Stack) na CentOS 7

  3. Jak nainstalovat Phorum s Nginx na Fedora 30

  1. Jak nainstalovat Pagekit CMS s Nginx na Fedoru 29

  2. Jak nainstalovat Nginx s PHP a MySQL (LEMP Stack) na Ubuntu 18.04

  3. Jak nainstalovat InvoicePlane s Nginx na Fedora 29

  1. Jak nainstalovat říjnový CMS s Nginx na Fedoře 29

  2. Jak nainstalovat Shopware s NGINX a Lets Encrypt na CentOS 7

  3. Jak nainstalovat Shopware s NGINX a Lets Encrypt na Fedoře 30