LAMP

Webový server LAMP (Linux, Apache, MySQL, PHP)

Instalace

Pro snadnou instalaci na operačním systému Windows je možné použít aplikace EasyPHP nebo WampServer (umožňuje jednoduše přepínat mezi více verzemi PHP a MySQL). Pro Mac OS X je možné použít MAMP. Multiplatformním řešením pak může být např. i XAMPP.

Linux

Textový režim:

  1. Spusťte přikaz sudo apt-get install php5-common php5-gd php5-suhosin mysql-server phpmyadmin php-apc
    • Při instalaci je nutné zvolit heslo uživatele root pro přístup k MySQL databázi a typ serveru např. Apache2.

Aplikace Synaptic:

  1. Zvolte příkaz Akce, Vybrat balíky podle účelu, LAMP server
    • Při instalaci je nutné zvolit heslo uživatele root pro přístup k MySQL databázi
  2. Nainstalujte phpmyadmin
    • Při instalaci je nutné zvolit typ serveru např. Apache2

Apache

.htaccess

Dodatečný konfigurační soubor webovém serveru Apache, který může být umístěn v libovolném adresáři webu. Direktivy uvedené v souboru .htaccess se vztahují na tento adresář a všechny jeho podadresáře.

Příklad nastavení kódování iso-8859-2 všem souborům s příponou .html:

AddCharset iso-8859-2 .html

Příklad nastavení kódování iso-8859-2 souboru example.html:

<Files "example.html">
  AddCharset iso-8859-2 .html
</Files>
mod_autoindex

Umožňuje upravit seznam adresářů a souborů generovaný serverem. Např.:

AddDescription "(CSS soubor)" *.css
AddDescription "(PHP soubor)" *.php
IndexOptions FancyIndexing
IndexOptions FoldersFirst
IndexOptions IgnoreCase
IndexOptions ScanHTMLTitles

Moduly

  • povolení mod_rewrite (čistá URL):
    sudo a2enmod rewrite

     V nastavení apache povolte používání souboru .htaccess!

  • zakázání mod_rewrite
    sudo a2dismod rewrite
  • povolení SSL (https)
    sudo a2enmod ssl
    sudo a2ensite default-ssl # vytvori symlink do sites-enabled
    
    • v souboru /etc/apache2/sites-available/default-ssl upravte cesty pro konktrétní SSL certifikát serveru
      SSLCertificateFile /etc/ssl/certs/myweb.cz.crt
      SSLCertificateKeyFile /etc/ssl/private/myweb.cz.key

Výchozí nastavení

Soubor /etc/apache2/sites-available/default:

  • AllowOverride All: povolí použití souboru .htaccess
  • AllowOverride none: zakáže použití souboru .htaccess
  • -FollowSymLinks: zakáže symbolické odkazy z webu
  • -Indexes: zakáže výpis obsahu adresáře
  • allow from: omezení přístupu

V sekci <Directory /var/www/> nastavte (vložte IP Vašeho počítače):

AllowOverride All
allow from 127.0.0.1 172.11.2.92

Restart web serveru:

sudo /etc/init.d/apache2 restart

Soubor /etc/apache2/apache2.conf:

  • ServerSignature On: povolí identifikaci serveru při výpisu souborů, na chybových stránkách atd.
  • ServerTokens Prod: nastavení obsahu identifikace serveru (Major|Minor|Min|Prod|OS|Full)
Mac

V souboru /private/etc/apache2/httpd.conf odkomentujte řádek:

LoadModule php5_module libexec/apache2/libphp5.so

Pokud nepoužíváte např. MAMP je možné Apache spustit v System Preferences, Sharing (Předvolby systému, Sdílení) zatržením volby Web Sharing (Sdílení webu). Odkaz Your computer's website spustí webový prohlížeč a zobrazí výchozí webovou stránku webserveru /Library/WebServer/Documents/.

PHP

php.ini

Mac

V terminálu vytvořte soubor /private/etc/php.ini zkopírováním předpřipraveného souboru:

cd /private/etc
sudo cp php.ini.default php.ini
Linux

Soubor php.ini se nachází v /etc/php5/apache2/php.ini

Nastavení php.ini

memory_limit = 128M
post_max_size = 64M
upload_max_filesize = 32M
apc.rfc1867 = 1 ;Drupal 7

Hlášení chyb

error_reporting = E_ALL

Kontrola nastavení

  1. V adresáři webserveru (linux: /var/www/, mac: /Library/WebServer/Documents/) vytvořte soubor info.php s obsahem:
    <?php print_r (phpinfo()); ?>
  2. Do adresního řádku prohlížeče napište: http://localhost/info.php

Rozšíření

  • PHP Suhosin – rozšířená ochrana instalace PHP např. ochrana podtečení, omezení maximální délky a počet proměnných (POST, GET). V /etc/php5/apach2/conf.d (/etc/php5/conf.d/suhosin.ini) je možné změnit výchozí nastavení PHP Suhosin doplněním požadovaných položek např.:
    suhosin.request.max_vars = 512
    suhosin.post.max_vars = 512
    suhosin.request.max_value_length = 90000
    suhosin.post.max_value_length = 90000
    
  • APC – zvyšuje výkon PHP
    • V /etc/php5/apache2/conf.d/apc.ini upravte nastavení např.:
      extension=apc.so
      apc.shm_size = 48

MySQL

Změna hesla:

/usr/bin/mysqladmin -u root password 'nove-heslo'

Restart mysql:

sudo /etc/init.d/mysql restart

V některých případech je vhodné zvýšit hodnotu max_allowed_packet z 1 MB na 32 MB:

  • V XAMP změňte v xampp\mysql\bin\my.ini hodnotu max_allowed_packet = 32M
  • V MAMP vytvořte v Applications/MAMP/conf/ soubor my.cnf obsahující:
  • # The MySQL server
    [mysqld]
    max_allowed_packet = 32M
    
  • Pokud není možné MySQL Server spustit:
    1. Vypněte MAMP
    2. V terminálu zadejte příkaz killall -9 mysqld
    3. Spusťte MAMP

DNS záznamy

Soubor hosts (bez přípony) umožňuje přenastavit DNS záznamy na klientském počítači.

Umístění souboru:

  • GNU/Linux: /etc/hosts
  • Mac OS: /private/etc/hosts
  • Windows 2000, XP a Vista: c:\windows\system32\drivers\etc\hosts
  • Windows 95 a 98: c:\windows\hosts

Příklad souboru hosts:

# komentar
127.0.0.1         localhost
192.168.10.10     moje-pc.cz www.moje-pc.cz
# test.cz
217.11.149.212    test.cz
217.11.149.212    www.test.cz
217.11.149.212    mysql.test.cz

Po uložení souboru restartujte síťové nastavení: sudo /etc/init.d/networking restart.

Poznámky:

  • IP adresa a doménový název musí být oddělen minimálně jednou mezerou.
  • Po zadání adresy http://www.test.cz se obsah webu www.test.cz načte ze serveru, jehož IP adresa je 217.11.149.212 i přesto, že doména test.cz vůbec nemusí být zaregistrovaná.
  • Aplikace phpMyAdmin je dostupná na adrese http://mysql.test.cz

U některých antivirových nebo antispywarových programů je nutné změnu souboru hosts povolit.

SFTP server

Vyžaduje lokální uživatelský účet.

  1. Nainstalujte balíček scponly
    • sudo aptitude install scponly
  2. Zobrazte si cestu k shellu scponlyc
    • whereis scponlyc
  3. Spusťte předpřipravený skript (uživatel: sftpuser, domovský adresář: /home/sftpuser, shell: /usr/sbin/scponlyc)
    • cd /usr/share/doc/scponly/setup_chroot;
      sudo gunzip setup_chroot.sh.gz;
      sudo chmod +x setup_chroot.sh;
      sudo ./setup_chroot.sh
  4. (Nastavte suid bit)
    • chmod u+s /usr/sbin/scponlyc
  5. Ve /var/ vytvořte symlink www odkazující do /home/sftpuser/var/www/.
  6. Uživateli sftpuser zařaďte do skupiny www-data.
  7. Nastavte příslušná oprávnění souborů a adresářů.

FTP server

Lokální uživatelský účet není podmínkou. Balíček GAdmin-ProFTPD se mi neosvědčil, proto používám raději ruční konfiguraci.

  1. Nainstalujte balíček proftpd
    sudo apt-get install proftpd
  2. Nastavení /etc/proftpd/proftpd.conf:
    # obecna nastaveni
    IdentLookups		off
    UseReverseDNS		off # zrychluje prihlaseni
    ServerName		"Moje FTP" # nazev pocitace v siti
    DeferWelcome		on # potlacit uvitani
    ServerIdent		off
    ListOptions		"-l"
    ListOptions		"+R" strict # pouze zakladni vypis
    #DefaultRoot		/var/www/ftp # vychozi adresar
    DefaultRoot		~ # vychozi adresar (home uzivatele)
    RequireValidShell	off # nevyzaduje shell
    RootLogin		off
    AllowOverride		on # povoli zapis
    AuthOrder		mod_auth_unix.c # pouze systemovy ucet
    
    # nastaveni vztahujici se pouze k danemu adresari
    <Directory /var/www/ftp>
        HideNoAccess	on
        GroupOwner		www-data
    </Directory>
    
    # zpozdeni
    <IfModule mod_delay.c>
        DelayEngine		off
    </IfModule>
    
    # ftps
    Include			/etc/proftpd/tls.conf
    
    <Limit LOGIN>
        <IfModule mod_tls.c>
    	AllowUser	student01 student02 student03 
        </IfModule>
        DenyAll
    </Limit>
    
    # PAM overeni
    <ifModule mod_auth_pam.c>
        AuthPAM off
    </IfModule>
    
  3. Nastavení /etc/proftpd/modules.conf:
    • #LoadModule mod_ctrls_admin.c
      #LoadModule mod_radius.c
      #LoadModule mod_quotatab.c
      #LoadModule mod_quotatab_file.c
      #LoadModule mod_quotatab_radius.c
      #LoadModule mod_wrap.c
      #LoadModule mod_rewrite.c
      #LoadModule mod_ban.c
      #LoadModule mod_wrap2_sql.c
      #LoadModule mod_dynmasq.c
      
  4. Nastavení /etc/proftpd/tls.conf:
    • TLSEngine			on
      TLSLog				/var/log/proftpd/tls.log
      TLSProtocol			SSLv23
      TLSRSACertificateFile		/etc/ssl/certs/muj-web.cz.crt
      TLSRSACertificateKeyFile	/etc/ssl/private/muj-web.cz.key
      TLSCACertificateFile		/etc/ssl/certs/cacert_my.crt
      TLSOptions			NoCertRequest
      TLSVerifyClient			off
      TLSRequired			on
      
  5. Uživatelé
    • vytvoření skupiny user
      sudo groupadd user
      
    • vytvoření uživatele user
      sudo useradd -g user -G www-data -d /dev/null -s /dev/null -p heslo user
    • změna hesla uživatele
      sudo passwd user
  6. Upravte nastavení adresáře /var/www/ftp např.
    • sudo chown -R user:www-data /var/www/ftp
  7. Ovládání FTP serveru (start, stop, restart)
    sudo /etc/init.d/proftpd restart

Pošta

Funkční pošta na localhostu:


Upload progressEnabled (PECL uploadprogress)