Webový server LAMP (Linux, Apache, MySQL | MariaDB, PHP)
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 nebo Kalabox (podpora Pantheon).
Multiplatformním řešením pak může být např. i XAMPP (po instalaci "bitnami Drupal" umí i Drush):
Tipy pro vlastní instalaci:
Textový režim:
sudo apt-get install php5-common php5-gd php5-suhosin mysql-server phpmyadmin php-apc
Aplikace Synaptic:
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í PHP hodnot:
<IfModule mod_php5.c> php_value memory_limit 256M php_value max_execution_time 600 opcache.enable = 1 </IfModule>
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>
Příklad přesměrování z http na https:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Příklad nastavení výchozích souborů:
DirectoryIndex index.html index.php default.htm myfile.php myfile.html
Příklady zabránění neoprávněnému externímu používání obrázků (snížení datového toku):
# Prevent Image Bandwidth Theft SetEnvIf Referer mysite\.com localreferer <FilesMatch \.(jpe?g|gif|bmp|png)$> Order deny,allow Deny from all Allow from env=localreferer </FilesMatch>
# Prevent Image Bandwidth Theft SetEnvIfNoCase Referer "^http://www.mysite.com/" localreferer=1 SetEnvIfNoCase Referer "^http://www.mysite.com$" localreferer=1 SetEnvIfNoCase Referer "^http://mysite.com/" localreferer=1 SetEnvIfNoCase Referer "^http://mysite.com$" localreferer=1 SetEnvIfNoCase Referer "^$" localreferer=1 <FilesMatch \.(jpe?g|gif|bmp|png)$> Order Allow,Deny Allow from env=localreferer </FilesMatch>
# Prevent Image Bandwidth Theft <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(.+)?mysite.com/ [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteRule .*.(jpe?g|gif|bmp|png)$ – [F] </IfModule>
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
<?php $password = 'heslo'; echo crypt($password); ?>
V kořeni webu vytvořte soubor .htpasswd do kterého vložte zvolené uživatelské jméno a výše vygenerované heslo oddělené dvojtečkou např.:
uzivatel:ZVIfharZvwbME
Do souboru .htaccess umístěného v kořeni webu vložte:
# HTTP authentication AuthType Basic AuthBasicProvider file AuthUserFile /cesta/k/vasi/domene/.htpasswd AuthName "Autorizace moje-domena.cz" Require valid-user
(AuthUserFile cestu je možné získa např. pomocí phpinfo(): DOCUMENT_ROOT)
$_SERVER['REDIRECT_REMOTE_USER']
sudo a2enmod rewrite
V nastavení apache povolte používání souboru .htaccess!
sudo a2dismod rewrite
sudo a2enmod ssl sudo a2ensite default-ssl # vytvori symlink do sites-enabled
/etc/apache2/sites-available/default-ssl
upravte cesty pro konktrétní SSL certifikát serveruSSLCertificateFile /etc/ssl/certs/myweb.cz.crt SSLCertificateKeyFile /etc/ssl/private/myweb.cz.key
V souboru /etc/apache2/apache2.conf
Soubor /etc/apache2/sites-available/default:
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)V souboru /private/etc/apache2/httpd.conf (/Applications/MAMP/conf/apache/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/.
ini_set('max_execution_time', 600);
<IfModule mod_php5.c> php_value post_max_size 5M php_value upload_max_filesize 5M php_value memory_limit 256M php_value max_execution_time 600 php_value max_input_time 259200 php_value session.gc_maxlifetime 1200 </IfModule>
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
Případně upravte přímo příslušný soubor používané verze PHP např.:
/Applications/MAMP/bin/php/php5.4.4/conf/php.ini
Soubor php.ini se nachází v /etc/php5/apache2/php.ini
memory_limit = 128M post_max_size = 64M upload_max_filesize = 32M apc.rfc1867 = 1 ;Drupal 7 mbstring.http_input = pass ;Commerce Kickstart mbstring.http_output = pass ;Commerce Kickstart
Hlášení chyb
error_reporting = E_ALL
<?php print_r (phpinfo()); ?>
/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
/etc/php5/apache2/conf.d/apc.ini
upravte nastavení např.:extension=apc.so apc.shm_size = 48
Rychlejší verze 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:
max_allowed_packet = 32M
# The MySQL server [mysqld] max_allowed_packet = 32M
killall -9 mysqld
Soubor hosts (bez přípony) umožňuje přenastavit DNS záznamy na klientském počítači.
Umístění souboru:
/etc/hosts
/private/etc/hosts
c:\windows\system32\drivers\etc\hosts
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:
U některých antivirových nebo antispywarových programů je nutné změnu souboru hosts povolit.
Vytváření virtual hostů usnadňuje např. skript virtualhost.sh nebo Hosts.prefpane
DOC_ROOT_PREFIX="/Users/user/www"
ALWAYS_CREATE_LOGS:="no"
export PATH="$PATH:~/bin/virtualhost"
Nastavení lokálního počítače pro více doménových jmen:
# Virtual Host 127.0.0.1 www.domain.cz 127.0.0.1 dev.test.loc
# Virtual Host NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> VirtualDocumentRoot "/var/www/%0" </VirtualHost>
# Virtual Host NameVirtualHost * <VirtualHost *> ServerName localhost DocumentRoot "/var/www" </VirtualHost> <VirtualHost *> ServerName www.domain.cz DocumentRoot "/var/www/www.domain.cz" </VirtualHost> <VirtualHost *> ServerName dev.test.loc DocumentRoot "/var/www/dev.test.loc" </VirtualHost>
SSH (Secure Shell) je protokol umožňující bezpečené přihlášení na vzdálený počítač (server).
Přihlášení (jako host může být použita IP adresa nebo název domény):
ssh username@host
ssh host
Odpojení (návrat do lokálního počítače):
exit
SSH klienti a nástroje:
config.php
define('WP_MEMORY_LIMIT', '64M');
sites/default/settings.php
ini_set('memory_limit', '256M');
ini_set('max_execution_time', '600');
Požadavky:
Připojení:
mkdir ssh_fs_mount
sshfs user@ip-adress:/ ssh_fs_mount
Odpojení:
fusermount -u ssh_fs_mount
fusermount -uf ssh_fs_mount
umount ssh_fs_mount
umount -f ssh_fs_mount
Vyžaduje lokální uživatelský účet.
sudo aptitude install scponly
whereis scponlyc
cd /usr/share/doc/scponly/setup_chroot; sudo gunzip setup_chroot.sh.gz; sudo chmod +x setup_chroot.sh; sudo ./setup_chroot.sh
chmod u+s /usr/sbin/scponlyc
/var/
vytvořte symlink www odkazující do /home/sftpuser/var/www/
.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.
sudo apt-get install proftpd
/etc/proftpd/proftpd.conf
:# obecna nastaveni Include /etc/proftpd/modules.conf 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 ~ # uzavreni uzivatele v home adresaru (pozor hardlinky jsou povoleny) RequireValidShell off # nevyzaduje shell RootLogin off AllowOverride on # povoli zapis AuthOrder mod_auth_unix.c mod_auth_file.c # systemove ucty nebo virtualni ucty AuthUserFile /etc/proftpd/ftpd.passwd # cesta k souboru s virtualnimi uzivateli AuthGroupFile /etc/proftpd/ftpd.group # cesta k souboru virtualnimi skupinami # 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>
/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
/etc/proftpd/tls.conf
:
TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSv1 TLSRSACertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem TLSRSACertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key #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
sudo groupadd user
sudo useradd -g user -G www-data -d /dev/null -s /dev/null -p heslo user
sudo passwd user
ftpasswd --passwd --name=user --home=/default/user/folder --shell=/bin/false --uid=33 --gid=33
ftpasswd --group --gid=33 --name=www-data
sudo chown -R user:www-data /var/www/ftp
sudo /etc/init.d/proftpd restart
service proftpd restart
Funkční pošta na localhostu:
Upload progressEnabled (PECL uploadprogress)
sudo apt-get install make php5-dev
sudo pecl install uploadprogress
echo -e "extension=uploadprogress.so" > /etc/php5/apache2/conf.d/uploadprogress.ini
sudo service apache2 reload