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 (zde pomocí MariaDB) a P HP.
V této příručce nainstalujete zásobník LEMP na server založený na Fedoře 31. Nainstalujeme také PHPMyAdmin, Redis a Opcache.
Předpoklady
-
Server se systémem Fedora 31.
-
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 31 se standardně dodává s PHP 7.3. Ale chceme nainstalovat PHP 7.4, pro které potřebujeme přidat repozitář 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-31.rpm
Povolte remi
a remi-php74
repozitáře 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-enabled remi-php74
$ 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.3 (cli) (built: Feb 18 2020 11:53:05) ( 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 31 se standardně dodává s MariaDB 10.3, ale můžeme nainstalovat i nejnovější verzi 10.4 (dostupnou v době psaní tohoto návodu). K tomu potřebujeme přidat oficiální úložiště MariaDB.
Vytvořte MariaDB.repo
v /etc/yum.repos.d/
adresář.
$ sudo nano /etc/yum.repos.d/MariaDB.repo
Přidejte do něj následující kód.
# MariaDB 10.4 Fedora repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/fedora31-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Chcete-li nainstalovat MariaDB, zadejte následující příkazy
$ sudo dnf install MariaDB-server -y
Všimněte si příkazu. Pokud chcete nainstalovat kopii (10.3) do úložiště Fedory, měli byste použít sudo dnf install mariadb-server
ale pro verzi 10.4 používáme sudo dnf install MariaDB-server
.
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 root heslo nebo unix_socket plugin. Zásuvný modul unix_socket vám umožňuje přihlásit se do MariaDB pomocí přihlašovacích údajů uživatele systému Linux. Je považováno za bezpečnější, i když k používání aplikací třetích stran, jako je PhpMyAdmin, budete potřebovat tradiční uživatelské jméno/heslo. V tomto tutoriálu se budeme držet používání unix_socket pluginu. PhpMyAdmin můžete nadále používat prostřednictvím libovolného uživatele, kterého pro své databáze vytvoříte.
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]
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.
Instalovat Nginx
Fedora 31 se standardně dodává se stabilní verzí Nginx (1.16.1). Pokud chcete nainstalovat hlavní verzi Nginx, postupujte podle našeho průvodce sestavováním Nginx ze zdroje. Ujistěte se, že máte nejnovější verzi Nginx a závislosti uvedené v tutoriálu. Zbytek pokynů zůstane stejný (názvy cest odpovídajícím způsobem změňte během ./configure
příkaz). V tomto tutoriálu se budeme držet stabilní verze Nginx.
Nainstalujte server Nginx.
$ sudo dnf install nginx -y
Zkontrolujte, zda funguje správně.
$ nginx -v
Měli byste vidět následující výstup.
nginx version: nginx/1.16.1
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;
}
}
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
...
Také nastavte oprávnění k vlastnictví pro unixový socket na nginx a odstraňte ;
před nimi.
listen.owner = nginx
listen.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í.
Závěr
To je pro tento tutoriál vše. Nastavení LEMP je dokončeno a můžete začít vytvářet a hostovat své webové stránky a aplikace.