Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: Tomáš Břinčil 02 Června 2011, 22:13:39
-
Množí se tady dotazy na triviálnosti kolem apache2.
Občas se až divím jak někdo může vymýšlet takové složitosti.
Proto zazáložkuji tento topic kde se bude řešit idální nastavení webserveru.
Neřikám, že mám nejlepší nejekonomičtější a bůhvíco nej řešení, ale moje řešení funguje.
Pokud někdo bude mít lepší řešení, můžeme jej prodiskutovat a případně doplnit.
out-of-box LAMP server s automatickými subdoménami
sudo apt-get install tasksel
sudo tasksel
Vybrat LAMP server. Teď by mělo vše včetně PHP a MySQL fungovat, pokud jsme zvyklí na PHPMyAdmina přiinstalujeme ho.
sudo apt-get install mysql-server phpmyadmin
Pro apache2 ještě mod_rewrite:
sudo a2enmod rewrite
a vhost_alias:
sudo a2enmod vhost_alias
Co je v /etc/apache2/sites-enabled/default je vhodné zazálohovat a přepsat:
sudo mv /etc/apache2/sites-enabled/default ~/apache2-default.backup
Pak nakopírovat toto pro každou doménu do /etc/apache2/sites-enabled/default, tedy:
sudo nano /etc/apache2/sites-enabled/default
a přepsat tímto:
<VirtualHost *:80>
ServerName *
ServerAdmin napis@admin.ovi
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domena1.eu
RewriteRule (.*) http://www.domena1.eu$1 [R=301,QSA,L]
RewriteCond %{HTTP_HOST} ^domena2.com
RewriteRule (.*) http://www.domena2.com$1 [R=301,QSA,L]
VirtualDocumentRoot /var/www/%-2.0.%-1.0/%-3
</VirtualHost>
Doména se pak překládá takto (kdysi jsem to tady řešil):
http://subdomena.domena.tld/index.php
/var/www/domena.tld/subdomena/index.php
Takže všichni zdejší "poskytovatelé" můžou chrootnout do /var/www/domena.tld uživatele a ten si jednoduchým vytvořením adresáře www a subdomena může vytvářet subdomény.
Pokud chceme mít přístup z webu na naší doméně do phpmyadmina, tak stačí udělat jednoduchý link:
sudo ln -sf /usr/share/phpmyadmin /var/www/domena.tld/mysql
Nakonec teda ještě restart/reload:
sudo service apache2 restart/reload
SFTP CHROOT
FTP jako takové je kopa *** a je pro holky ^^
FTPeS pomůže, ale jednodušší mi přijde SFTP.
Následující postup není pro zelenáče a pokud to jen bezhlavě zkopírujete tak Bill zabije koťátko.
Je potřeba si nainstalovat SSH server, pokud se připojíte SSHčkem, pravděpodobně to bude bez problémů.
V /etc/ssh/sshd_config zakomentujeme řádek: Subsystem sftp /usr/lib/openssh/sftp-server
a nahradíme řádkem: Subsystem sftp internal-sftp
Nakonec konfigu přidáme ještě pravidlo pro odchyt skupiny sftp a její chrootnutní do domovského adresáře:
Match group sftp
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
Pro uživatele, které chceme chrootovat si vytvoříme skupinu sftp
sudo addgroup sftp
Teď tedy koupíme doménu google.cz a budeme jí chtít nabídnout externímu webmasterovi ke správě.
/var/www/google.cz/ bude domovský adresář pro uživatele google a je potřeba podstoupi nějakou rutinu.
sudo mkdir /var/www/google.cz
sudo useradd -d /var/www/google.cz google
sudo passwd google
sudo usermod -s /bin/false google
sudo usermod -g sftp google
chown root:root /var/www/google.cz
chown google:sftp -R /var/www/google.cz
Přístup na sftp přes nautilus
Otevřeme nautilus a Soubor → Připojit se k serveru
Nebo Místa → Připojit se k serveru
Typ služby: SSH
Server: DNS/IP serveru
Uživatelské jméno: google
Připojit a zadat heslo, doporučuji vytvořit záložku ;)
Přístup na sftp přes filezillu
Aplikace → Centrum softwaru pro Ubuntu → hledat: filezilla → nainstalovat
Aplikace → Internet → FileZilla
Soubor → Správce míst
Nové místo:
Hostitel: DNS/IP serveru
Server Type: SFTP - SSH File Transfer Protocol
Logon Type: Normální
Uživatelské jméno: google
Heslo: *****
Spojit
Pak je možné exportovat i importovat pomocí pravého kliku na příslušné připojení.
SSL & HTTPS & CA
CA - Certification Authority
Trocha teorie. Jde o asymetrické šifrování.
Každý účastník komunikace má soukromý a veřejný klíč.
Veřejný klíč je přístupný každému, oukromý klíč jen vlastníkovi a jeho kompromitace je nežádoucí.
Jak to funguje?
Veřejným klíčem něco zašifruju [pepa → qwertzuiop] a vstupní řetězec z toho dostanu jen za použití soukromého klíče (vázaného na ten veřejný) [qwertzuiop → pepa]. Chápeme ne?
Pokud budu chtít pepovi poslat zprávu, vezmu jeho veřejný klíč. Zprávu zašifruju jeho veřejným klíčem a pošlu mu to. Když pepa získá zašifrovanou zprávu dokáže jí pomocí svého soukromého klíče dešifrovat. Proto je důležité své soukromé klíče chránit!!! Nikdo jiný nemůže zprávu zašifrovanou veřejným klíčem rozšifrovat bez soukromého klíče párovaného na veřejný. Tohle je taky jasný ne?
Funguje to i obráceně, můžu svým soukromým klíčem zašifrovat třeba md5 součet veřejného klíče někoho jiného (+ nějaká data = SSL certifikát) a ten si toto podepsání ověří dešifrováním pomocí mého veřejného klíče. Takhle funguje podepisování CAček. Existuje jeden "rootovský" pár klíčů a od toho jsou hiearchicky odvozeny všechny ostatní. Root podepíše CAčka jako VeriSign a ty potom za velké peníze nabízí podepisování našich klíčů.
Pokud budeme chtít být konkrétnější, tak si představíme reálnou situaci:
Handshake: Klient/Uživatel pošle požadavek na server, že chce zobrazit stránku. Server mu pošle svůj certifikát. Certifikát obsahuje kromě informací o *CA, který ho vystavil také informace o provozovateli serveru a samozřejmě veřejný klíč serveru.
Teď klient vezme veřejný klíč z certifikátu a tím zašifruje pseudonáhodný řetězec (základ klíče, kterým bude potom symetricky šifrována komunikace). Odešle to serveru a ten svým soukromým klíčem tuto zpráve dešifruje a zkontroluje obsah. Pokud nenastal problém server potvrdí přijetí a z těchto řetězců si klient i server vygenerují hlavní klíče, kterými jsou potom šifrovány zprávy.
Je důležité pochopit alespoň toto nezbytné minimum.
*CA: Jak jsem se výše zmínil, autority chtějí nemalé peníze za podepsání vašeho certifikátu. Můžete si sami podepsat certifikát, takzvaný self-signed. Ale ten není prohlížeči brán jako důvěryhodný a třeba v chrome vyskočí ono ošklivé červené okno, které nemalé procento návštěvníku vystraší. http://www.startssl.com/ Nabízí bezplatné podepsání requestu na certifikát. V následujícím postupu se budu věnovat tedy vygenerování "dospělého" certifikátu na náš server. Záměrně nebudu zmiňovat podrobnosti, takže by nemělo jít o copy & paste.
Pokud nemáme, tak si nainstalujeme openssl
sudo apt-get install openssl
Vygenerujeme si klíč. Doporučuji RSA o velikosti 4096 bitů.
openssl ***
Tento klíč použijeme k vygenerování requestu na certifikát pro startssl.com, který ho podepíše.
openssl ***
Tyto dva kroky jsou nejdůležitější.
Dále už stačí jen vytvořit účet na http://www.startssl.com a nechat si ho podepsat v Control Panelu.
Nejdříve bude vyžadováno ověření pro naši doménu (záložka Validations Wizard). Nechápu, proč si nemůžeme zadat vlastní mail ale budiž. V Google Apps to je otázka dvou kliknutí.
Po ověření nám nic nebrání podepsání. Otevřeme záložku Certificates Wizard, přeskočíme první krok (máme vlastní request) a obsah souboru, který byl vygenerován jako request (při druhém kroku) nakopírujeme do políčka ve stránce.
Po podepsání přijde oznámení na mail a můžeme si certifikát stáhnout z Control Panelu.
Obsah nakopírujte do souboru server.crt
Pro dokončení je nutný poslední krok, vytvoření server.pem souboru, který bude obsahovat náš klíč (z prvního kroku s openssl) a hned za ním obsah souboru server.crt
Apache2 není potřeba složitě konfigurovat:
sudo a2enmod ssl
Do /etc/apache2/sites-avaiable/default
SSLEngine on
SSLCertificateFile /cesta/k/souboru/server.pem
Doufám, že jsem vás neodradil. Tento postup už nebude pro úplné začátečníky.
Opět budu rád, za každý komentář. Pokud budete mít problémy rád je pomůžu vyřešit. :-*
-
Promiň já vím že jsem trdlo ale nemá tam být "taskel" ale "tasksel" ne? Jinak moc děkuju tohle jsem potřeboval :-)
-
Samozřejmě, díky za opravu.
-
Jestli se nepletu, tak je po každém směrování A záznamu nutno přidat Rewrite pravidla pro danou doménu do souboru default?
-
Jestli se nepletu, tak je po každém směrování A záznamu nutno přidat Rewrite pravidla pro danou doménu do souboru default?
Ano, kvůli přepsměrování v prohlížeči z http://domena.tld na http://www.domena.tld
-
při restartu apache vypíše shell
sudo service apache2 restart
Syntax error on line 5 of /etc/apache2/sites-enabled/default:
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
...fail!
-
při restartu apache vypíše shell
sudo service apache2 restart
Syntax error on line 5 of /etc/apache2/sites-enabled/default:
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
...fail!
Psal jsem to z hlavy, takže mouchy tu budou, jsem rád, že to někdo debuguje ;D
zkus:sudo a2enmod rewrite
-
aaaaa další chyba xD
ni3mm4nd@ni3mm4nd:~$ sudo a2enmod rewrite
[sudo] password for ni3mm4nd:
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!
ni3mm4nd@ni3mm4nd:~$ sudo /etc/init.d/apache2 restart
Syntax error on line 13 of /etc/apache2/sites-enabled/default:
Invalid command 'VirtualDocumentRoot', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
...fail!
-
aaaaa další chyba xD
ni3mm4nd@ni3mm4nd:~$ sudo a2enmod rewrite
[sudo] password for ni3mm4nd:
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!
ni3mm4nd@ni3mm4nd:~$ sudo /etc/init.d/apache2 restart
Syntax error on line 13 of /etc/apache2/sites-enabled/default:
Invalid command 'VirtualDocumentRoot', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
...fail!
jj ještě vhost_alias
-
Nebude se to bít s /etc/apache2/httpd.conf , respektive /etc/hosts?
-
Nebude se to bít s /etc/apache2/httpd.conf , respektive /etc/hosts?
Proč?
Funguje to i bez zápisu v /etc/hosts jestli myslíš tohle.
-
tak teď se napsalo OK ale kdyz zadam domeny s www cili www.domena1.eu nebo www.domena2.com tak se nezobrazi indexy k prislusnym strankam ktere jsou ve /var/www/domena1.eu/index.html nebo /var/www/domena2.com/index.html ale index ktery je primo ve /var/www/index.html. Bez www stranky nenabehnou vubec.
-
tak zkus /var/www/domena.tld/www/index.html
Tak jak jsem to psal v prvním příspěvku.
-
upraveno ale pořád to dělá naprosto to samé co jsem psal.
-
upraveno ale pořád to dělá naprosto to samé co jsem psal.
Už se to povedlo rozchodit?
Ten "regulární" výraz nebude dělat nic jiného než to, co by dělat měl - to je fakt.
Pokud budeš mít index.html v /var/www/domena.tld/www
a zadáš v prohlížeči http://www.domena.tld/index.html, tak se ti musí objevit.
Zkus ještě smazat zálohu konfiguráku v /etc/apache2/sites-avaliable/default.backup
-
Zdravím,
nejak sa mi nedarí pracovať s doménami.
V minulosti som to mal nastavené tak, že som si spustil server na localhoste a po zadaní napr. http://mojweb.roman mi nacitalo /opt/lampp/htdocs/roman/mojweb/www.
Vtedy som mal LAMPP
Predpokladám, že podla tohto návodu by som sa mal dostať takmer k takémuto istému stavu, až na to, že sa to bude ťahať z /var/www/mojweb.roman/www.
Problém je, že po zadaní http://localhost dostanem od servera odpoveď Not Found.
Po zadaní http://domena1.eu nedostanem od servera odpoveď - Oops! Google Chrome could not find domena1.eu.
Súbor /etc/apache2/sites-enabled/default u mňa neexistuje, existuje /etc/apache2/sites-enabled/000-default. Pracoval som s ním. Dal som do neho zatiaľ presne ten istý obsah ako je v prvom príspevku.
roman@roman-laptop:/etc/apache2/sites-enabled$ sudo service apache2 reload * Reloading web server config apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]
roman@roman-laptop:/etc/apache2/sites-enabled$ sudo service apache2 restart * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]
Mám čerstvo nainštalované Ubuntu 11.04, Apache/2.2.17
Ďakujem!
-
Nějak nechápu co je za problém? ;D
-
:D
Problém je, že po zadaní http://localhost dostanem od servera odpoveď Not Found.
Po zadaní http://domena1.eu nedostanem od servera odpoveď - Oops! Google Chrome could not find domena1.eu.
proste nefungujú virtualhosty - ani localhost
-
Localhost pochopitelně(?) nefunguje.
Zkoušíš to na jednom počítači?
Vyzkoušej to v normálním nasazením, kam je tento návod určen :o)
-
Přidal jsem návod na SFTP chroot, budu rád, pokud to někdo vyzkouší a dá vědět jestli to funguje nebo je třeba něco upravit ;D
-
zkusil jsem to na na vpsce a
+ useradd -d nevytvořil ten domovskej adresář, takže chmod hodil fail, takže jsem musel ručně vytvořit ten adresař.
+ jak máš ten druhej chown tak je celkem zmatečný jak tam máš uživatele jako user a ne jako google.
+ mužeš sem připadně přidat postup na tu filezillu?
-
zkusil jsem to na na vpsce a
+ useradd -d nevytvořil ten domovskej adresář, takže chmod hodil fail, takže jsem musel ručně vytvořit ten adresař.
+ jak máš ten druhej chown tak je celkem zmatečný jak tam máš uživatele jako user a ne jako google.
+ mužeš sem připadně přidat postup na tu filezillu?
Lepší?
Můžeš potvrdit funkčnost podle postupu, kterej tu je? ;D
-
Návod týkající se SFTP + přípojení přes nautilus i filezillu jsem prošel a je funkční
-
Pěkně děkuji, ještě přidám návod na přidání certifikátu pro HTTPS.
Stay tuned ;D
-
Oki už jsme tu vpsku restartoval tak to na ni zase odzkouším :-) BTW ta filezilla mně příjemně překvapila nikdy jsem nikde tohle ukládání hesel a tak nepoužíval (ani používat nebudu), ale pro lidi to musí být užitečný když se to dá takhle přenést. Možná se mi s tím povede konečně vypnout ty ftpka co provozuju :-)
-
Tak přidávám návod na zprovoznění https.
Poprosil bych o zpětnou vazbu ;)
-
Pro provozování SSL domén (certifikát pro každou doménu) na jedné adrese musí apache mít podporu pro SNI. Ta je od verze 2.2.14 (přesně si nejsem tak jistej). Dále je problém se stále rozšířenýma Windows XP, kde je problém s podporou browserů:
SNI has only recently gained support in browsers. The browsers that have been confirmed to support SNI are
Opera 8.0+
Firefox 2+
Internet Explorer 7+
Safari 3.2.1+
Chrome (NOT Chromium) ((Chromium 11.0.696.28 seems to do sni fine -mt))
Note: Safari and Chrome only support SNI on Vista or higher.
=====================
ad
Nejdříve bude vyžadováno ověření pro naši doménu (záložka Validations Wizard). Nechápu, proč si nemůžeme zadat vlastní mail ale budiž. V Google Apps to je otázka dvou kliknutí.
To proto aby alespoň částečně zachovali vazbu na doménu a vlastníka domény, protože ten jediný má přístup na hostmaster@domena.tld. Nejde jen o šifrování, ale také o ověření identity serveru, což je stejně důležité jako to šifrování a neměl by si kdokoliv generovat certifikáty k doménám co mu nepatří..
V Google Apps je to jednoduché protože tu doménu tam máš za hostovanou a oni vědí že je tvoje když jsi zakládal účet, ale StartSSL u certifikátů class1 může validovat jen
podle servisního účtu.
-
Pro provozování SSL domén (certifikát pro každou doménu) na jedné adrese musí apache mít podporu pro SNI. Ta je od verze 2.2.14 (přesně si nejsem tak jistej). Dále je problém se stále rozšířenýma Windows XP, kde je problém s podporou browserů:
...
S tímto jsem problém neměl.
Nejdříve bude vyžadováno ověření pro naši doménu (záložka Validations Wizard). Nechápu, proč si nemůžeme zadat vlastní mail ale budiž. V Google Apps to je otázka dvou kliknutí.
To proto aby alespoň částečně zachovali vazbu na doménu a vlastníka domény, protože ten jediný má přístup na hostmaster@domena.tld. Nejde jen o šifrování, ale také o ověření identity serveru, což je stejně důležité jako to šifrování a neměl by si kdokoliv generovat certifikáty k doménám co mu nepatří..
V Google Apps je to jednoduché protože tu doménu tam máš za hostovanou a oni vědí že je tvoje když jsi zakládal účet, ale StartSSL u certifikátů class1 může validovat jen
podle servisního účtu.
Vlastní mail na vlastní doméně, nemusíš mi vysvětlovat smysl tohoto kroku, stačilo by cokoliv@domain.tld. postmaster@domain.tld jsem zrovna neměl, tak jsem to musel nastavit a dost mě to otrávilo - byl to časově nejnáročnější úkon.
-
Cokoliv by asi nestačilo, to by jsem si pak třeba mohl udělat certifikát na host email.seznam.cz jen proto že mam u nich jednu z mailovejch adres. Prostě hostmaster@, postmaster@, webmaster@, abuse@ jsem servisní účty a přístup k nim má držitel domény, pak ta doména může mít dalších milion maiboxů.
-
Zdravím,
nainstaloval jsem si Ubuntu 7.10 chci ho využívat jako server a tak jsem si chtěl nainstalovat balíček LAMP pokračoval jsem podle návodu zde http://wiki.ubuntu.cz/Apache%20s%20MySQL%20a%20PHP je zde i napsané, že návod je od 7.10, když jsem si nainstaloval tasksel a spustil ho měl jsem na výběr jen ze dvou balíčků (print server a jakjsik další).....ale LAMP tam není ani v Synapticu....Díky za pomoc kde ho mám hledat případně jak ho nainstalovat
-
Zdravím,
nainstaloval jsem si Ubuntu 7.10 chci ho využívat jako server a tak jsem si chtěl nainstalovat balíček LAMP pokračoval jsem podle návodu zde http://wiki.ubuntu.cz/Apache%20s%20MySQL%20a%20PHP je zde i napsané, že návod je od 7.10, když jsem si nainstaloval tasksel a spustil ho měl jsem na výběr jen ze dvou balíčků (print server a jakjsik další).....ale LAMP tam není ani v Synapticu....Díky za pomoc kde ho mám hledat případně jak ho nainstalovat
Ubuntu 7.10 již není podporovanou verzí, instalujte verzi která má oficiální podporu, nevíte které to jsou? https://wiki.ubuntu.com/LTS (https://wiki.ubuntu.com/LTS) podívejte se zde na graf