S novým Raspberry Pi 4 se dají dělat i výkonnostně zajímavé projekty a když starému domácímu serveru dochází dech, je Raspberry Pi 4 s SSD diskem ideální volba.
Stavba serveru a nastavení bootování z SSD disku
Pro vlastní stavbu serveru budeme potřebovat následující:
- Raspberry Pi 4B (2 GB RAM postačuje, cena 1.209 Kč u RPiShop)
- Napájecí zdroj Raspberry Pi USB-C 5,1V⎓3A (cena 247 Kč u RPiShop)
- Pasivní chladič, např vč. „krabičky“ (cena 199 Kč u RPiShop)
- Rozšiřující desku X876 M.2 NVME SSD (cena 889 Kč u RPiShop)
- Nějaký SSD disk M.2 NVMe např. na Alza.cz
Za investici cca 3.000 Kč získáme velmi rychlý domácí webový server s diskovým prostorem 256 GB.
Sestavení HW je tak jednoduché, že jej netřeba popisovat, tak rovnou přejdeme k instalaci a nastavení bootování z SSD disku. Stáhněte si Raspbian s desktopem a doporučeným software a pomocí programu balenaEtcher jej přeneste, jako obraz, na microSD kartu. Desktopová verze je potřeba kvůli přenesení diskových oddílů z microSD karty na SSD disk.
Zapněte Raspberry Pi 4 a počkejte než se nainstaluje Raspbian a zobrazí se nám desktopové prostředí. Spusťte terminál a pokračujte následujícími kroky.
Aktualizace operačního systému a firmware:
sudo apt-get update
sudo apt-get full-upgrade
sudo rpi-update
sudo reboot
Raspberry Pi se restartuje.
Instalace nejnovějšího zavaděče:
sudo rpi-eeprom-update -d -a
sudo reboot
Raspberry Pi se znovu restartuje.
Změny nastavení:
sudo raspi-config
Povolení SSH pro vzdálený přístup.
Změna zavaděče.
Změna bootování z USB (připojený SSD disk)
Vypnutí desktopového prostředí – později (po restartu) již nebude potřeba
Nyní v desktopovém prostředí přejdeme do Příslušenství a spustíme aplikaci SD card copier. V položce Copy From Device zvolte vaší microSD kartu a v položce Copy To Device se nám automaticky doplní náš SSD disk. Můžeme i zatrhnout volbu New Partition UUIDs, zvolíme Start a vyčkáme než se zkopíruje SD karta na SSD disk.
Nyní již můžeme Raspberry Pi vypnout a vyjmout SD kartu. Po opětovném zapnutí již Raspberry Pi naběhne ze SSD disku.
Instalace LAMP (MariaDB, Apache2, PHP, phpMyAdmin)
Správa uživatelů – přidání vlastního uživatele honza (kromě skupin pi a sudo), nastavení hesla pro root a po restartu , přihlášení jako uživatel honza a následném přihlášení jako root příkazem su
odstranění uživatele pi.
groups pi
sudo useradd -m -G adm,dialout,cdrom,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio honza
sudo passwd honza
sudo passwd root
sudo reboot
userdel -r pi
Instalace databázového serveru MariaDB
apt-get install -y mariadb-server mariadb-client
mysql_secure_installation
Instalace webového serveru Apache
apt-get install -y apache2 apache2-utils
apache2 -v
systemctl status apache2
systemctl reload apache2
systemctl enable apache2
apt-get -y install elinks
apache2ctl fullstatus
Instalace PHP 7.3
apt-get -y install php php-common
php -v
apt install php libapache2-mod-php php-cli php-fpm php-json php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath
a2enmod php7.3
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php
Instalace phpMyAdmin
apt-get -y install phpmyadmin
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
USE mysql;
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
exit
service mysql restart
Nyní si můžete vše zkontrolovat přes webový prohlížeč na těchto url adresách:
Apache: http://ip_vašeho_raspberry/
PHP: http://ip_vašeho_raspberry/phpinfo.php
phpMyAdmin: http://ip_vašeho_raspberry/phpmyadmin/
Na závěr můžete svůj nový webový server otestovat pomocí benchmarku. Můj výsledek:
# ab -n 2000 -c 30 http://127.0.0.1/
Server Software: Apache/2.4.38
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /
Document Length: 10701 bytes
Concurrency Level: 30
Time taken for tests: 0.543 seconds
Complete requests: 2000
Failed requests: 0
Total transferred: 21954000 bytes
HTML transferred: 21402000 bytes
Requests per second: 3683.59 [#/sec] (mean)
Time per request: 8.144 [ms] (mean)
Time per request: 0.271 [ms] (mean, across all concurrent requests)
Transfer rate: 39487.05 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.6 1 6
Processing: 3 7 1.5 6 17
Waiting: 1 5 1.3 5 14
Total: 4 8 1.8 7 22
Percentage of the requests served within a certain time (ms)
50% 7
66% 8
75% 8
80% 8
90% 10
95% 10
98% 15
99% 17
100% 22 (longest request)