Fejlesztői környezet - virtuális gép, operációs rendszer

A jelenlegi leírás egy alapszintű web fejlesztői környezet kialakítását mutatja be. Az elkészült környezet elsődleges célja az egyszerű üzembe helyezés és a - lehetőségekhez mérten - kényelmes használat.

Fejlesztői környezet megtervezése során jó néhány eldöntendő kérdés merül fel, melyek megválaszolása alpvetően befolyásolja a kialakítandó végeredményt. Az első és legfontosabb kérdés talán az, hogy a kiszolgáló környezetet hol helyezzük el. 

  • A fejlesztői munkaállomáson: csomagból vagy letöltött telepítési állományokbó elemekből apache, php, mysql, stb. telepítünk, vagy előre összeállított környezetet alkalmazunk pl. XAMPP.
  • Távoli kiszolgálót telepítünk esetlegesen egy VPS-en.
  • Az előző két lehetőség kombinációját valósítjuk meg és a fejlesztői munkaállomáson telepítünk egy virtuális kiszolgálót.

Valamennyi megoldás melett és ellen is több érv felsorakoztatható, a legutóbbi egyfajta arany középutat testesít meg, ezért most azt részesítem előnyben. Leírásban virtualizációs megoldásként a VirtalBox-ot  fogom használni. A virtuális gép beállításait az alábbi szerint történik.

Fejlesztői környezet - virtuális gép, operációs rendszer_1

A telepítés során az Ubuntu aktuális 16.04 szerver verzióját használom. A telepítés során szinte mindent alahelyzetben hagytam, a szükséges módosításokat a telepítést követőne végzem el.  

  • nyelv választás: magyar
  • billentyűzet felismerés: nem (Hungarian - Hungarian)
  • hálózati beállítás: manuális (192.168.1.249, 255.255.255.0, 192.168.1.1, 8.8.8.8)
  • gépnév: webserver
  • tartomány név: webkucko.loc
  • saját mappa titkosítása: nem
  • időzóna megfelelő: igen
  • lemez particionálás: irányított az egész lemez felhasználása (fejlesztői környezet)
  • rendszer frissítés: automatikus telepítés
  • szoftver választás: standard system utilites és OpenSSH szerver
  • A GRUB rendszerbetöltőt a MBR telepíti: igen

A telepítés befejezését és az újraindulást követően első feladatunk az elkészült szerver frissítése, tehát:

sudo apt update 
sudo apt upgrade

Távoli elérés beállítása

A frissítést követően konfiguráljuk az SSH elérést a könnyebb és kényelmesebb elérés céljából. Készitsünk másolatot a a konfigurációs állományról és tegyük azt írásvédetté:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig 
sudo chmod a-w /etc/ssh/sshd_config.orig

Tekintettel arra, hogy ez egy fejlesztői környezet és nem éles üzemű szerver, tekintsünk most el az SSH port módosításától, a jelszó alapú bejelentkezés tiltásától, stb. Az /etc/ssh/sshd_config állomány szerkesztésével engedélyezzük a a nyilvános kulcs alapú bejelentkezést, vegyük fel a következő sort vagy módosítsuk ha már létezik és kommentelve van:

PubkeyAuthentication yes

Szükség esetén indítsuk ujra a szolgáltatást:

sudo service ssh restart

Az SSH kulcsok létrehozásához a fejlesztői munkaállomáson az ssh-keygen nevű programot (Windows munkaállomás esetén a PuTTY és a PuTTYgen alkalmazáskat) használhatjuk. A folyamat során a program bekér egy jelszót, amelyet megadhatunk vagy átléphetünk beállítotságunk fügvényében :). 

Alapértelmezésben a nyilvános kulcs a ~/.ssh/id_rsa.pub fájlba kerül, míg a ~/.ssh/id_rsa a személyes kulcsot tárolja. Az id_dsa.pub fájlt a virtuális kiszolgálónkra másoljuk, és a következő parancs kiadásával és hozzá fűzzűk  az ~/.ssh/authorized_keys fájl végéhez:

ssh-copy-id felhasználónév@távoligép

Sikeres másolás esetén el kell tudnunk érni a virtuális gépünket a jelszó megadása nélkül. Sikeres csatlakozást követően az authorized_keys fájl jogosultságait módosítsuk az alábbiak szerint:

chmod 600 .ssh/authorized_keys

Alapszintű tűzfal beállítása

Egy alapszintű tűzfal beállítása minden esetben indokolt, Ubuntu esetében érdemes az alapértelmezett tűzfalbeállító eszközt az ufw alkalmazni. 

sudo ufw status
sudo ufw enable
sudo ufw status verbose
sudo ufw app list
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Au ufw status parancs értelemszerűen a tűzfal állapotát mutatja meg (alaértelmezetten inaktív). A második parancs engedélyezi a tűzfal működését (alapértelmezés szerint a bejövő és átmenő kapcsolatokat tiltja, a kimenő kéréseket engedélyezi). 

Az utolsó három paranccsal engedélyezzük az ssh hozzáférést a normál és a biztonságos webes tartalom elérését.

(folytatás következik...)

fejlesztői környezet, linux, virtuális gép, webfejlesztés,