LAMP je skratka Linux Apache mySQL a PHP a to znamená, že v OS Linux nám beží webový server Apache, databázový server mySQL a skriptovací jazyk PHP (príp. Python, alebo Perl). Ja tento LAMP ešte doplním o webové administračné rozhranie na správu mySQL databázy pod názvom PHPMyAdmin. Okrem Nextcloud môžeme LAMP využiť aj pre hostovanie iných webových stránok. Aby som nezabudol pripomenúť, tak mySQL databáza sa pred časom forkovala a dnes ju poznáme pod názvom mariaDB.
Všetky články seriálu
- Nasadzujeme Nextcloud
- Systémové požiadavky pre Nextcloud
- LXC pre Nextcloud
- Pripravujeme Debian 10 pre Nextcloud
- Vytvárame doménu pre Nextcloud
- LAMP stack pre Nextcloud
- Konfigurácia serverov pre Nextcloud
- Inštalácia Nextcloud Hub
- Poinštalačné nastavenia v Nextcloud Hub
- Kancelária pre Nextcloud
Obsah
Apache2
Poďme hneď na vec! Po prihlásení sa cez SSH, systém aktualizujeme a nainštalujeme z repozitáru apache2 server. Môžeme ho hneď povoliť a skontrolujeme či beží. Ďalej skontrolujeme akú verziu sme nainštalovali.
sudo apt-get update && sudo apt-get upgrade -y
sudo apt install -y apache2
sudo systemctl enable apache2
sudo systemctl status apache2
sudo apache2 -v

Server version: Apache/2.4.38 (Debian)
Server built: 2020-08-25T20:08:29
V tejto chvíli na apache2 server beží a bude sa automaticky spúšťať pri každom štarte systému. Keď do adresného riadku webového prehliadača zadáme IP adresu servera, na ktorý sme nainštalovali apache2, tak by sme mali vidieť interpretáciu index.html súboru, ktorý je umiestnený v koreňovom adresáre servera. Týmto sme ukončili inštaláciu apache2 servera.

mariaDB
Podobným spôsobom budeme pokračovať inštaláciou databázového servera mariaDB
sudo apt install mariadb-server mariadb-client -y
sudo systemctl enable mariadb
sudo systemctl status mariadb
Hneď po inštalácii mariaDB sa odporúča spustiť skript, ktorý nás prevedie základným bezpečnostným nastavením databázy. Budeme postupovať podľa následujúcého popisu. Veľké písmeno ypsilon je predvolené, takže môžeme použiť Enter.
sudo mysql_secure_installation
Enter current password for root (enter for none): Enter
Set root password? [Y/n] n
Remove anonymous users? [Y/n] Enter
Disallow root login remotely? [Y/n] Enter
Remove test database and access to it? [Y/n] Enter
Reload privilege tables now? [Y/n] Enter
Teraz v databázovom servery vytvorime našu prvú databázu a nazveme ju nextcloud. nezabudnime v riadku 4 nastaviť heslo, pretože ho budeme neskôr potrebovať.
sudo mariadb
CREATE DATABASE nextcloud;
GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
Čo sa týka databázy, tak sme hotový a môžeme prejsť na inštaláciu PHP.
PHP
V dobe písania tohto článku už existuje PHP 8.0.6 (pozri aktuálne vydania), ale na Nextcloud Hub je zatiaľ stále odporučaná PHP ver. 7.3, alebo PHP ver. 7.4. Podľa supportu, bude PHP 7.4 možne aktualizovať do 28.11.2022. Predpokladám, že do tohto dátumu bude Nextcloud nachystaný na PHP 8. Takže i si nainštalujeme PHP ver. 7.4.
sudo apt update
sudo apt-get install gnupg2 -y
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
sudo apt update
sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-xml php7.4-mbstring php7.4-zip php7.4-gd php7.4-curl php7.4-bz2 php7.4-intl
sudo php --version
PHP 7.4.20 (cli) (built: Jun 4 2021 23:17:27) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.20, Copyright (c), by Zend Technologies
Môžeme si overiť či PHP je v poriadku a či beží. Vytvoríme php súboru v koreni webového servera a v prehliadači to preveríme
sudo echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
http://192.168.1.108/info.php

Pre náročnejšie weby, ktorým môže byť napr. Nextcloud sa odporúča použiť namiesto PHP-CGI, efektívnejší PHP-FPM, preto budeme používať radšej PHP-FPM. Takže najprv vypneme PHP7.4 a nainštalujeme php7.4-fpm. Povolíme moduly proxy_fcgi a setenvif. Povolíme conf a reštartujeme apache2 server.
sudo a2dismod php7.4
sudo apt install php7.4-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm
sudo systemctl restart apache2
Keď sa znova pozrieme na info.php http://192.168.1.108/info.php
, tak zistíme, že už to beži s PHP-FPM

Následne už tento súbor nepotrebujeme a môžeme ho vymazať
sudo rm /var/www/html/info.php
PHPmyAdmin (voliteľné)
PHPmyAdmin je webové rozhranie pre manažovanie mySQL/mariaDB databázových serverov. Táto časť nie je povinná, ale veľmi sa hodí k LAMP stacku, tak som považoval za vhodné aby tu bol aj tento návod. Určite sa nám hodí v budúcnosti pri vytváraní ďalších webových projektov využívajúcich služby databázy. V súčastnosti je PHPMyAdmin dostupný vo ver. 5.1.1
sudo mkdir -p /var/www/html/phpmyadmin/tmp
cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.tar.gz
sudo tar xzf phpMyAdmin-5.1.1-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpmyadmin
Na PHPmyAdmin budeme pristupovať len z vnútra našej LAN siete, preto nebudeme vytvárať žiadny virtualhost. Prístup bude jednoducho cez ip_adresa_servera/phpmyadmin. Ak sa v budúcnosti rozhodneme, že chceme pristúpovať k DB serveru aj z vonka, tak potom to budeme riešiť virtualhostom.
PHPMyAdmin štandardne používa cookies metódu autentifikácie, ktorá nám umožňuje prihlásiť sa do phpMyAdmin ako ktorýkoľvek platný užívateľ MariaDB pomocou cookies . Pri tejto metóde sa heslo používateľa MariaDB ukladá a šifruje pomocou algoritmu AES (Advanced Encryption Standard) v dočasnom súbore cookie. Teraz si upravíme konfiguračný súbor. Najprv si vytvorime kópiu a potom si upravíme originál konfig.
sudo cp /var/www/html/phpmyadmin/config{.sample,}.inc.php
sudo nano /var/www/html/phpmyadmin/config.inc.php
V tomto súbore si vyhľadáme riadok, ktorý začína sekvenciou $cfg[‚blowfish_secret‘] . Ak sme súbor otvorili pomocou editora nano, tak na vyhľadanie sekvencie použijeme klávesovú skratku Ctrl+W
. Celý riadok vyzera nejak takto (viď prvý riadok). My potrebujeme medzi apostrofy vygenerovať blowfish hash . Čiže pomocou nejakého blowfish generatora, alebo ak máme linux, tak pomocou utility pwgen si vygenerujeme hash, ktorý následne nakopírujeme medzi apostrofy (malo by to vyzerať nejak takto (viď druhý riadok)).
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['blowfish_secret'] = '$2y$10$NIADiC6oetyMWwAMb5eDFk7eQysmuNmqrJwp762YkF9MH.9TilSWa'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Konfiguračný súbor ešte nezatvárame a pomocou Ctrl+W
si vyhľadáme sekvenciu /* User used to manipulate with storage */ . V tomto bloku odkomentujeme 2 riadky. To bude pre užívateľa pma a nesmieme zabudnúť zadať aj heslo pre užívateľa (určite tam nesmieme nechať defaultný password). Odkomentovaním sa mysli, vymazať lomítka na začiatku riadku. Čiže celý blok by mohol vyzerať asi takto
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password_for_pma';
Ešte stále súbor nezatvárame a pomocou Ctrl+W
sa presunieme na /* Storage database and tables */. V tomto bloku odkomentujeme všetky riadky, takže to bude vyzerať následovne
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
Ešte stále budeme pracovať v tom istom súbore. Prejdeme na koniec súboru a tam vložíme tento riadok
$cfg['TempDir'] = '/var/www/html/phpmyadmin/tmp';
Teraz môžeme súbor ukončiť. použijeme Ctrl+X
písmeno Y
a Enter
. Súboru nastavíme práva 600 a rekurzívne zmeníme vlastníka pre adresár phpmyadmin. Po reštarte apache2 servera spustíme skript, ktorý vytvorí na servery databázu z tabuľkami
sudo chmod 660 /var/www/html/phpmyadmin/config.inc.php
sudo chown -R www-data:www-data /var/www/html/phpmyadmin
sudo systemctl restart apache2
sudo mariadb < /var/www/html/phpmyadmin/sql/create_tables.sql
Teraz už len vytvoríme užívateľa pma a pridelíme mu príslušné práva (nezabudnúť na heslo pre pma užívateľa). Potom môžme databázu opustiť príkazom exit
sudo mariadb
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password_for_pma';
exit
Teraz sa môžeme prihlásiť cez PHPmyAdmin na databázový server mariaDB ako užívateľ nextcloud. Zadaním adresy do webového prehliadača http://192.168.1.108/phpmyadmin
sa dostanme na prihlasovacie okno. Nastavíme si jazyk (language) a zadaním správneho užívateľského mena a hesla sa prihlásime do databázy

Na nasledujúcom obrázku vidíme, že sme sa úspešne prihlásili. V časti mariaDB sme vytvorili databázu nextcloud, takže ju môžeme v ľavej časti okna vidieť. Ako obyčajný užívateľ nemáme možnosť na servery vytvárať nové databázy, avšak v rámci našej databázy môžeme vykonávať rôzne operácie.

Záver
V tomto dieli sme vytvorili plnohodnotný LAMP stack s bežiacim PHP-FPM a nainštalovali sme aj webové admin rozhranie pre manažovanie databázového servera. Ako som uviedol v článku PHPMyAdmin nie je dôležitý pre chod LAMP stacku ani pre Nextcloud, avšak môže sa nám hodiť pre ďalšie webové projekty. V PHPMyAdmin rozhraní sa veľmi príjemne manipuluje z databázami (jednoduché migrovanie, mazanie, záloha a pod.). V ďalšom článku si nakonfigurujeme backendový apache2 server a frontendový reverzný proxy nginx,