Webový server s Raspberry Pi - Část 4: FTP a PhpMyAdmin

V minulém článku jsme nainstalovali a provedli základní nastavení webového serveru Apache, interpreta PHP a databázového serveru MySQL. Posledním krokem k získání základního programového vybavení serveru bude instalace FTP serveru pro snadnou správu souborového systému na serveru a instalace rozhraní phpMyAdmin pro snadnou správu databáze MySQL, nainstalované v minulém článku.

Instalace FTP serveru

Programů zajišťujících funkcionalitu FTP (File Transfer Protocol) serveru je více, my nainstalujeme jeden z nejznámějších, a podle reakcí uživatelů také nejlepších, známý pod zkratkou vsftpd, neboli Very Secure FTP Daemon. Very secure, protože se jedná o jeden z nejlépe zabezpečených programů, a daemon, protože tak jsou označovány UNIXové programy, běžící na pozadí systému bez nutnosti interakce s uživatelem a vyčkávající na nějakou událost, například právě na žádost FTP klienta o připojení k serveru.

Instalaci provedeme již známým příkazem

sudo aptitude install vsftpd

Nyní je třeba FTP server nakonfigurovat. Otevřeme tedy konfigurační soubor příkazem

sudo nano /etc/vsftpd.conf

(cesta k souboru se může lišit podle verze UNIXu) a v něm nalezneme následující parametr, který nastavíme na NO, čímž zakážeme anonymní přihlašování k serveru, tedy

anonymous_enable=NO

Provedené změny nezapomeneme při opouštění editoru klávesovou kombinací CTRL+X uložit a běh serveru podle nových nastavení zajistíme jeho restartem příkazem

sudo service vsftpd restart

V toto nastavení již server funguje. Jako přihlašovací údaje lze použít údaje kteréhokoli uživatele v systému, tedy například údaje pro uživatele pi, přičemž přihlášení proběhne do domovského adresáře daného uživatele. To je ovšem nepraktické. Vzhledem k tomu, že budeme FTP využívat pro nahrávání souborů budoucího webu, buď nastavíme jako domovskou složku uživatele pi složku /var/www příkazem

usermod -d /var/www/ pi

nebo ještě lépe, vytvoříme nového uživatele speciálně pro účely FTP, tedy

sudo useradd -d /var/www ftp-user
sudo passwd ftp-user
sudo chown ftp-user /var/www

První příkaz vytvoří uživatele ftp-user a nastaví mu požadovaný domovský adresář, druhým příkazem provedeme nastavení hesla pro tohoto uživatele a třetím nastavíme tohoto uživatele vlastníkem svého domovského adresáře (což, jak by se mohlo zdát, není automatické).

Zbývá server otestovat, připojíme se pomocí programu FileZilla. Samozřejmě existuje nepřeberné množství dalších klientů, včetně integrace FTP klienta do průzkumníka Windows (vřele nedoporučuji), stačí použít Google. Vyplníme IP adresu serveru a přihlašovací údaje.


rozhraní FTP klienta FileZilla


Instalace rozhraní phpMyAdmin

Rozhraní pro správu MySQL databáze je posledním základním kamenem webového serveru. Instalaci provedeme příkazem

sudo aptitude install phpmyadmin

Během instalace příslušnou volbou nastavíme server Apache 2 pro běh phpMyAdmina, čímž si značně zjednodušíme práci. Zbývá jen do složky /var/www/phpmyadmin nakopírovat soubory webového rozhraní. Ty stáhneme z domovského webu aplikace jako archiv příkazem

wget odkaz-na-stazeni.tar.gz /var/www

a následně do stejné složky rozbalíme příkazem

tar -xvzf nazev-souboru.tar.gz

Nyní již na adrese http:/ /ip-serveru/phpmyadmin nalezneme funkční webové rozhraní pro správu databáze.

Shrnutí

Zprovoznili jsme připojení k serveru přes FTP a administrační rozhraní pro správu MySQL databáze phpMyAdmin. Nyní jež máme vše potřebné pro základní běh webového serveru. V příštím článku se budu věnovat bezpečnostním rizikům a patřičnému nastavení takového serveru z nich vyplývajících.

Tags: 

41 Comments

Ahoj, díky za návod, pomohl.
Jen bych chtěl upozornit na možno chybu:
sudo nano /etc/vsftpd/vsftpd.conf
vytvoří nový soubor (prázdný, pochopitelně), v nové verzi Raspbianu je to asi jinak, každopádně pokud to tak někdo má tak je to
sudo nano /etc/vsftpd.conf
tam už to nastavení je.

Tak nastal problém. Ještě včera přenos souborů fungoval, ale teď se sice přihlásím, proběhne výpis složky, funguje mazání i přejmenování souborů ale nefunguje přenos na server: "451 Failure writing to local file." Hledal jsem na netu, ale nic kloudného jsem nenašel. Nějaké nápady?

Vyřešeno.
Bylo potřeba rozšířit oddíl s linuxem.
Pokud by to někdo potřeboval:
1) do konzole napsat: sudo raspi-config
2) vybrat "expand-rootfs"
3) potvrdit reboot
4) operace trvá 10-15 min

Sice nejsem autor ale ano "tar -xvzf" je na rozbalení zato "tar -cvzf" je na zabalení pro ty co to zkouší je připravena pěkná hláška :) Cowardly refusing to create an empty archive

Díky za návod, ale měl bych dotaz. FTP server vsftpd jsem nainstaloval a vše valí, ale pokud kopíruju na ftpko větší množství dat (cca 3000 souborů, 60 MB) dojde v průběhu kopírování k zamrznutí a znovu se to rozběhne asi po cca 1 minutě. Nemá na to vliv, zda kopíruji na SD kartu nebo externí USB disk. Pokud stejné množství dat zkusím překopírovat přes SSH (winscp), tak proběhne vše bez problémů. Pokud sleduju běžící procesy pomocí "top", tak ve chvíli, kdy kopírování zatuhne, tak "chcípne" i vsftpd, vše ostatní jede bez problémů. Nevíte, čím to může být?

Ještě drobnost. Pro neznalé, jako jsem třeba já je potřeba doplnit nutnost instalaci gd knihovny php. Několik dní jsem přemýšlel, proč mi obrázky nefungují. Ono totiž na windows je v těch WAMP balíkách už GD2 obsažená, tady ne. příkaz je sudo apt-get install php5-gd

Zdravím,

mám na RP instalovaný xbian připojený přes kabel k routru. K tomu samému routru je přes wifi připojen ntb. Pokud přes FTP kopíruji soubory na externí USB disk (USB3.0), který je připojen k RP, dostabu se na datový tok max. kolem 600kB/s. Pokud kopíruji soubor na paměťovou kartu RP, dostanu se max. na 2MB/s. V čem je problém? Jak je možné, že je to tak pomalé na externí disk. Jaké jsou vaše hodnoty při přenosu souborů? Nějak si neumím představit, že někdo na RP provozuje NAS.

Díky.

Patrně máš na USB disk (USB3.0) jako souborový systém NTFS.

nevím jestli je to jen záležitost nynější verze, ale musel jsem v sftpd.conf krom toho co jsi napsal výše, ještě navíc "odpoznámkovat" local_enable=YES; write_enable=YES; nejsem si jistý jestli je to všechno, ale dokud jsem to neudělal nešlo přes ftp mazat a zapisovat soubory, ber to jako případnou poznámku začátečníkům, co sem určitě budou ještě chodit...a abych nezapomněl dobrá práce, díky za tut (pro začátečníka v linuxu a serverech pecka)

cavko pocuj mam probel vsetko mam poinstalovane ale akonahhle chem skopirovat stranku a prenies ju cez ftp vo adresara www tak mi ftp vyhodi chybu nevies v com by to mohlo byt zle ?? vdaka

v /etc/vsftpd.conf by bylo ještě dobrý odkomentovat lokální uživatele "local_enable=YES" :-)
super návod, děkuju

Ahoj, pokud někomu nejde zápis na FTP, přesto že má odkomentáváno local_enable a write_enable, tak ještě doporučuji místo sudo chown ftp-user /var/www použít sudo chown -R ftp-user /var/www

Ještě jsem zjistil, že se soubory nahrané přes FTP ukládají s chmod 600, což znemožní zobrazení souborů. Aby se ukládaly s chmod 644, a tím se i zobrazily, tak stačí v konfigu odkomentovat hodnotu local_umask=022

Ahoj potřeboval bych poradit, zprovoznil jsem ftp server podle návodu a potřeboval bych abych mohl nahrávat stránky na usb flash disk, pripojil jsme fleshku pomoci prikazu mount /dev/sda1 /var/www/ ale nahrávat tam nemužu. Děkuji za každou radu

Mám podobný problém, Debian, moutnutý externí disk, obsah vidím ale nemohu nahrávat ani přepisovat. Poradí někdo? Děkuji.

Podle návodu jsem rozchodil server a nainstaloval na něj Drupal 7. Vše zatím funguje jak má, jen mi nejde zapnout v Drupalu čistá URL.
A pak ještě jedna drobnost. Nejdou mi instalovat nové moduly přímo z Drupalu. Píše mi to: "Instalace modulů a témat vyžaduje FTP přístup k serveru." S tím jsem se nikde na webhostingu nesetkal. Ale není to tak podstatné, na rozdíl od webhostingu používám Drush.
Ta čisté URL mě ale trápí a nevím co s tím.
Díky za radu

Můžete mi prosím poradit,jak nastavit čisté URL? Už se s tím probírám delší dobu, ale stále se nedaří. Vám to, jak koukám, funguje bez problémů.
Díky

Zdravím, děkuji za návod- Jediné co jsem nepochopil jak mám nakopírovat soubory webového rozhraní. Můžete mi někdo poradit přesně jakým přílazem stáhnout a rozbalit. Nevím jaký odkaz napsat aby se to stáhlo. Děkuji

zdravim,
viete mi poradit nefunguje mi prikaz

usermod -d /var/www/ pi

vyhadzuje mi to hlasku

usermod: user pi is currently used by process 678

Ahoj, mám problém - ani ne s Raspberry - jako MySQL. Instalalce proběhla v pohodě, Apache běží, PHP taky, ale mělo se to během insstalace zeptat na heslo do MySQL, což se nestalo. Předpokládám, že podle jiných instalací je uživatel root bez hesla, ale nechce mě to tam pustit. Jsem Linux začátečník, tak nevím, kde mám hledat chybku. Prosím, co jsem udělal špatně? Díky.

Dobrej,
jen malý dotaz když uploaduju obrázky pomoci FTP jak nastavit složku aby obrázkům přidělovala správné práva aby byly na webu zobrazena.

Zdravím, už se tím úspěšně prokousávám, ale chtěl bych Pi3 webserver použít na místo serveru Thingspeak.com, kde si sbírám data z Arduina-ESP8266, přes domácí wifi router. Nevím jak to síťově spojit. Se samotnou zobrazovací aplikaci si nějak poradím , ale nevím jak nasměrovat data z ESP8266 do webserveru Pi3. Za případné tipy děkuji.

Dekuji za odpoved, bylo by to nahravani primo do databaze, protoze server a ardu sensory jsou stale zapnute. Datovy typ je klasicky integer. Ardu-esp jako sberac dat a Pi3 maji svoje IP na vnitrni siti,nevim co nastavit aby server pi3 vzal data z dane vnitrni IP Arda. Nastaveni Ardu na odeslani dat na server neni problem. Zamerem je nahradit omezene externi free data cloudy svym raspi, myslim ze by to mohlo byt i na dalsi povedny a uzitecny tutorial. Dekuji

O autorovi

Autorovi je 29 let, a pracuje ve jako systémový inženýr ve společnosti Valeo. Studoval Kybernetiku a robotiku na Fakultě elektrotechnické ČVUT v Praze. Ve svém volném čase se zabývá hudbou a vším okolo ní, jezdí na kole nebo chodí plavat. Podívejte se na více informací nebo na Curriculum Vitae.