navody:prirucka:web

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
navody:prirucka:obsah [2007/11/28 21:47] – vytvořeno covexnavody:prirucka:web [2022/11/14 12:26] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +[[obsah|Hlavní stránka]]
  
 +===== Webový server =====
 +
 +{{:navody:48x48:devices:web-server.png?48 }} 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// (//**L**inux, **A**pache, **M**ySQL, **P**HP//). Webový server Apache lze popřípadě nahradit alternativami, z nichž dnes asi nejpopulárnější je webový server [[http://www.if-not-true-then-false.com/2011/install-nginx-php-fpm-on-fedora-centos-red-hat-rhel/|Nginx]].
 +
 +==== 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.
 +
 +  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 [[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ů
 +
 +  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 [[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// (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 [[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/
 +  
 +  <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 [[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í
 +
 +  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 [[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
 +
 +  <!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/|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)
 +
 +  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/|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:
 +
 +  <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:
 +
 +  * 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
 +
 +  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 [[http://netbeans.org/downloads/|netbeans.org/downloads]]. Pro Podporu českého Nette Frameworku lze doinstalovat dodatečně pomocí nabídky **Tools/Plugins**.
 +
 +----
 +
 +
 +[[obsah|Hlavní stránka]]
  • Poslední úprava: 2022/11/14 12:26
  • autor: 127.0.0.1