NOVINKY:

30. dubna 2009 (09:00)
Vyšla jarní verze distribuce Mandriva Linux 2009.1. Nově nasazené graficke prostředí KDE 4 je na rozdíl od předchozí verze mnohem dál, posunulo se od hezkého experimentu k plně použitelnému systému. Česká knižní edice k této verzi nebude, takže nezbývá, než stahovat a s problémy se obrátit na fórum.
[Všechny informace v češtině] [Představení hlavních novinek] [Poznámky k vydání]
[Download] [Errata] [Errata česky]

další novinky >>

Novinky jinde:
Root | Abclinuxu | Linuxsoft

Vyhledávání:

 


Proč používat Linux  Wikipedie - největší otevřená encyklopedie na internetu v češtině.
 MENU: Články a návody | Jak na to | Překlady | Odkazy | Obrázky z Linuxu  | Download |

Zkušební server s Apache, PHP a MySQL snadno a rychle

Ukážeme si, jak rychle rozběhnout webový server, který bude dodávat stránky prohlížeči, PHP preprocesor, který bude zpracovávat naše scripty a k tomu databázi, kam si budeme ukládat data. To všechno na Mandriva Linuxu a na našem domácím počítači. Bez jakékoliv sítě, jen s otevřeným svobodným softwarem. Verze Mandrivy není důležitá, popsané vybavení byste měli dostat s každou distribucí.

 


Tento článek je zastaralý. V moderní distribuci je možné celou instalaci zvládnout jednoduchým nainstalováním metabalíčku task-lamp-php. Aktualizace článku se připravuje.


1. krok - webový server s podporou PHP

Nebudeme chodit ke kováříčkovi, když můžeme mít kováře. Apache je server, který servíruje většinu stránek na internetu.

Instalujeme balíček apache2. Buď z ovládacího centra - instalace software, nebo pomocí urpmi. Postup s urpmi je u všech balíčků stejný. Otevřeme textovou konzolu, přihlásíme se jako root (su [Enter], heslo [Enter]) a zadáme jméno balíčku jako parametr. V případě Apache tedy urpmi apache2 [Enter]. Kromě apache2 se nabídnou k odsouhlasení a poté nainstalují také další závislosti: apache-conf, apache2-commonapache2-modules. Pokud vládnete angličtinou, je samozřejmě více než doporučeno instalovat dokumentaci. Balíček apache2-manual.

Aby náš server správně interpretoval scripty psané v PHP, stačí dodat příslušný modul. Balíčky s moduly jsou označeny apache2-mod_popis_modulu. Nás zajímá apache2-mod_php, který si vyžádá libphp_common.

Rekapitulace nainstalovaných balíčků:

Server Apache2: apache2
apache-conf
apache2-common
apache2-modules
Dokumentace: apache2-manual
PHP: apache2-mod_php
libphp_common

Jestli svůj Linux instalujete z CDček, pak při diskotéce budete pravděpodobně potřebovat CD1, kde je větší část balíčků a CD2, kde je manuál.

Po úspěšné instalaci se přesvědčíme o funkčnosti Apache. Na konzoli jako root zadáme: service httpd start [Enter]. Vypíše se: "Starting httpd2: [ OK ]". Jestli ne, jsme v maléru, ale o tom bychom museli vědět předem, protože by se nám nějak nezdařila instalace, což by se projevilo chybovým hlášením.

Spustíme libovolný webový prohlížeč a do adresního řádku napíšeme http://localhost [Enter]. Apache nám naservíruje úvodní stránku "Welcome to localhost" a na ní bude něco jako: "This site is powered by: Apache-AdvancedExtranetServer/2.0.48 (Mandrake Linux/5mdk) PHP/4.3.4!". Z této úvodní stránky se také rovnou můžeme podívat na dokumentaci, pokud jsme ji ovšem nainstalovali. Právě jsme z vlastního stroje udělali webový server.

Pustíme se do zkoušení vlastnoručně vyrobených stránek. Apache ve výchozím nastavení hledá stránky, na dvou místech. V adresářích /var/www/html~/public_html. To druhé znamená, že jestliže v domácím adresáři uživatele existuje adresář public_html, je možné do prohlížeče zadat adresu http://localhost/~jméno_uživatele/stránka.html a požadovaná stránka je zobrazena. Vynecháme-li jméno stránky, zobrazí se index.html. Pokud neexistuje, obdržíme chybu "Forbidden...".

Uživatel "pepa" tedy ve vlastním domovském adresáři vytvoří podadresář "public_html" a do něj uloží dva testovací soubory:

index.html bude mít obsah:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<title>test</title>
</head>
<body>
<p>Toto je testovací stránka uložená v souboru 
   /home/pepa/public_html/index.html.</p>
</body>
</html>

info.php bude mít jen jeden řádek:

<?php phpinfo(); ?>

Když potom v prohlížeči zadáme http://localhost/~pepa/, uvidíme větu "Toto je testovací stránka". Když zadáme http://localhost/~pepa/info.php, uvidíme informační stránku PHP.

 

Rekapitulace a poznámky:

  • Po instalaci Apache, kdy platí výchozí hodnoty konfigurace, musíme svoje stránky ukládat do podadresáře ~/public_html nebo /var/www/html. Samozřejmě se dá zařídit změna jména domény (místo localhost), několik domén i jiné umístění souborů. Jestli něco takového potřebujete, hledejte Virtual Hosts a seznamte se s funkcí DNS serveru. Kvůli domácímu zkoušení to ale téměř nikdy není zapotřebí, zvlášť pokud při psaní scriptů prozíravě nepoužíváme žádné absolutní cesty.
  • Výchozím souborem je index.html. Pozor, nikoliv jen .htm.
  • Na jiné soubory se v adrese odkazujeme http://localhost/~jméno_uživatele/podadresář/jméno_souboru.přípona. Nezapomeňte na vlnovku před přihlašovacím jménem uživatele.
  • Pokud se nám správně zobrazí stránka, jejímž jediným obsahem je PHP příkaz phpinfo(), je PHP funkční a navíc máme přehled o celé konfiguraci.
  • Soubory i podadresáře se stránkami musí mít správně nastavená práva pro vstup a čtení ostatními uživateli. Jinak obdržíme hlášení Warning: ...failed to open stream: Permission denied.

Ovládání serveru Apache:

  • výkonný soubor (daemon) apache se jmenuje httpd
  • příkazy musíme zadávat jako root
  • start serveru: service httpd start [Enter], nebo apachectl start
  • zastavení serveru: service httpd stop [Enter], nebo apachectl stop
  • restart serveru: service httpd restart [Enter], nebo apachectl restart
  • informace o stavu serveru: service httpd status [Enter], nebo apachectl status
  • rozšířené informace o stavu serveru: service httpd extendedstatus [Enter], nebo apachectl extendedstatus
  • Spouštění serveru při startu počítače můžeme upravit pomocí ovládacího centra v sekci Systém / Služby, najít httpd a zaškrtnout nebo nezaškrtnout "Při spuštění". Pokud jen občas něco zkoušíme, je pravděpodobně zbytečné spouštět Apache při každém startu počítače.
  • konfigurační soubory Apache najdete v adresáři /etc/httpd/conf
  • logy (záznamy o činnosti) jsou v adresáři /var/log/httpd

 

2. krok - databáze

Nainstalujeme MySQL, což je jedna z nejoblíbenějších databází. Předpokládá se, že jsme začátečník a tak se nebudeme zdržovat rozumováním o tom, jestli je právě MySQL tou nejlepší volbou. S něčím se začít musí a k tomu je MySQL stejně dobrá jako PostgreSQL nebo Firebird.

Budeme potřebovat balíčky MySQLphp-mysql (podpora MySQL pro PHP). Vyžadované závislosti jsou:
perl-CGI
perl-DBI
libmysql12
MySQL-client
MySQL-common
perl-Mysql

Většina balíčků je opět na 1. CD.

Po skončení instalace databázový stroj spustíme. K tomu použijeme už dobře známý (a pouze rootovi přístupný) příkaz na ovládání služeb service. Zadáme service mysql start [Enter]. Odpověď by měla být "Startuji MySQL server [ OK ]".

Místo service můžeme použít příkaz mysqld_safe & [Enter] (ampersand je tam proto, aby se služba spustila na pozadí). V tom případě dostaneme hlášku: Starting mysqld daemon with databases from /var/lib/mysql a dáme [Enter].

Jsme nedůvěřiví a tak zkusíme, jestli databázový server opravdu jede: mysqladmin -p ping [Enter], na žádost o heslo "Enter password:" dáme jen [Enter]. Měli bychom obdržet: "mysqld is alive". Opět můžeme použít i service mysql status.

Ukončit běh MySQL lze příkazem mysqladmin -p shutdown [Enter] nebo překvapivě service mysql stop.

K administraci a monitorování databáze slouží konzolový program mysql, ale zmíním se o něm jen letmo, protože dále se budeme zabývat phpMyAdminem, s jehož pomocí můžeme většinu věcí udělat mnohem lehčím způsobem.

Program spustíme takto: mysql -u root -p [Enter]. Překlad do lidštiny: "přihlas mě jako superuživatele a zeptej se mě na heslo". Jaké další parametry můžeme použít zjistíme, zadáme-li v konzoli mysql --help [Enter]. Po instalaci je heslo roota prázdné, takže na výzvu odpovíme jen [Enter]. Pozor na to, že root v MySQL nemá se správcem celého systému nic společného. Hesla mohou, a asi by i měla, být různá. Dostane se nám přivítání "Welcome to the MySQL monitor". Nyní můžeme zadávat příkazy vždy ukončené středníkem. Například:

  • Nové heslo pro přihlášeného roota: set password=password('rootovo_nové_heslo'); [Enter]
  • Založení uživatele "pepa", který má všechna práva ke všem databázím, může vytvářet další uživatele a přidělovat práva, ale smí se přihlásit jen z počítače, na kterém přímo běží MySQL: grant all privileges on *.* to pepa@localhost identified by 'pepovo_heslo' with grant option; [Enter] Nově založený uživatel bude MySQL monitor spouštět s parametry mysql -u pepa -p [Enter].
  • MySQL monitor provede všechny standardní SQL příkazy. Například založení nové databáze s názvem "zkusebni": create database zkusebni; [Enter]
  • Nastavení nové databáze jako aktivní: use zkusebni; [Enter]
  • Založení tabulky s adresami kamarádů:
    CREATE TABLE kamaradi
    (ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    Jmeno VARCHAR(20) NOT NULL,
    Prijmeni VARCHAR(30) NOT NULL,
    Email VARCHAR(40)); [Enter]
  • Výpis databází: show databases; [Enter]
  • Výpis tabulek v databázi: show tables; [Enter]
  • Výpis struktury určené tabulky: describe kamaradi; [Enter]

MySQL monitor ukončíme příkazem: quit [Enter].

 

3. krok - nástroj pro snadnou administraci databází

phpMyAdmin je přesně to co potřebujeme. Zajímavé na něm je, že je tvořen sadou PHP scriptů doplněných nějakým tím Javascriptem. To pro nás znamená následující:

  • Za prvé, že k jeho provozu potřebujeme webový server s interpreterem PHP. Shodou okolností jsme nedávno jeden nainstalovali.
  • Za druhé, že se nemusíme bát žádných dalších závislostí a klidně si můžeme pořídit nejnovější verzi z Cookeru.
  • Za třetí, budeme hledat balíček s příponou noarch.rpm, nikoliv i586.rpm. Scripty jsou na platformě nezávislé.

V současné době je k dispozici verze 2.6 (přibližně 2,3 MB v balíčku). Ne, že bychom nemohli použít tu, co jsme dostali s distribucí, ale proč si nedopřát nové vlastnosti a vzhled. Stahujeme tedy z Cookeru (jak vyhledávat je napsáno na stránce s odkazy) a instalujeme zcela obvyklým způsobem urpmi phpMyAdmin-2.6.0-1mdk.noarch.rpm [Enter], nebo z ovládacího centra. Číslo verze se časem samozřejmě může lišit.

Po instalaci je třeba provést nastavení dvojího druhu. Jednak ta základní, která jsou nutná k samotnému běhu programu phpMyAdmin a potom rozšiřující nastavení, která přidávají další funkčnost. Všechno se provádí v konfiguračním souboru config.inc.php. Nebudu to moc rozvádět, jde nám prostě o to, aby to chodilo. Chcete-li tomu víc porozumět, všechno, co potřebujete, je v dokumentaci.

Základní nastavení

  • Otevřeme konzolu a přihlásíme se jako root (stále stejným způsobem su [Enter], heslo [Enter]).
  • Přejdeme do adresáře /var/www/html/admin/phpMyAdmin/ (například pomocí příkazu cd).
  • Najdeme soubor config.inc.php a uděláme si jeho kopii pro všechny případy (například cp config.inc.php config.inc.zal [Enter]).
  • V původním config.inc.php provedeme třeba pomocí mc, krusaderu nebo kate toto:
    • ['blowfish_secret']: Najdeme odpovídající řádek a upravíme ho takto:
      $cfg['blowfish_secret'] = 'sem_napíšeme_cokoliv';
      Pokud to neuděláme, uvidíme na titulní stránce phpMyAdminu: "Nastavte klíč pro šifrování cookies v kofiguračním souboru (blowfish_secret)".
    • ['PmaAbsoluteUri']: Najdeme odpovídající řádek a upravíme ho takto:
      $cfg['PmaAbsoluteUri'] = 'http://localhost/admin/phpMyAdmin/';
      Pokud to neuděláme, uvidíme po přihlášení hlášku "Parametr $cfg['PmaAbsoluteUri'] MUSÍ být nastaven v konfiguračním souboru!"
  • Spustíme prohlížeč, do adresního řádku napíšeme http://localhost/admin/phpMyAdmin/ [Enter] (přesně velká písmena) a zobrazí se úvodní formulář. V políčku "Language:" vybereme Czech, do formuláře vypíšeme jméno a heslo pro přístup, potvrdíme a uvidíme:
    "Vítejte v phpMyAdmin 2.6.0 MySQL 4.0.18-log běžící na serveru localhost, uživatel přihlášen jako pepa@localhost".

 

Teď už je možno začít pracovat. Například pokud jste si nezaložili žádného uživatele nebo nezměnili heslo roota, můžete to udělat z titulní stránky kliknutím na položku "Oprávnění". Pokud ale chcete využít všechny schopnosti phpMyAdminu, musíte si ještě trochu zakonfigurovat. Jinak se vám bude dostávat hlášení podobných tomuto: "Některé funkce pro práci s propojenými tabulkami byly vypnuty". Těmi schopnostmi se myslí například udržování přehledu o relacích mezi tabulkami, ukládání oblíbených dotazů, komentáře, tvorba PDF stránek nebo MIME transformace.

Tyto přídavné schopnosti jsou zajištěny takto: phpMyAdmin používá pomocnou databázi, která obsahuje pomocné tabulky. S pomocnou databází nakládá s pomocí pomocného uživatelského účtu. Nastavení všech těchto nápomocně-pomocných věcí musí být uvedeno v konfigurační souboru config.inc.php.

Pokud se v tom chceme šťourat, podíváme se do dokumentace, která se nám nainstalovala do souboru http://localhost/admin/phpMyAdmin/Documentation.html. Tam najdeme popisy struktur pomocných tabulek a další informace. Když to chceme mít rychle za sebou, uděláme následující:

Rozšiřující nastavení

  • Pomocnou databázi vytvoříme tak, že si stáhneme soubor s SQL příkazy pma-sql_dump.sql a předhodíme ho phpMyAdminu, který zajistí jeho provedení. Buď v levé horní části klikneme na malou ikonku označenou "SQL okno" a do okna, které se nám otevře nakopírujeme příkazy ze souboru, nebo zvolíme nějakou databázi a na její SQL záložce můžeme soubor přímo nahrát. (Poznámka: soubor jsem vyrobil pomocí funkce "Export" z vlastní fungující instalace phpMyAdminu.)
  • Pomocného uživatele, pod jehož jménem bude phpMyAdmin provádět svoje akce, vytvoříme z titulní stránky kliknutím na "Oprávnění" a potom "Přidat nového uživatele". Ve formuláři zadáme Jméno: pma, Počítač: localhost, Heslo: nějaké_heslo. Žádná globální oprávnění nepřidělíme a klikneme na Proveď. V sekci "Oprávnění pro jednotlivé databáze" z roletky zvolíme "pma_db" a na následující stránce naklikáme tato oprávnění: SELECT, INSERT, UPDATE, DELETE a opět dáme Proveď. Uživatel je založen.
  • Nakonec upravíme tyto řádky v config.inc.php:
    $cfg['Servers'][$i]['pmadb'] = 'pma_db';
    $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';.
    $cfg['Servers'][$i]['relation'] = 'pma_relation';.
    $cfg['Servers'][$i]['table_info'] = 'pma_table_info';.
    $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_coords']  = 'pma_table_coords';
    
    $cfg['Servers'][$i]['controluser'] = 'pma';
    $cfg['Servers'][$i]['controlpass'] = 'nějaké_heslo';
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    $cfg['Servers'][$i]['user'] = '';
    $cfg['Servers'][$i]['password'] = '';
    

Uložíme, obnovíme stránku phpMyAdmin v prohlížeči a tím končí naše konfigurační snažení.

 

Zkoušíme práci s databází:

Vytvoříme databázi "zkusebni", v ní tabulku "kamaradi", naplníme ji daty a budeme ji prohlížet z našeho scriptu. Samozřejmě nesmíme zapomenout vytvořit také omezeně oprávněného uživatele, s jehož jménem a heslem bude script k databázi přistupovat.

  • Spustíme phpMyAdmin a přihlásíme se. Stále jsme na svém vlastním počítači, takže předpokládám, že jsme sami sobě přidělili dost práv na to, abychom mohli vytvářet nové databáze i uživatele.
  • Na titulní stránce do políčka "Vytvořit novou databázi" napíšeme zkusebni a klikneme na Vytvořit.
  • Na následující stránce vidíme formulář "Vytvořit novou tabulku". Napíšeme kamaradi, Sloupce: 4 a klikneme na Proveď.
  • Dále následuje formulář pro definici struktury tabulky. Vyplníme ho takto:

    Sloupec Typ Délka Nulový Extra
    id INT   not null auto_increment označíme políčko primárního klíče
    prijmeni VARCHAR 30 not null  
    jmeno VARCHAR 20 not null  
    email VARCHAR 40 not null  
    a klikneme na Ulož.
  • phpMyAdmin ohlásí "Tabulka kamaradi byla vytvořena". Klikneme na záložku "Vložit" a naplníme sloupec "Hodnota" nějakými zkušebními daty. Položku id nevyplňujeme, protože jsme pro ni použili vlastnost auto increment. Když jsme vložili několik vymyšlených adres, založíme si ještě uživatele, což je popsáno výše v odstavci o rozšířených nastaveních phpMyAdmin. Vytvoříme si tedy uživatele "web" s heslem "tajneheslo123" a přidělíme práva výhradně k databázi "zkusebni".
  • Můžeme se pustit do psaní scriptu s názvem zkusebni.php:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
    <title>Přístup ke zkušební databázi</title>
    </head>
    <body>
    <?php 
    @mysql_connect(localhost, web, tajneheslo123)
     // místo localhost také můžeme použít IP adresu v uvozovkách
     or die("Databáze není dostupná, kontaktujte administrátora: ".mysql_error());
    
    @mysql_select_db(zkusebni) or die("Nelze vybrat databázi: ".mysql_error());   
    
    $dotaz = "SELECT prijmeni, jmeno, email FROM kamaradi ORDER BY prijmeni";
    
    $vysledek = mysql_query ($dotaz) or die("Dotaz nelze provést: ".mysql_error());
    
    echo "\n<table>\n";
    
    while ($zaznam = mysql_fetch_array($vysledek, MYSQL_ASSOC)) 
    	{
    	echo "<tr>\n";
    	foreach ($zaznam as $hodnota) 
    		{ echo "\t<td>$hodnota</td>\n";  }
    	echo "</tr>\n";
    	}
    echo "</table>\n";
    ?>
    </body>
    </html>
    
  • Uložíme do podadresáře public_html ve svém domácím adresáři, spustíme libovolný prohlížeč, do adresy zadáme http://localhost/~moje_jméno/zkusebni.php [Enter] a jestli jsme nikde neudělali žádnou chybu, dostaneme tabulku, která může vypadat nějak takhle:

    AdámekAdamadam@adamek.cz
    NováčkováJosefínajosefina@novackova.cz
    NovákJosefjosef@novak.cz
    ŽabákováŽanetazaneta@zabakova.cz

 

Doufám, že po přečtení tohoto článku nabudete přesvědčení, že každý začátek nemusí být těžký.

 

Odkazy:

Hlavní programy

Informační zdroje

Další databázové stroje

Další nástroje pro administraci MySQL


 

Verze tohoto dokumentu:

  • 13.10.2004 - doplněno: Zkoušíme práci s databází a konečně publikováno
  • 12.10.2004 - doplněno: phpMyAdmin, mnoho úprav všude možně
  • 3.10.2004 - původní verze

 

Komentáře

1. [20.08.2008] Změna domovskeho adresare

Poslal rellik (rellik zavinac email tecka cz)

Potřeboval bych poradit ohledně změny domovského adresáře. Adresář sem si změnil na /home/rellik/server tuto změnu sem provedl v configu. To funguje. localhost se načítá ze zadaného umístění. Problém mám v tom že pokud tam není nejaký index (index.php / html), tak se zobrazí "přístup odmítnut" Jakou funkci v configu a nebo php.ini mám povolit / změnit aby se mi zobrazil obsah adresáře?

OS: Mandriva 2008.1

2. [21.08.2008] Re: Změna domovskeho adresare

Poslal Aleš Tošovský

řešením pravděpodobně bude umístit do httpd.conf direktivy:

<Directory /home/rellik/server>
 Options +Indexes
</Directory>

Další informace najdete v dokumentaci: http://wiki.apache.org/httpd/DirectoryListings


© Aleš Tošovský - linux.tosovsky.info