[[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]]