Obsah

Hlavní stránka

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

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

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)

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

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

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

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/

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.


Hlavní stránka