Raspberry Pi2 vagy Netbook

Visszakaptam a régi netbookomat, így picit okafogyottá vált számomra az itthoni webszerverem (vagy bármilyen szerver) raspberry pi2-n való futtatása. A netbook javára szól az x86 architektúra, rengeteg leírás elérhető bármilyen ötletet is szeretnék megvalósítani biztos találok hozzá segítséget. Ráadásul erőben is felülmúlja a Pi2-t. Nem beszélve az alapból megtalálható wifi, bluetooth, billentyűzet, képernyő kombinációról. Nagyban megkönnyítik a telepítést és a használatot.

A Pi2 előnye, hogy nagyon könnyű egy µSD kártyával cserélgetni a rendszereket, de ha előre tudom, hogy mit szeretnék, akkor hosszútávon a netbook jobb választás. A Pi2 pedig marad kísérletezni, játszani (a TV kiszolgálására már megérkezett az androidos box).

FEMP stack

Megpróbáltam FreeBSD alapokon létrehozni az itthoni tesztkörnyezetemet több-kevesebb sikerrel.

A FreeBSD telepítése és beállítása nem volt nagyobb kihívás, mint annak idején a Gentoo telepítése. Ezen a szinten a BSD és a Linux között kb. annyi különbség érezhető, mint két merőben eltérő Linux disztribúció között.

A fő problémát a virtualbox okozta. Beletelt némi időbe mire sikerült feltennem a VirtualBox Guest Additions-t. Kompromisszumot is kellett kötnöm, mert X nélkül egyszerűen nem sikerült a fordítás. Viszont nem sikerült a megosztott mappákat beállítanom a host és guest rendszerek között. Később olvastam, hogy FreeBSD alatt ez nem támogatott, így nekem tesztkörnyezetnek nem jön be.

nginx webserver

A hétvégi frissítéséknek hála perverzitásom az egekbe szökött és telepítettem egy friss Ubuntu 14.04 szervert, majd arra egy LEMP stacket.

A LAMP ugye azt jelent, hogy Linux Apache MySQL PHP (néhány helyen az M feloldása MySQL helyett MariaDB, míg a P feloldása a PHP helyett Perl, vagy Python), ezzel szemben a LEMP a Linux nginx (engine-x) MySQL PHP.

Az nginx telepítése nem volt nagy kihívás, a php-t és a mysql-t is sikerült könnyen belőni hozzá. A virtual host-ok kezelése is egyszerűen megoldható. Érzésre az oldalak gyorsabban töltődnek be, bár a VirtualBox miatt csodát nem várhatok.

A következő kihívás a nginx webserver BSD alapokon ill. Linux és BSD alapokon a mongoose webserver használata. Kíváncsi vagyok, hogy melyik összetétel a gyorsabb, persze a VirtualBox korlátait figyelembe véve.

Webserver beállítása VirtualBox-ban

Mivel már nem először kell beállítanom a webservert VirtualBoxban, úgy, hogy a host rendszer is elérje, leírom a lépéseket, hogy a későbbiekben egyben meglegyen.

Alapvetően Windows 8 operációst használok (adták a géppel), viszont nem tetszenek a Windows-ra elérhető webserver alkalmazások. Egyébként is tervbe van véve egy itthoni szerver, mely valószínűleg Ubuntu alapú lesz. Sokáig használtam Ubuntu-t desktop rendszerként is, ezt valamelyest ismerem, ezért választottam ezt. Nem biztos, hogy a legjobb megoldás VirtualBoxban futtatni webservert, de nekem bevált.

Igazából csak az első lépés specifikus a VirtualBox miatt, a többi simán az Ubuntu webfejlesztő környezet beállítása.

A cél egy Ubuntu server telepítése, megosztott mappával, fix IP címmel, több, párhuzamosan futó projekthez kapcsolódó oldallal.

1. Megosztott mappák beállítása

Én a hoszt rendszeren szerkesztem a fileokat, ezért szükségem van megosztott mappákra, így telepítés után fel kell tenni a Guest Additions-t. Ehhez szükség lehet a gcc, a dkms telepítésére (máshol még megemlítik a build-essential, a linux-headers-generic és a linux-headers-$(uname -r) csomagokat is, utóbbi változóinak nem néztem utána még).

$ sudo apt-get install -y gcc dkms
$ sudo apt-get install -y build-essential linux-headers-generic
$ sudo apt-get install -y linux-headers-$(uname -r)

Ha minden csomag fent van a Guest Additions iso-ját mountoljuk fel, majd futassuk rootként a VBoxLinuxAdditions.run filet. Nekem az autorun.sh még soha nem működött.

$ cd /media/cdrom
$ sudo ./VBoxLinuxAdditions.run

Most már elérhető a megosztott mappa az Ubuntu serverről is.

$ sudo mount -t vboxsf mappaneve eleresiut

Például:

$ sudo mount -t vboxsf munka /media/munka

Praktikus a csatolást az Ubuntu server indulásakor megtenni, ezért a /etc/fstab fileba vegyük fel a következő sort (persze a /media/munka könyvtár előtte létrehozva és a felhasználómnak mindenre van joga benne, igaz, ezt nem használom).

munka /media/munka vboxsf rw,gid=100,uid=1000,auto 0 0

A fenti sor nem szükséges, ha a VirtualBox-ban a megosztott mappáknál beállítjuk az Automata csatolást, ebben az esetben a /media/sf_munka könyvtárba találjuk meg a fileokat.

Tipp: A munka mappa nekem dropbox-ra szinkronizál, így mindig van egy plusz mentésem is. Ha még nincs dropbox accountod ezen a linken regisztrálhatsz, ez plusz tárhelyet jelent nekem ;).

Innentől az Ubuntu server beállításai megegyeznek azokkal, amiket egy desktop Ubuntun is célszerű megtenni, ha fejlesztek.

2. Szükséges csomagok telepítése

Értelemszerűen kell az apache2, a php5 és a mysql. Én felszoktam tenni a phpmyadmint is.

Valamiért gondot okozott a phpmyadmin csomag, nem látta a böngésző a felületet. A /etc/apache2/apache2.conf fileba kellett beilleszteni a következő sort:

Include /etc/phpmyadmin/apache.conf

majd újra indítani az apache webservert.

3. Fix, statikus IP cím beállítása

Ahhoz, hogy a gazda operációs rendszeren a böngészőbe címeket tudjunk használni az Ubuntu server mindig aktuális IP címe helyet be kell állítani, hogy fix IP címet kapjon a server. Ez praktikus akkor is, ha nem VirtualBoxba telepítettük az Ubuntut, hanem ez az elsődleges rendszerünk, de több projekten dolgozunk párhuzamosan.

Szerkeszteni kell a /etc/network/interfaces filet:

iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.4.4

Majd újraindítjuk a hálózatot:

$ sudo /etc/init.d/networking restart

Most már a 192.168.0.100 IP címen érjük el az Ubuntu servert. Ahhoz, hogy a gazda OS (jelen esetben a Windows) lássa a vendég OS-t (jelen esetben az Ubuntu server) VirtualBoxban a hálózati kártyát tegyük Bridge-elt módba.

4. Végső beállítások

Ahhoz, hogy ki is tudjuk használni az operációs rendszerünkön szerkeszteni kell a hosts filet. Ez linuxon a /etc/hosts, Windows 8-on a C:\Windows\System32\Drivers\etc\hosts útvonalon található. A hosts fileba vegyük fel az IP címünket és azt a domain nevet, amit használni szeretnénk. Én a .local végződést használom az itthoni gépen lévő oldalakhoz.

Példa:

192.168.0.100 garrotter.local

Majd az Ubuntu serveren állítsuk be a könyvtárakat. Minden projekthez létre hozunk egy külön filet, mely tartalmazza a weboldal elérési útvonalát. Ezt a filet elmentjük a /etc/apache2/sites-available könyvtárba a projekt nevével.

Például a file neve: garrotter.

Tartalma:

<VirtualHost *:80>
	ServerName garrotter.local
	DocumentRoot /media/munka/garrotter
	ErrorLog /media/munka/garrotter/log/error.log
	CustomLog /media/munka/garrotter/log/access.log combined

	<Directory /media/munka/garrotter>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>

Megjegyzés: a log könyvtárat létre kell hozni!

Majd engedélyezni a domaint:

$ sudo a2ensite garrotter

És az apache webservert újra tölteni:

$ sudo /etc/init.d/apache2 reload

A .htaccess fileok engedélyezése

$ sudo a2enmod rewrite

Majd újra kell indítani a webservert:

$ sudo /etc/init.d/apache2 restart

Ha nem akarunk feltenni phpmyadmint, akkor az adatbázisokat kezelhetjük parancssorból is:

$ mysql -u root -p
create database garrotter;