Joomla se většinou instaluje na webhosting někam daleko do hlubin internetu. Ale třeba jste začátečníci, kteří si chtějí nejdříve práci s joomlou jen tak nezávazně osahat. Nebo chcete zkoušet věci, pro které Váš provider (zatím) nemá pochopení. Pak se Vám bude hodit Joomla na nějakém malém domácím serveru. A k tomu je Raspberry Pi jako stvořené.
Použití Raspberry Pi pro instalaci Joomly má pár drobných záludností. Není to nic nepřekonatelného, ale sbírat střípky informací od lidí kolem Raspberry Pi, kteří se Joomle nevěnují, může být poněkud zdlouhavé. Proto se zde pokusím shrnout vše, čím jsem si musel projít. Celý postup rozdělím do několika samostatných kroků:
- Instalace linuxu, připojení telnetem, prvotní aktualizace systému
- Instalace webového serveru Apache2
- Instalace PHP
- Instalace MySQL / mariadb
- Instalace Joomla!
Seznam to není dlouhý, tak nebudeme zbytečně otálet a vzhůru do díla.
1) Instalace linuxu, připojení telnetem, prvotní aktualizace systému
Nakopírování linuxu na paměťové médium je vcelku podrobně rozebrané na mnoha webech o Raspberry Pi, takže to zde nebudu opakovat. Postup můžeme najít třeba tady.
První rozhodnutí, které budeme muset udělat, je kam s ním. Běžně se používá SD karta. Na starších typech Raspberry Pi 1 a 2 jiná možnost téměř není. U typu Raspberry Pi 3 lze použít USB disk, nebo SSD disk mSATA připojený přes externí redukci do USB portu. Možnost spouštět systém z USB se ale musí nejprve aktivovat zápisem bitu usb_boot_mode = 1 do paměti Raspberry Pi. Postup najdeme třeba tady. Pro Raspberry Pi 4 tento postup neplatí. Autoři slibují jeho implementaci v budoucnu, ale nevím, jestli se tak už stalo. Nicméně lze použít SD kartu jen pro zavedení systému a celý linux i s uživatelskými programy a daty mít na USB disku. Trocha teorie je třeba tady.
Pokud budeme testovat Joomlu jen krátce, řekněme tak několik měsíců, stačí dobrá SD karta. Pokud ale své dílo budeme chtít testovat ve větším provozním zatížení a delší dobu, důrazně doporučuji použít USB disk, který vydrží mnohem větší nápor fyzických zápisů. USB fleška nic neřeší, je to stejná technologie jako SD karta.
Jako systém jsem použil oficiální Raspbian Buster. Pokud budeme Raspberry Pi používat pouze jako server pro Joomlu, stačí nejmenší varianta Lite. Abychom nemuseli připojovat monitor a mohli s Raspberry Pi hned od začátku komunikovat telnetem, vytvoříme v kořenovém adresáři oddílu naformátovaném na Fat32 textový soubor ssh. Může mít nulovou velikost, ale název musí být jen tyto tři malá písmena. Pokud jej budeme vytvářet na počítači s windows, kde není povoleno zobrazení přípon, bude se soubor nejspíš jmenovat ssh.txt, i když vy budete vidět jen ssh - a to je špatně. Při prvním startu Raspberry Pi hledá soubor ssh a pokud existuje, povolí přístup z terminálu telnet - třeba programem putty.
Při prvním připojení telnetem je defaultní jméno / heslo nastavené na pi / raspberry. Hned po připojení bychom měli provést základní konfiguraci.
sudo raspi-config
Zde doporučuji nastavit alespoň tyto položky:
- Change user password
- Boot Options: B1 Desktop/CLI, B1 Console
- Localization: I2 Change Timezone, Europe, Prague
- Localization: I4 Change Wi-fi Country, CZ Czech Republic
- Advanced Option: A1 Expand Filesystem
Poslední položka má smysl pouze pokud používáte SD kartu. Pro USB médium ji Raspbian provede automaticky při prvním startu. Na závěr těchto úprav je potřeba potvrdit restart.
Při druhém připojení telnetem, teď už pod novým heslem, doporučuji provést aktualizace.
sudo apt-get update
sudo apt-get upgrade -y
sudo reboot
Pro úplnost ještě zmíním možnost další aktualizace.
sudo rpi-update
sudo reboot
Ale pro naše využítí Raspberry Pi jako server pro Joomlu tato aktualizace už není důležitá. Tím máme Raspberry Pi připravené k provozu.
2) Instalace webového serveru Apache2
Program Apache2 je asi nejrozšířenější webový server. Existují i alternativy, například Nginx nebo lighttpd, ale těmi se nebudu zabývat. Instalace je jednoduchá.
sudo apt-get install apache2 -y
Úspěšnost instalace si můžeme snadno ověřit tak, že do libovolného webového prohlížeče zadáme jako adresu IP vašeho Raspberry Pi.
http://192.168.xxx.xxx
Apache by měl odpovědět svou defaultní stránkou.
Program Apache2 používá jako kořenový adresář svého webu /var/www/html/ Přístupová práva pro zápis jsou povolena jen vlastníku adresáře, proto je rozšíříme i na ostatní uživatele.
sudo chmod -R 777 /var/www
Parametr -R říká, že změna platí i pro všechny podadresáře, tedy i pro původní /html/. Pokud Raspberry Pi provozujeme jen doma v lokální síti bez přístupu cizích lidí, nemusíme řešit bezpečnostní souvislosti a to vám zjednoduší práci.
Na závěr ještě pomocí textového editoru zkontrolujeme a případně upravíme konfigurační soubor Apache2
sudo nano /etc/apache2/apache2.conf
zde vyhledáme sekci Directory /var/www/:
Directory /var/www/
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
/Directory
a případné rozdíly opravíme podle uvedeného příkladu. Pak změny uložíme a restartujeme Apache2 příkazem
sudo service apache2 restart
3) Instalace PHP
Skriptovací jazyk PHP je srdcem či motorem Joomly. Nezkoumal jsem, jestli už je součástí Raspbianu Lite, protože stejně musíme doinstalovat knihovny pro součinnost se serverem Apache2. Tak to vezmeme všechno z jedné vody.
sudo apt-get install php libapache2-mod-php -y
sudo service apache2 restart
Úspěšnost zkontrolujeme spuštěním nějakého php skriptu. Nejprve smažeme soubor index.html, který vytvořil Apache2
rm /var/www/html/index.html
a potom místo něj vytvoříme skript index.php
echo "<?php phpinfo ();?>" > /var/www/html/index.php
Když teď do libovolného webového prohlížeče zadáme jako adresu IP vašeho Raspberry Pi, zobrazí se vám výsledek vytvořený tímto skriptem.
4) Instalace MySQL / mariadb
Posledním programem, který Joomla potřebuje pro svou funkčnost, je databáze. Zde mě čekalo nemilé překvapení. Obvykle se používá MySQL, bohužel Raspbian od verze Buster ji už ve svých repozitářích nemá. Pro naše použití by plnohodnotnou náhradou měla být databáze mariadb.
sudo apt-get install mariadb-server -y
Teď vyzkoušíme její funkčnost.
sudo mysql -u root -p
zde zadáme heslo uživatele pi, které jsme si změnili na začátku v bodu 1). Pak vypíšeme info o verzi pomocí SQL příkazu.
SELECT VERSION();
Databáze běží. Ovšem obsahuje přístupová práva pro jediného uživatele root. Chvíli mi trvalo, než jsem zjistil, že pokud se při instalaci Joomly snažím připojit k databázi jako uživatel root, neuspěji. Objeví se chybové hlášení: Could not connect to MySQL server. Je potřeba vytvořit libovolného jiného uživatele. Já jsem vytvořil uživatele hugo s heslem spoluprace.
CREATE USER 'hugo'@'localhost' IDENTIFIED BY 'spoluprace';
Protože nový uživatel nic moc nemůže, přiřadíme mu potřebná práva.
GRANT ALL PRIVILEGES ON *.* TO 'hugo'@'localhost' WITH GRANT OPTION;
Ještě můžeme zkontrolovat, že nově vytvořený uživatel skutečně existuje.
SELECT User FROM mysql.user;
A pak už můžeme práci s databází ukončit.
QUIT
Posledním úkolem je umožnit php skriptům, aby mohly pracovat s databází. Proto nainstalujeme program phpmyadmin, který vše potřebné zařídí.
sudo apt-get install phpmyadmin -y
Během instalace se zeptá, jaký typ webového serveru používáme - mezerníkem vybrat apache2. Pak se zeptá, jestli spustit konfiguraci - Ano. Na závěr se zeptá na application password. Já jsem zadal stejné, jako pro vytvořeného uživatele hugo: spoluprace.
5) Instalace Joomly
Tím by měly být všechny přípravné práce hotové a můžeme se pustit do vlastní instalace Joomly. Zde už by měl fungovat obecně platný postup, takže jen ve zkratce.
Nejprve smažeme soubor index.php, který jsme vytvořili v adresáři /var/www/html/ a místo něj sem nakopírujeme celou Joomlu. Můžeme to udělat pomocí libovolného ftp klienta, třeba klientem FileZilla. Komu se líbila práce z terminálu, může zkusit:
rm /var/www/html/index.php
wget https://github.com/joomla/joomla-cms/releases/download/3.9.10/Joomla_3.9.10-Stable-Full_Package.tar.gz
tar -xvzf Joomla_3.9.10-Stable-Full_Package.tar.gz -C /var/www/html
rm /home/pi/Joomla_3.9.10-Stable-Full_Package.tar.gz
Samozřejmě číslo verze si musíme upravit ručně podle aktuálního stavu. Příkaz wget stáhne soubor do adresáře /home/pi/. Odtud ho příkazem tar rozbalíme do adresáře /var/www/html/ a pak jej už můžeme příkazem rm smazat.
V tuto chvíli se ještě obvykle upravují přístupová práva.
cd /var/www/html
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
sudo chown -R www-data .
Ta tečka za www-data je důležitá, tak ji nepřehlédněte. A chvíli to trvá, tak mějte trpělivost. Instalaci Joomly spustíme tak, že do webového prohlížeče zadáme IP adresu vašeho Raspberry Pi s cestou ke spouštěcímu souboru.
http://192.168.xxx.xxx/installation/index.php
Na první stránce není co řešit, prostě zadáme své údaje. Na druhé stránce musíme správně zadat údaje pro práci s databází. Já jsem je vyplnil takto:
- typ databáze: MySQLi
- hostitel: localhost
- jméno správce: hugo
- heslo: spoluprace
- název databáze: hugodb
- předpona tabulek: hu01_
- starou databázi: odebrat
Na poslední stránce v části Kontrola před instalací by už nemělo být nic červené. Pak tlačítko nainstalovat. Alternativně tlačítko Instalace jazyků. Na závěr tlačítko Odstraňte instalační složku. A tím je hotovo.
Pokud si budeme chtít instalaci Joomly zopakovat, stačí smazat vše v adresáři /var/www/html/ a pak znovu projít bod 5). Pokud k mazání použijeme ftp klienta s přístupovými právy běžného uživatele pi, moc neuspějeme. Proto pro něj musíme nejdřív z terminálu povolit přístup k adresářům a souborům.
sudo chown pi.pi /var/www/html -R
Pak už lze ftp klientem předchozí instalaci smazat.
Raspberry Pi