[[obsah|Hlavní stránka]] ===== Webový server ===== {{:navody:48x48:categories:applications-internet.png }} Pomocí trojice aplikací //MySQL//, //PHP// a //Apache// můžete svůj linuxový počítač "proměnit" v plnohodnotný webový server. O této trojici se někdy hovoří jako o tzv. //LAMP// (//**L**inux, **A**pache, **M**ySQL, **P**HP//). ==== Instalace webového serveru Apache ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[instalace_aplikaci#Přidání repozitáře]]. * Přečtěte také kapitolu [[http://docs.fedoraproject.org/en-US/Fedora/15/html/Deployment_Guide/ch-Services_and_Daemons.html#s3-services-configuration-enabling|service to be automatically started at boot time]] //Apache// je pravděpodobně nejpopulárnější webový server používaný nejen pod //Linux//em ale také pod //OS Windows// a představuje jakýsi "benchmark", podle kterého jsou hodnoceny ostatní servery. Tato aplikace je v současné době udržovaná nadací //Apache Software Foundation//.\\ Pomocí následujících příkazů nainstalujete potřebné balíčky a spustíte ''httpd'' server. yum -y install httpd yum -y install mod_ssl yum -y install httpd-manual yum -y install mod_perl yum -y install mod_auth_mysql yum -y install crypto-utils yum -y install mod_python /etc/init.d/httpd -k start Pokud se Vám spuštění httpd nepodaří, je možné, že byla instalována jako služba. V tomto případě server spustíte příkazem service service httpd start Funkčnost webového serveru ověříte pomocí odkazu [[http://localhost]] popř. [[http://127.0.0.1]]. ==== Instalace PHP ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[instalace_aplikaci#Přidání repozitáře]]. * Přečtěte si kapitolu [[web#Instalace webového serveru Apache]]. //PHP// je programovací jazyk určený pro vývoj dynamických webových stránek. Je používán především v aplikacích, které jsou spouštěny na straně serveru. Umožňuje tak implementovat složitější procedury, čím se liší od klasického //HTML//, který je pouze formátovacím jazykem a tudíž nezvládá např. cykly nebo vyhodnocování podmínek.\\ Instalaci a spuštění //PHP// serveru lze provést pomocí následujících příkazů yum -y install php yum -y install php-mysql /etc/init.d/httpd -k restart pokud server běží jako služba obnovení provedete příkazem service httpd restart Pomocí příkazu gedit /var/www/html/testphp.php otevřete soubor //testphp.php// a na jeho konec vložte následující řádek Soubor uložte. Funkčnost //PHP// serveru lze ověřit pomocí odkazu [[http://localhost/testphp.php]]. ==== Instalace MySQL ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[instalace_aplikaci#Přidání repozitáře]]. * Přečtěte si kapitolu [[databaze#Instalace databázového serveru MySQL]]. * Přečtěte si kapitolu [[databaze#Instalace webového serveru Apache]]. Server //MySQL// spustíte pomocí /etc/init.d/mysqld start Je-li instalován jako služba service mysqld start **phpMyAdmin** - webové rozhraní databáze MySQL jež je přístupné na adrese http://localhost/phpMyAdmin doinstalujete příkazem yum install phpMyAdmin ==== Tipy na Apache ==== Pro odstranění podpisu serveru otevřete soubor ''httpd.conf'' pomocí gedit /etc/httpd/conf/httpd.conf a řádek ServerSignature on změňte na ServerSignature off Pod tento řádek přidejte ServerTokens ProductOnly Editovaný soubor uložte a restartuje //Apache// pomocí /etc/init.d/httpd -k restart uživatelské rozhraní "Nastavení Serveru HTTP" (Aplikace > Systémové nástroje > HTTP) doinstalujete pomocí příkazu yum -y install system-config-httpd ==== Namapování adres URL k adresářům mimo /var/www ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[web#Instalace webového serveru Apache]]. Standardně je třeba webové stránky spravované serverem //Apache// umisťovat do adresáře ''/var/www''. Toto nastavení je však možné změnit. Do příkazové řádky zadejte gedit /etc/httpd/conf.d/alias.conf a vložte následující řádky do nově vytvořeného souboru ''alias.conf'' Alias /URL-path /location_of_folder/ Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all Uložte soubor ''alias'' a restartuje webový server pomocí /etc/init.d/httpd restart Funkčnost nastavení ověříte pomocí odkazu [[http://localhost/URL-path]], kde ''URL-path'' je vámi zvolený adresář. ==== Změna defaultního portu webového serveru Apache ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[web#Instalace webového serveru Apache]]. Standardně "naslouchá" server //Apache// na portu 80. Tento defaulní port je možné změnit. Předpokládejme, že nové číslo portu webového serveru Apache má být 78. Následujícími příkazy zálohujeme soubor ''ports.conf'' a otevřeme tento soubor v textové editoru. cp /etc/httpd/ports.conf /etc/httpd/ports.conf_backup gedit /etc/httpd/ports.conf V souboru ''ports.conf'' nalezněte řádku Listen 80 nahraďte ji řádkou Listen 78 uložte editovaný soubor a restartujte webový server pomocí /etc/init.d/httpd restart Funkčnost úpravy lze zkontrolovat pomocí odkazu [[http://localhost:78]]. ==== Vložení RSS do PHP v případě webového serveru Apache ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[web#Instalace webového serveru Apache]]. * Přečtěte si kapitolu [[web#Instalace PHP]]. //RSS// (**R**eally **S**imple **S**yndication) je rodinou webových formátů, které slouží k poskytování obsahu popř. shrnutí webových stránek spolu s odkazem na stránku obsahující kompletní obsah. //RSS// "doručí" tyto informace ve formě //XML// souboru, který nazýváme //RSS// streamem. Tento soubor pak může být zpracován speciálním programem a nové příspěvky pak zobrazeny na stránce.\\ Předpokládejme, že RSS je //DistroWatch.com// - novinky. Prostřednictvím příkazové řádky zadejte wget -c http://easylinux.info/uploads/magpierss-0.71.1.tar.gz mkdir /var/www/feeds tar zxvf magpierss-0.71.1.tar.gz -C /var/www/feeds/ mv /var/www/feeds/magpierss-0.71.1/* /var/www/feeds/ rm -fr /var/www/feeds/magpierss-0.71.1/ chown -R www-data:root /var/www/feeds/ gedit /var/www/feeds/index.php Do nově vytvořeného souboru ''index.php'' zadejte DistroWatch.com - News "; echo "", $rss->channel[title], "
"; echo ""; foreach ($rss->items as $item ) { $url = $item[link]; $title = $item[title]; $description = $item[description]; echo "
  • "; echo "Topic: $title

    "; echo "$description

    "; echo "
  • "; } } else { echo "", $url, " - Server Down!
    "; } ?> Editovaný soubor ''index.php'' uložte. Funkčnost můžete vyzkoušet pomocí odkazu [[http://localhost/feeds/index.php]]. ==== PHP Nástroje ==== === Zend Framework === Zend Framework je open-source sada nástrojů pro vývojáře webových aplikací. Slouží k efektivnímu ovládání aplikace, podpoře mnoha web technologií, přehlednosti v rozsáhlých projektech, bezpečnosti aplikace. Využívá aplikačního modelu **MVC** - Model View Controller. Pro pochopení principů frameworku existuje na internetu spousta video tutoriálů a referenční příručka. Stránky projektu: [[http://www.zendframework.com/|http://www.zendframework.com/]] Tento návod pochází od JR z [[http://www.if-not-true-then-false.com/2010/install-zend-framework-on-fedora-centos-red-hat-rhel/|http://www.if-not-true-then-false.com/2010/install-zend-framework-on-fedora-centos-red-hat-rhel/]] * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[instalace_aplikaci#Přidání repozitáře]]. * Přečtěte si kapitolu [[databaze#Instalace databázového serveru MySQL]]. * Přečtěte si kapitolu [[databaze#Instalace webového serveru Apache]]. == Instalace Zend Framework == Nainstalujte repozitář REMI rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm rpm -Uvh http://rpms.famillecollet.com/remi-release-14.rpm **Minimální instalace ZF** (instaluje minimální množství souborů potřebných pro spuštění aplikace) yum --enablerepo=remi install php-ZendFramework **Plná instalace ZF** (obsahuje všechny dodávané knihovny, DOJO a JQuery, ukázky apod.) yum --enablerepo=remi install php-ZendFramework* --exclude php-ZendFramework-Db-Adapter-Oracle //poznámka:Zend Framework Oracle DB Adapter vyřadíme, protože k běhu vyžaduje doinstalování závislostí Oracle, které bez dalšího nastavení nepracují.// **Vlastní instalace** yum --enablerepo=remi install komponenta_z_následujícího_seznamu php-ZendFramework:// Leading open-source PHP framework// php-ZendFramework-Auth-Adapter-Ldap:// Zend Framework LDAP Authentication Adapter// php-ZendFramework-Cache-Backend-Apc:// Zend Framework APC cache backend// php-ZendFramework-Cache-Backend-Memcached:// Zend Framework memcache cache backend// php-ZendFramework-Cache-Backend-Sqlite:// Zend Framework sqlite back end// php-ZendFramework-Captcha:// Zend Framework CAPTCHA component// php-ZendFramework-Db-Adapter-Firebird:// Zend Framework database adapter for InterBase// php-ZendFramework-Db-Adapter-Mysqli:// Zend Framework database adapter for mysqli// php-ZendFramework-Db-Adapter-Oracle:// Zend Framework database adapter for Oracle// php-ZendFramework-Dojo:// Zend Framework Dojo Toolkit integration component// php-ZendFramework-Feed:// Live syndication feeds helper// php-ZendFramework-Gdata:// Google Data APIs// php-ZendFramework-Ldap:// Basic LDAP operations API// php-ZendFramework-Pdf:// PDF file handling helper// php-ZendFramework-Search-Lucene:// Apache Lucene engine PHP port// php-ZendFramework-Services:// Web service APIs for a number of providers// php-ZendFramework-Soap:// SOAP web services server part helper// php-ZendFramework-demos:// Demos for the Zend Framework// php-ZendFramework-extras:// Zend Framework Extras (ZendX)// php-ZendFramework-tests:// Unit tests for the Zend Framework// == Vytvoření nového ZF projektu == Zkontrolujte dostupnost příkazu zf a verzi Zend Framework zf show version Přesuňte se do kořenového adresáře Vašeho serveru cd /var/www/html Pomocí příkazu zf vytvořte nový projekt zf create project test-project Nakopírujte si soubory Zend do knihovny projektu cd /var/www/html/test-project/library cp -R /usr/share/php/Zend . Zkontrolujte obsah adresáře projektu a obsah knihoven test-project |-- application | |-- Bootstrap.php | |-- configs | | `-- application.ini | |-- controllers | | |-- ErrorController.php | | `-- IndexController.php | |-- models | `-- views | |-- helpers | `-- scripts | |-- error | | `-- error.phtml | `-- index | `-- index.phtml |-- docs | `-- README.txt |-- library | `-- Zend -> /usr/share/php/Zend |-- public | `-- index.php `-- tests |-- application | `-- bootstrap.php |-- library | `-- bootstrap.php `-- phpunit.xml ---------------------------- 16 adresářů, 11 souborů Funkčnost zkontrolujete ve webovém prohlížeči na domovské url projektu [[http://localhost/test-project/public/|http://localhost/test-project/public/]] firefox http://localhost/test-project/public/ ** Směrování (Routes)** Index.php celého projektu je umístěn ve složce public. Je to jediný PHP soubor ve veřejně přístupné části projektu. V případě [[http://www.zendframework.com/|ZF]] nebo [[http://www.nette.org/|Nette Framework]] jsou v něm zadány pouze cesty ke spuštění aplikace (include). Aby bylo možné procházet virtuální složky musíme vytvořit a nebo upravit soubor .htaccess tak, aby při zadání jakékoli cesty nad public směřoval na soubor index.php s vyjímkou adres obrázků, stylů, sriptů a souborů určených k downloadu. su - gedit /var/www/html/test-project/public/.htaccess Pomocí příkazů RewriteRule provedeme potřebné úpravy směrování v souboru .htaccess a uložíme je. Například RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] Framework má mechanismus (router nebo-li směřovač), jehož pomocí rozezná zadanou adresu, zavolá příslušný Controler a provede požadovanou akci. Pokud jej nerozezná nastane výjimka a provede se akce definovaná k výjimce. **Virtuální host podle jména** Pokud chcete nastavit jména virtuálního hostitele k projektu upravte soubor **hosts** gedit /etc/hosts Řádek který začíná IP adresou 127.0.0.1 upravte tak aby obsahoval požadované adresy. Například 127.0.0.1 localhost.localdomain localhost testproject.loc www.testproject.loc admin.testproject.loc //Poznámka: Doménu 1. řádu můžete klidně vynechat. V tomto příkladu byla použita k odlišení produkčního www.testproject.org od vyvíjeného místního www.testproject.loc // otevřeme soubor httpd.conf nebo vhosts.conf :!: V případě ručního zápisu do httpd.conf můžete mít problém s povolením SELinuxu. Proto by se měl používat samostatný soubor konfigurace vhost /etc/httpd/conf/vhosts.conf gedit /etc/httpd/conf/httpd.conf a na konec souboru přidáme specifikaci vhost: ServerAdmin lh@lh.cz DocumentRoot /var/www/html ServerName localhost ServerAlias localhost ServerAdmin admin@testproject.org DocumentRoot /var/www/html/test-project/public ServerName www.testproject.loc ServerAlias testproject.loc *.testproject.loc //Poznámka: Toto nastavení se neslučuje s použitím SSL. V takovém případě by se musel použít vhost podle IP// restartujte server service httpd restart **Index** projektu by nyní měl být přístupný na adresách URL: * http://localhost/test-project/public * http://127.0.0.1/test-project/public * http://testproject.loc/ * http://www.testproject.loc/ * http://admin.testproject.loc/ **Homepage** bude přístupná pouze na adrese nastavené routováním v souboru **bootstrap.php** v aplikační části projektu frameworku. === Eclipse PHP PDT === PDT - PHP Development Toolkit je rozšíření vývojového prostředí [[http://www.eclipse.org/|eclipse]] od vývojářů Zend. Podporu PHP Projektů doinstalujete pomocí příkazu yum install eclipse-phpeclipse :!: Vlastník /var/www/**html** je implicitně Superuživatel. Pokud adresář chcete použít jako pracovní prostor Eclipse, musíte upravit oprávnění k přístupu do adresáře. :!: Spouštění prostředí Eclipse jako superuživatel se nedoporučuje **Adresáře otevřené pro čtení a zápis** Například adresář pro ukládání dočasných souborů projektu /var/www/html/test-project/application/**temp** nastavíme oprávnění pro zápis takto md /var/www/html/test-project/application/temp chmod 777 /var/www/html/test-project/application/temp Nastavení SELinux provedeme příkazem chcon -R -t httpd_sys_rw_content_t '/var/www/html/test-project/application/temp' :!: Nevypínejte SELinux, nevystavujte svůj počítač zbytečně bezpečnostnímu riziku === NetBeans PHP === Vzhledem k opožděné podpoře PHP 5.3 (listopad 2011 - zejména namespaces) v PDT pro prostředí Eclipse je možné využít konkurenčního prostředí České pobočky společnosti SUN - NetBeans yum -y install netbeans Podporu PHP a například Nette Frameworku či jiných lze doinstalovat dodatečně pomocí nabídky **Tools/Plugins** ---- [[obsah|Hlavní stránka]]