2014. június 19., csütörtök

Raspberry Pi - Apache web-szerver otthonra 2.

Miután beállítottuk, hogy az otthon.no-ip.org és a munka.no-ip.org címről kívülről is elérhető legyen a web-szerverünk, nézzük meg hogyan állítható be, hogy ezek a címek két különböző website-ra mutassanak. (Virtual Hosting)


Az Apache webszerver fő konfigurációs beállításai az /etc/apache2/apache2.conf fájlban találhatók, ami hivatkozik az engedélyezett website-okat tartalmazó könyvtárra (/etc/apache2/sites-enabled). Itt pedig sym linkek találhatók az elérhető website-okat tartalmazó könyvtárra (/etc/apache2/sites-available/).

Hozzuk létre a 2 website állományait és naplófájljait tartalmazó könyvtárakat:
mkdir /var/www/otthon.no-ip.org
mkdir /var/www/munka.no-ip.org
mkdir /var/log/apache2/otthon.no-ip.org>
mkdir /var/log/apache2/munka.no-ip.org
Hozzuk létre az első web-site virtuális hoszt beállításait tartalmazó fájlt /etc/apache2/sites-available/otthon.no-ip.org az alábbi tartalommal:
<VirtualHost *:80>
 ServerAdmin webmaster@otthon.no-ip.org
 ServerName otthon.no-ip.org
 DocumentRoot /var/www/otthon.no-ip.org

 CustomLog ${APACHE_LOG_DIR}/otthon.no-ip.org/access.log combined
 ErrorLog ${APACHE_LOG_DIR}/otthon.no-ip.org/error.log
 LogLevel warn
</VirtualHost>
Hozzuk létre a második web-site virtuális hoszt beállításait tartalmazó fájlt /etc/apache2/sites-available/munka.no-ip.org az alábbi tartalommal:
<VirtualHost *:80>
 ServerAdmin webmaster@munka.no-ip.org
 ServerName munka.no-ip.org
 DocumentRoot /var/www/munka.no-ip.org

 CustomLog ${APACHE_LOG_DIR}/munka.no-ip.org/access.log combined
 ErrorLog ${APACHE_LOG_DIR}/munka.no-ip.org/error.log
 LogLevel warn
</VirtualHost>
Engedélyezzük a site-okat a /etc/apache2/sites-enabled könyvtárban:
ln -s /etc/apache2/sites-available/otthon.no-ip.org otthon.no-ip.org
ln -s /etc/apache2/sites-available/munka.no-ip.org munka.no-ip.org>
Hozzunk létre egy-egy index.html-t más-más tartalommal a web-site-ok teszteléséhez
touch /var/www/otthon.no-ip.org/index.html
touch /var/www/munka.no-ip.org/index.html
Frissítsük az Apache web-szerver beállításait: sudo service apache2 reload

/var/www/otthon.no-ip.org/images könyvtár tartalmát az egyszerűség kedvéért egy BASIC authentikációval védtem le, amihez először létrehoztam egy password fájlt és hozzáadtam két felhasználót.
mkdir /etc/htpasswd
htpasswd -c /etc/htpasswd/.htpasswd user1
htpasswd /etc/htpasswd/.htpasswd user2
Az /etc/apache2/sites-available/otthon.no-ip.org fájlban pedig felvettem az alábbi sorokat:
 <Directory "/var/www/otthon.no-ip.org/images">
   AuthType Basic
   AuthName "Authentication Required"
   AuthUserFile "/etc/htpasswd/.htpasswd"
   Require valid-user
 
   Order allow,deny
   Allow from all
 </Directory>
Végül újraindítottam a webszervert: sudo service apache2 restart


2014. június 2., hétfő

Raspberry Pi - Apache web-szerver otthonra 1.

A Raspberry Pi fogyasztása minimális (2-4W), így nagyjából havi 200 forintos áram költség mellett egy teljesen hangtalan szervert üzemeltethetsz folyamatosan otthonról, amit a kis mérete miatt (8.5cm x 5.6mm x 2.1cm) akár a szekrény tetejére is felrakhatsz.

Szerettem volna egy jelszóval védett web oldalon néhány családi fényképeket publikálni a rokonoknak (A Facebook-ot és a társait inkább hagyjuk) valamint néhány munkával kapcsolatos oktatási anyagot közzétenni az ügyfelek számára. Nem számítok nagy forgalomra, így adódott a remek alkalom hogy a Raspberry Pi-n alakítsak ki egy web-szervert méghozzá két website-al! (A példa kedvéért legyen ez az otthon és a munka)

Először is telepítettem az Apache HTTP szervert a sudo apt-get install apache2 paranccsal majd leellenőriztem, hogy a http://localhost:80 címen megjelenik-e a /var/www/index.html tartalma. Mivel a web-szervert kívülről is elakartam érni, ezért az otthoni routerem virtual szerver beállításainál kinyitottam a TCP/80-as portot, így a szolgáltatótól kapott IP címmel már meg is jelent az index.html tartalma. Szuper! Az IP címemet azonban dinamikusan adja a szolgáltató,  - ami naponta akár többször is megváltozhat - ezért az ingyenes noip DDNS szolgáltatását használtam arra, hogy a noip-nél beregisztrál domain neveim mindig az aktuális IP címemre mutassanak. Ahhoz, hogy az IP címem mindig szinkronizálódjon a noip felé, egy kliens alkalmazást telepítettem az Raspberry Pi-re, ami periodikusan elküldte a noip-nek az IP címemet. Érdemes megemlíteni, hogy az újabb routerek esetén már nem szükséges a kliens alkalmazás feltelepítése, mivel támogatják a DDNS beállítását.

Tehát beregisztráltam a noip.com-ra, majd a Hosts/Redirects, Manage Hosts alatt felvettem két hoszt nevet, ahogy az alábbi képen is látható: otthon.no-ip.org és a munka.no-ip.org. Mivel az aktuális IP címem automatikusan kitöltésre került, mindkét hoszt névvel egyből elértem a web-szerverem.


A következő lépés a noip kliens telepítése:
cd /usr/local/src/
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
cd noip-2.1.9-1/
make install
A noip programot a sudo /usr/local/bin/noip2 paranccsal tudjuk elindítani, azonban érdemes beállítani az alábbi tutorial alapján, hogy a Raspbian indulásával a noip szolgáltatás is mindig elinduljon. Innentől kezdve az otthoni web-szerverünk, a két beregisztrált hoszt névvel folyamatosan elérhető lesz bárki számára.

Tulajdonképpen egy mobiltelefonról is bárhonnan hozzáférhetünk az otthoni Raspberry Pi mini-számítógépünkhöz, lekérdezhetjük a GPIO portra kötött szenzorokat vagy a rákötött kamera segítségével megnézhetjük mi történik odahaza... :)

A folytatásban azt fogom megmutatni, hogy hogyan lehet mindkét website-ot üzemeltetni ugyanerről a web-szerverről, a virtuális hoszt beállítások segítségével.