Webový server
Pomocí trojice aplikací MySQL (MariaDB), 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 (Linux, Apache, MySQL, PHP). Webový server Apache lze popřípadě nahradit alternativami, z nichž dnes asi nejpopulárnější je webový server Nginx.
Instalace webového serveru Apache
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu Přidání repozitáře.
- Přečtěte také kapitolu service to be automatically started at boot time
Apache je pravděpodobně nejpopulárnější webový server používaný nejen pod Linuxem 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.
dnf -y install httpd dnf -y install mod_ssl dnf -y install httpd-manual dnf -y install mod_perl dnf -y install mod_auth_mysql dnf -y install crypto-utils dnf -y install mod_python
Službu httpd
serveru spustíte příkazem systemctl:
systemctl start httpd.service
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 Obecné poznámky.
- Přečtěte si kapitolu Přidání repozitáře.
- Přečtěte si kapitolu 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ů
dnf -y install php dnf -y install php-mysql systemctl restart httpd.service
Pomocí příkazu
gedit /var/www/html/testphp.php
otevřete soubor testphp.php a na jeho konec vložte následující řádek
<?php phpinfo(); ?>
Soubor uložte. Funkčnost PHP serveru lze ověřit pomocí odkazu http://localhost/testphp.php.
Instalace MySQL (MariaDB)
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu Přidání repozitáře.
- Přečtěte si kapitolu Instalace databázového serveru MySQL.
- Přečtěte si kapitolu Instalace webového serveru Apache.
Server MySQL (MariaDB) spustíte pomocí
systemctl start mariadb.service
phpMyAdmin - webové rozhraní databáze MySQL (MariaDB) jež je přístupné na adrese http://localhost/phpMyAdmin doinstalujete příkazem
dnf 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í
systemctl restart httpd.service
uživatelské rozhraní „Nastavení Serveru HTTP“ (Aplikace > Systémové nástroje > HTTP) doinstalujete pomocí příkazu
dnf -y install system-config-httpd
Namapování adres URL k adresářům mimo /var/www
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu 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/ <Directory /location_of_folder/> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
Uložte soubor alias
a restartuje webový server pomocí
systemctl restart httpd.service
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 Obecné poznámky.
- Přečtěte si kapitolu 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í
systemctl restart httpd.service
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 Obecné poznámky.
- Přečtěte si kapitolu Instalace webového serveru Apache.
- Přečtěte si kapitolu Instalace PHP.
RSS (Really Simple Syndication) 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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>DistroWatch.com - News</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> <style type="text/css"> /*<![CDATA[*/ /* DEFAULT TAG STYLES */ body { background: #ffffff; margin-left: 20px; font-family: bitstream vera sans,sans-serif; font-size: 9pt; } h1 { font-family: luxi sans,sans-serif; font-size: 15pt; } /*]]>*/ </style> </head> <body> <?php require_once 'rss_fetch.inc'; error_reporting(E_ERROR); $url = 'http://distrowatch.com/news/dw.xml'; $rss = fetch_rss($url); if ($rss) { echo "<h1>"; echo "<a href=$url>", $rss->channel[title], "</a><br/>"; echo "</h1>"; foreach ($rss->items as $item ) { $url = $item[link]; $title = $item[title]; $description = $item[description]; echo "<li>"; echo "<b>Topic:</b> <a href=$url><b><u>$title</u></b></a><br/><br/>"; echo "$description<br/><br/>"; echo "</li>"; } } else { echo "<a href=$url>", $url, "</a> - Server Down!<br/>"; } ?> </body> </html>
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/
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/
- Přečtěte si kapitolu Obecné poznámky.
- Přečtěte si kapitolu Přidání repozitáře.
- Přečtěte si kapitolu Instalace databázového serveru MySQL.
- Přečtěte si kapitolu 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)
dnf --enablerepo=remi install php-ZendFramework
Plná instalace ZF (obsahuje všechny dodávané knihovny, DOJO a JQuery, ukázky apod.)
dnf --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
dnf --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/
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ě ZF nebo 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:
<VirtualHost *:80> ServerAdmin lh@lh.cz DocumentRoot /var/www/html </VirtualHost> <VirtualHost www.testproject.loc:80> ServerAdmin admin@testproject.org DocumentRoot /var/www/html/test-project/public ServerName www.testproject.loc ServerAlias testproject.loc *.testproject.loc </VirtualHost>
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
systemctl restart httpd.service
Index projektu by nyní měl být přístupný na adresách URL:
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í eclipse od vývojářů Zend. Podporu PHP Projektů doinstalujete pomocí příkazu
dnf 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 zastavení vývoje PDT pro Eclipse můžete využít vývojové prostředí NetBeans. Podporuje mnoho známých PHP Frameworků.
dnf -y install netbeans
Yum nabízí zpravidla starší verzi NetBeans. Aktuální verzi je možné stáhnout ze stránky netbeans.org/downloads. Pro Podporu českého Nette Frameworku lze doinstalovat dodatečně pomocí nabídky Tools/Plugins.