Autorem následujícího návodu je Jon LaBass. Originální WWW v anglickém jazyku.
Podíváte-li se do adresáře /usr/ports/www, naleznete v něm několik portů, v jejichž názvu bude obsaženo slovo apache. Většinou se jedná o různé, mírně odlišné verse webového serveru Apache.To znamená , že ještě než začnete cokoliv instalovat, musíte se rozhodnout , kterou versi budete potřebovat. Stručný přehled jednotlivých možností následuje níže.
apache-jserv: Jedná se o webový server Apache se strojem, podporujícím servery v jazyce Java. Tuto versi budete potřebovat v případě, že budete chtít podporovat stránky JSP (Java Server Pages).
apache13: Toto je verze, kterou zřejmě budete chtít: Apache 1.3 bez jakýchkoliv dodatečných vlastností. I tak je však nutné říci, že některé instalace serveru Apache vyžadují rozsáhlé úpravy samotného serveru. Proto se pro jistotu podívejte, zda náhodou některá z dalších versí Vašim potřebám nevyhovuje více.
apache13+ipv6: Webový server Apache s úpravami, podporujícími použití protokolu IP verse 6. Zvolte tuto versi, pokud uvažujete o použití zmíněného protokolu.
apache13-fp: Poměrně oblíbenou platformou pro vývoj webových stránek je Microsoft FrontPage.Instalace této platformy však může být poněkud problematická. Chcete-li podporovat FrontPage, vyberte si tuto variantu.
apache13-modssl: Tento port obsahuje podporu protokolu SSL (Secure Socket Layer), umožňujícího provoz zabezpečených webových stránek. Komponenta, sloužící k vytváření bezpečného připojení , je založena na OpenSSL. Je-li Vaším cílem provoz zabezpečeného webu, nainstalujte tento port.
apache13-ssl: Port, obsahující integrovanou (nemodulární) podporu SSL, která je již dnes považována za zastaralou. Namísto této verse použijte raději apache13-modssl.
apache2: Toto není jen výborný webový server, to je přímo špičkový server. Apache 2 stojí za instalaci i v případě, že se s touto technologií pouze chcete seznámit a nechcete ji zatím použít v běžném provozu. Kromě toho je nutné zdůraznit, že mnohé moduly serveru Apache zatím nebyly portovány. Pokud ale potřebujete provozovat základní webový server, založený na špičkové technologii, pak toto je ta správná volba.
Nainstalujeme webový server Apache13-modssl. Pro to, abychom dosáhli co nejvyššího výkonu můžeme při kompilaci využít příkazu make APACHE_PERF_TUNING=YES all install.
| # cd /usr/ports/ww/apache-modssl # make APACHE_PERF_TUNING=YES all install # make clean |
Nyní závisí na tom, zda chcete pro Apache použít i port 80 a i port 443, který je funkční pro zabezpečené spojení s klientem pro SSL. Pokud použijete oba porty, budou Vám Vaše www fungovat jak na portu 80 (http://192.168.2.1)v nezabezpečeném modu, tak na portu 443 (https://192.168.2.1:443) v modu zabezpečeném.
Tuto volbu můžete provést v konfiguračním souboru Apache, který se jmenuje httpd.conf. Pakliže si přejete, aby Apache poslouchal na obou portech, pak bude volba vypadat stejně jako v následujícím příkladu. Pakliže byste chtěli, aby Apache naslouchal jen na portu 443, pak položku Listen 80 zakomentujte křížkem.
| # ee /usr/local/etc/apache/httpd.conf <IfDefine SSL> Listen 80 Listen 443 </IfDefine> |
Položka Port je podřazená volbám Listen. Tuto položku vyplňte, chcete-li na port 443, pokud chcete používat pouze zabezpečenou komunikaci mezi klientem a webovým serverem.
| # ee /usr/local/etc/apache/httpd.conf Port 443 |
Pro vytvoření certifikátu nepoužívám “make certificate“, ale raději si certifikát vytvořím sám ručně. Má to tu výhodu v tom, že si pak mohu nastavit automatické spouštění SSL Apache bez nutnosti zadávání hesla při jeho startu.
Nejprve si musíme vytvořit privátní klíč:
| # openssl genrsa -des3 1024 > www.domena.cz.key |
Tento příkaz sice slouží k vytvoření privátního klíče, ale pořád budeme nuceni zadávat při spouštění Apache zadávat heslo. Tuto vlastnost odstraníme vyjmutím volby -des3.
| # openssl genrsa 1024 > www.domena.cz.key |
Nyní bychom měli požádat certifikační autoritu o zaslání certifikátu. Tento úkon je však placený. Pro naše potřeby si podepíšeme svůj certifikát sami. Internetový prohlížeč bude sice díky tomuto úkonu hlásit, že přistupujeme na stránky, které nemají podepsán certifikát certifikační autoritou, ale to nám vadit nebude.
| # openssl req -new -key www.domena.cz.key -out www.domena.cz.csr |
Zde si kompletně popíšete vlastníka certifikátu (stát, město, název firmy,
E-mail, název serveru, ...). Heslo ke konci ani nemusíte udávat. Slouží jen ke změně certifikátu od certifikační autority.
Vyplnění může vypadat následovně:
| Country Name (2 letter code) [AU]:CZ State or Province Name (full name) [Some-State]:Czech Republic Locality Name (eg, city) [ ]:Brno Organization Name (eg, company) [Internet Widgits Pty Ltd]:Savvy Organizational Unit Name (eg, section) [ ]:Savvy Common Name (eg, your name or your server's hostname) [ ]:impa.savvy.cz Email Address [ ]:helpdesk@savvy.cz Please enter the following 'extra' attributes to be sent with your certificate request A challenge password [ ]: An optional company name [ ]: |
Jakmile jsme dočasný certifikát vytvořili, tak si jej i sami můžeme podepsat:
| # openssl req -x509 -key www.domena.cz.key -in www.domena.cz.csr -out www.savvy.cz.crt |
Využijete-li tohoto výše zmíněného příkazu, pak Vám certifikát, nemýlím-li se, vydrží dva měsíce. Přidáte-li však do příkazu volbu –days 365, pak máte certifikát platný na rok. Příkaz bude vypadat následovně:
| # openssl req -x509 –days 365 -key www.domena.cz.key -in www.domena.cz.csr -out www.StarHill.org.crt |
Pochopitelně můžete zadat klidně 700 dnů. A certifikát pak bude mít danou „životnost“:
| # openssl req -x509 –days 700 -key www.domena.cz.key -in www.domena.cz.csr -out www.StarHill.org.crt |
Existuje ještě jedna rychlá možnost jak vytvořit rychle certifikát. Bude však podepsán sám sebou a rozumný internetový prohlížeč Vás na tuto skutečnost upozorní.
Odstraňte starý klíč a certifikát:
| # rm /etc/httpd/conf/ssl.key/server.key # rm /etc/httpd/conf/ssl.crt/server.crt |
Zde dochází ke změně oproti správnému postupu. Standardně se postupuje tak, že vygenerujete nový klíč bez passfráze příkazem make genkey v adresáři: cd /usr/share/ssl/certs. Vy užijte příkazu:
| # /usr/bin/openssl genrsa 1024 > /etc/httpd/conf/ssl.key/server.key |
Nastavte práva:
| # chmod go-rwx /etc/httpd/conf/ssl.key/server.key |
Nyní vytvořte nový certifikát:
| # cd /usr/share/ssl/certs # make testcert |
Restartujte Apache:
| # /sbin/service httpd restart |
Tímto postupem jsme vytvořili náš certifikát. Nyní jej stačí jen použít. Jak, to si ukážeme dále.
Editujte nyní konfigurační soubor httpd.conf v těchto položkách:
| # Zapnuti jádra SSL SSLEngine on # Cesta k privátnímu klíči SSLCertificateKey /neco/nekde/www.domena.cz.key # Cesta k samotnému certifikátu SSLCertificateFile /neco/nekde/www.domena.cz.crt |
Pokud načítáte modul dynamicky, musíte ještě načíst příslušné moduly: “LoadModule“ a “AddModule“. Toto ale není v našem případě nutné, neboť již používáme server Apache s podporou SSL, tudíž nám tato záležitost odpadá.
Předně si však vygenerovanou trojici certifikát CA + certifikát serveru + privátní klíč serveru nakopírujeme do adresářů k tomu určených. Obyčejně se certifikáty nachází v /usr/local/etc/apache.
Přejmenujeme a upravíme oprávnění (pouze root smí číst certifikát s příponou .key, který je tajný). Pokud bychom totiž neprovedli zabezpečení přístupových práv, mohl by se někdo onoho certifikátu zmocnit a napodobovat pak náš server. Takto by bylo naše zabezpečení prolomeno.
| # chmod 400 www.domena.cz.key # chown 0400 root:wheel www.domena.cz.key |
Spuštění serveru Apache:
| # apachectl start |
Restartování serveru Apache:
| # apachectl restart |
Podobný příkaz jako apachectl restart je také apachectl graceful, který znovu načte své konfigurační soubory a nerestartuje celý server Apache:
| # apachectl graceful |
Pakliže chcete, aby se webový server Apache spouštěl při každém startu operačního systému a Vy jej nemuseli startovat ručně, pak využijte tohoto příkazu:
| # echo 'apache_enable=“YES“' >> /etc/rc.conf |
Kontrolu běhu serveru Apache můžete zjistit několika příkazy. Zde jsou uvedeny čtyři:
| # ps –ax | grep httpd | wc –l # ps –axx # ps –aux # top |
Vyvstane-li potřeba omezit přístup k nějaké části www stromu, je namístě použít některou z metod autorizace. Jedna z nich, která je založena na standardní funkci webového serveru a tak neklade na uživatele téměř žádné nároky, je autorizace prostřednictvím direktiv v souborech .htaccess a .htpasswd.
Autorizace je prováděna na základě dvojice jméno/heslo, která se nachází v souboru .htpasswd. Oba soubory, .htaccess i .htpasswd jsou soubory textové, takže k modifikaci postačí jakýkoli textový editor. Omezení přístupu pak funguje rekurzivně od adresáře, kde se nachází soubor .htaccess, tedy pokrývá i všechny podadresáře a soubory v nich.
Aby nám výše zmíněná záležitost fungovala, pak je potřeba ji pro používání povolit v konfiguračním souboru serveru Apache httpd.conf.
Vyhledejte si v konfiguračním souboru httpd.conf řádku „AllowOverride“ a zapište do něj: „AuthConfig“:
| # ee /usr/local/etc/apache/httpd.conf <Directory “/usr/local/www/data“> Options Indexes FollowSymLinks MultiViews AllowOverride AuthConfig Order allow,deny Allow from all </Directory> |
V adresáři /usr/local/www/data se povětšinou nachází naše HTML soubory k publikování – index.html, atd. Nyní je máme „zaheslovány“. Při vstupu na námi "zaheslovanou" adresu pak vyskočí okno s výzvou k zadání uživatelského jména a hesla.
Zakázat můžete i přístup k manuálu, který by byl jinak přístupný na adrese: https://192.168.2.1/manual/
| # ee /usr/local/etc/apache/httpd.conf Alias /manual/ “/usr/local/share/doc/apache/“ <Directory “/usr/local/share/doc/apache“> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Deny from all </Directory> |
Vytvoříme databázi uživatelů a jejich hesel, kterým chceme povolit přístup. Hesla jsou šifrována pomocí DES algoritmu v souboru .htpasswd. Nejdříve si však vytříme textový soubor .htpasswd a ihned také .htaccess.
.htpasswd uložíte do adresáře /usr/local/etc/apache/passwd/. Jedná se o soubor skrytý, proto je před ním umístěna tečka.
Uživatele přidáte následujícím způsobem:
Pozor: Dalšího uživatele přidáte stejným způsobem, ale již nesmíte použít volbu -c.
| # htpasswd -c /usr/local/etc/apache/passwd/.htpasswd daniel New password: Re-type new password: Adding password for user daniel. |
Editovat budeme textový soubor .htaccess, který pak umístíme do adresáře, kde máme své dokumenty připravené k publikování (tam, kde se nachází Váš index.html). Zapište do něj následující řádky:
| AuthUserFile /usr/local/etc/apache/passwd/.htpasswd AuthName “Zadejte, prosim, Vase uzivatelské jmeno a heslo:“ AuthType Basic Require valid-user |
Poznámka: Vytvořit si pro přístup můžete i skupiny uživatelů, ale o tom již více nápověda k webovému serveru Apache.
| # chown root:nogroup /usr/local/etc/apache/passwd/.htpasswd # chmod 640 /usr/local/etc/apache/passwd/.htpasswd |
Opět si vytvoříme textový soubor jako v případě .htaccess. Bude se však jmenovat .htpasswd a umístíme jej do /usr/local/etc/apache/passwd/
Nezapomeňte si také v httpd.conf vyplnit údaje týkající se Vašeho serveru:
| # General setup for the virtual host DocumentRoot “/usr/local/www/data“ ServerName dan.domena.com ServerAdmin dan@domena.com ErrorLog /var/log/httpd-error.log TransferLog /var/log/httpd-access.log |
Smažte v konfiguračním souboru položky Indexes. Řádky vypadají v httpd.conf například takto:
| Options Indexes MultiViews |
Poznámka: V serveru Apache je listování v adresářích (directory listing) implicitně povoleno. U IIS v MS je však implicitně zakázáno.
Restartujte s tímto celým nastavením webový server Apache:
| # apachectl restart |
| # cd /usr/ports/www/mod_php4 # make install distclean # cd /usr/ports/lang/php4-extensions # make install distclean |
Now, when you get to the PHP configuration screen, you just need to check the OpenSSL box and leave the rest of the default values alone, unless you plan on installing other applications, such as the IMP Webmail, that require other PHP modules. Time to take another break.
PHP should be installed by now. At the end of the installation, you will need to edit Apache's configuration file to add two lines after all the “LoadModule“ lines for PHP support.
| # ee /usr/local/etc/apache/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps |
Zprovoznění vzkazovníku. Musíte souboru, do kterého se zapisují data ze vzkazovníku (vzkazy.dat) přidělit příslušná práva.
(Přejmenujte konfigurační soubor php.ini.recommended v /usr/local/etc/ na php.ini. Editujte pak v konfiguračním souboru php.ini na serveru, kde Vám běží PHP:
| # ee /usr/local/etc/php.ini register_globals = On |
Nyní pro jistotu restartujte celý operační systém:
| # init 6 |
Narazíte-li na situaci, kdy má zákazník doménu www.firma.cz a přikoupil další domény (www.firma.com, www.firma.sk) a chce aby www.firma.com a www.firma.sk ukazovaly na www.firma.cz, s tím, aby v adresním řádku prohlížeče zůstávala uživatelem vložená adresa, existuje několik řešení. Některá řešení pracovala s více virtuálními servery, jiná zase s mod_rewrite a redirectem. Já to udělal velice jednoduše:
1) změnit si příslušné DNS záznamy, aby ukazovaly na stejnou IP
2) založit v httpd.conf virtuální server:
<VirtualHost *>
ServerAdmin pm@nekde.cz
DocumentRoot /home/firma_cz
ServerName www.firma.cz
ServerAlias www.firma.com www.firma.sk
ErrorLog /var/log/www.firma.cz-error_log
CustomLog /var/log/www.firma.cz-access_log common
SSLEngine off
</VirtualHost>
Pak už jen restartujete Apache a je to :-)
Vadí-li Vám zapisování IP adresy do Vašeho webového prohlížeče, pak můžete využít následující postup, který Vám ukáže, jak se bez zapisování IP adresy obejít. Tedy, místo tvaru https://192.168.2.2 v prohlížeči budete moci psát například https://dan.starhill.org.
Poznamenávám, že pro otestování stačí zápis v IP adrese.
Chcete-li si svůj server Apache otestovat lokálně, například ve své lokální počítačové síti (nemáte registrovánu doménu), pak budete editovat v UNIXu soubor /etc/hosts. Pro Windows stanice se daný konfigurační soubor nachází zde Windows/system32/drivers/etc/hosts. Ve všech OS bude vypadat níže uvedený řádek stejně. Mezi OS Windows, UNIX, OS/2 a jinými nejsou v tomto směru rozdíly.
Zapište do konfiguračního souboru hosts následující řádek, který bude odpovídat hodnotám počítače, na kterém Apache běží:
| 192.168.2.2 dan.starhill.org dan |
Pokud byste však již chtěli v nějaké lokální síti užívat zápisu jmen do internetového prohlížeče (v síti například s 50 ti počítači), pak Vás jistě správně napadlo, že editace, nebo rozkopírování souboru hosts do všech počítačů efektivní práci nepřinese. Proto je pak lépe si na počítači, kde Vám server Apache běží rozjet i doménový server BIND.
• povídání o FreeBSD
• začínáme s FreeBSD
• FreeBSD - základní kroky
• Sun Solaris - základní kroky
• Linux - základní kroky
• Windows - základní kroky
Hrátky s operačními systémy
• FreeBSD router
• FreeBSD ve firmě
• FreeBSD porty - jak na ně?
• vytváření FreeBSD balíčku
• instalace NetBSD
Počítačové sítě
• StarHill
• esej o bezdrátových sítích
• pasivní restranslace
• tvorba sítí typu ethernet
• Pure-FTPd + SSL + VA
• Samba a její nastavení
• Apache SSL - htaccess - PHP
• DHCP server
• Nessus
Lokalizace
• manuály FreeBSD
• RONJA
• Pure-FTPd
• nastavení Pure-FTPd
Software
• Visual Basic
• Acrobat Reader 5 a FreeBSD
• logovací démon - syslogd
Jednočipy
• programátor PIC
Různé
• mé konfigurační soubory