Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: LAMP  (Přečteno 82935 krát)

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
LAMP
« kdy: 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
Kód: [Vybrat]
sudo apt-get install tasksel
Kód: [Vybrat]
sudo taskselVybrat LAMP server. Teď by mělo vše včetně PHP a MySQL fungovat, pokud jsme zvyklí na PHPMyAdmina přiinstalujeme ho.
Kód: [Vybrat]
sudo apt-get install mysql-server phpmyadminPro apache2 ještě mod_rewrite:
Kód: [Vybrat]
sudo a2enmod rewrite a vhost_alias:
Kód: [Vybrat]
sudo a2enmod vhost_aliasCo je v /etc/apache2/sites-enabled/default je vhodné zazálohovat a přepsat:
Kód: [Vybrat]
sudo mv /etc/apache2/sites-enabled/default ~/apache2-default.backupPak nakopírovat toto pro každou doménu do /etc/apache2/sites-enabled/default, tedy:
Kód: [Vybrat]
sudo nano /etc/apache2/sites-enabled/default a přepsat tímto:
Kód: [Vybrat]
<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:
Kód: [Vybrat]
sudo ln -sf /usr/share/phpmyadmin /var/www/domena.tld/mysqlNakonec teda ještě restart/reload:
Kód: [Vybrat]
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:
Kód: [Vybrat]
Match group sftp
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp

Pro uživatele, které chceme chrootovat si vytvoříme skupinu sftp
Kód: [Vybrat]
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.
Kód: [Vybrat]
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
Kód: [Vybrat]
sudo apt-get install opensslVygenerujeme si klíč. Doporučuji RSA o velikosti 4096 bitů.
Kód: [Vybrat]
openssl ***Tento klíč použijeme k vygenerování requestu na certifikát pro startssl.com, který ho podepíše.
Kód: [Vybrat]
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:
Kód: [Vybrat]
sudo a2enmod ssl
Do /etc/apache2/sites-avaiable/default
Kód: [Vybrat]
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. :-*
« Poslední změna: 11 Srpna 2011, 11:22:41 od Tomáš Břinčil »

Ni3m4nd

Re: LAMP
« Odpověď #1 kdy: 02 Června 2011, 22:52:44 »
Promiň já vím že jsem trdlo ale nemá tam být "taskel" ale "tasksel" ne? Jinak moc děkuju tohle jsem potřeboval :-)

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #2 kdy: 03 Června 2011, 10:06:08 »
Samozřejmě, díky za opravu.

Martin - ViPEr*CZ*

Re: LAMP
« Odpověď #3 kdy: 03 Června 2011, 10:12:18 »
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?
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #4 kdy: 03 Června 2011, 10:25:27 »
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

Ni3m4nd

Re: LAMP
« Odpověď #5 kdy: 03 Června 2011, 10:43:46 »
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!

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #6 kdy: 03 Června 2011, 10:52:24 »
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:
Kód: [Vybrat]
sudo a2enmod rewrite

Ni3m4nd

Re: LAMP
« Odpověď #7 kdy: 03 Června 2011, 11:11:27 »
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!

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #8 kdy: 03 Června 2011, 11:28:19 »
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

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Re: LAMP
« Odpověď #9 kdy: 03 Června 2011, 11:38:44 »
Nebude se to bít s /etc/apache2/httpd.conf , respektive /etc/hosts?
Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #10 kdy: 03 Června 2011, 12:15:13 »
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.

Ni3m4nd

Re: LAMP
« Odpověď #11 kdy: 03 Června 2011, 12:24:33 »
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.

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #12 kdy: 03 Června 2011, 12:26:28 »
tak zkus /var/www/domena.tld/www/index.html
Tak jak jsem to psal v prvním příspěvku.

Ni3m4nd

Re: LAMP
« Odpověď #13 kdy: 03 Června 2011, 12:40:03 »
upraveno ale pořád to dělá naprosto to samé co jsem psal.

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #14 kdy: 06 Června 2011, 13:23:47 »
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

romciiik

  • Stálý člen
  • **
  • Příspěvků: 532
    • romiix.org
Re: LAMP
« Odpověď #15 kdy: 06 Července 2011, 08:00:09 »
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.

Kód: [Vybrat]
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!
« Poslední změna: 06 Července 2011, 08:17:47 od romciiik »

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #16 kdy: 06 Července 2011, 20:05:48 »
Nějak nechápu co je za problém? ;D

romciiik

  • Stálý člen
  • **
  • Příspěvků: 532
    • romiix.org
Re: LAMP
« Odpověď #17 kdy: 07 Července 2011, 08:19:11 »
: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

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #18 kdy: 07 Července 2011, 10:16:30 »
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)

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #19 kdy: 03 Srpna 2011, 15:09:26 »
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

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re: LAMP
« Odpověď #20 kdy: 03 Srpna 2011, 18:07:42 »
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?
jabber: etnyx@jabbim.cz

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #21 kdy: 03 Srpna 2011, 18:42:05 »
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

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re: LAMP
« Odpověď #22 kdy: 03 Srpna 2011, 19:06:17 »
Návod týkající se SFTP + přípojení přes nautilus i filezillu jsem prošel a je funkční
« Poslední změna: 03 Srpna 2011, 19:08:12 od ETNyx »
jabber: etnyx@jabbim.cz

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: LAMP
« Odpověď #23 kdy: 03 Srpna 2011, 19:22:10 »
Pěkně děkuji, ještě přidám návod na přidání certifikátu pro HTTPS.
Stay tuned ;D

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re: LAMP
« Odpověď #24 kdy: 03 Srpna 2011, 21:23:28 »
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 :-)
jabber: etnyx@jabbim.cz

 

Provoz zaštiťuje spolek OpenAlt.