Akkor lássuk a virtualhostokat!
Kezdjük azzal, hogy létrehozzuk a leendő virtualhostoknak szánt mappákat a saját kis szemétdombunkon. Ezek a következők lesznek (mind a /home/felhasználó/ mappába kerül, nem kell sudo, sem semmi hasonló):
Egy éles webszerveren „public_html” a gyökérmappa neve. Nekem már volt gondom abból, hogy a működő weblap tárhelyére is be voltam jelentkezve FTP-n és szépen összekutyultam a dolgokat a megegyező mappák miatt (na jó, a figyelmetlenség is komoly szerepet játszott :-)). Azóta meghagyom a public_html nevet az éles webszervereknek, nekem jó valami más is a localhoston.
Viszont a továbbiakban már rendszergazdaként kell folytatnunk, vagyis terminálba: gksu caja
A megnyíló fájlkezelőben megnyitjuk a következő mappát: /etc/apache2/sites-enabled/.
Van egy „000-default.conf” nevű szimlink itt (a /etc/apache2/sites-available/ mappában lévő, hasonló nevű fájlra mutat), ezt ki kell kapcsoljuk, mert a későbbiekben nem lesz rá szükség.
Elég sokáig kutattam, de nem találtam se jó, se rossz ablakos alternatívát az Apache-nak szánt utasításokhoz. (Ha valaki ismer egy grafikus megoldást a lentebbiekre, az írja meg.) Tehát nyitunk egy újabb terminált (és ezt megtartjuk a további, Apache-ot érintő parancsoknak), majd beírjuk a következő parancsot:
sudo a2dissite 000-default
Ha most ismét megnézzük a fájlkezelőben, már üres lesz a /sites-enabled mappa. Elnavigálunk a /sites-available/ mappába, majd itt létrehozunk egy új fájlt „localhost.conf” névvel, majd megnyitjuk szerkesztésre.
A tartalma a következő (természetesen mindenki a saját felhasználónevét és mappanevét helyettesíti be, ahol kell):
<VirtualHost *:80> ServerName localhost ServerAdmin nemszukseges@megadni.ro DocumentRoot /home/heimtibor/www/ AddDefaultCharset UTF-8 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen AddType application/x-httpd-php .php ErrorLog /home/heimtibor/szerver_log/localhost.error_log CustomLog /home/heimtibor/szerver_log/localhost.access_log combined ### Itt egy közös rész következik, minden hostnál kell ### HostnameLookups Off UseCanonicalName Off ServerSignature Off ErrorDocument 500 "Szerver hiba!" ErrorDocument 403 "Nincs jogosultságod!" ### Eddig a közös rész ### ScriptAlias /cgi-bin/ "/home/heimtibor/www/cgi-bin/" <Directory "/home/heimtibor/www/cgi-bin"> AllowOverride None Options +ExecCGI -Includes Require all granted </Directory> <Directory "/home/heimtibor/www/"> Options FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
Nagyon lényeges, hogy pontosak legyünk, mert egy apró elírás (bárhol) is végzetes lehet a működés szempontjából!
Mentjük, bezárjuk. Ellenőrizzük, illetve bekapcsoljuk az új localhost.conf-ot, a terminálba beírjuk:
sudo apache2ctl configtest sudo a2ensite localhost sudo service apache2 reload
Az első parancsra kommentálhat (de nem feltétlenül) a domainnév hiánya miatt, ez figyelmen kívül hagyható, viszont lényeges, hogy „Syntax OK” legyen a válasza végén. Ha elhibáztunk valamit az előbbi fájlszerkesztéskor, akkor e helyett hibaüzenete(ke)t kapunk. Ha „OK”, akkor jöhet a második utasítás, majd a harmadik.
Hagyjuk pihenni a rendszergazdit, egy sima fájlkezelőben megnyitjuk a /www/ mappát és létrehozunk egy „index.html” fájlt benne (egyelőre üresen :-)). Ha eddig mindent jól csináltunk, akkor a böngészőben a localhostra egy üres lapot kell kapjunk (az index.html létrehozása előtt pedig azt, hogy „Nincs jogosultságod!”).
A folytatásban létrehozzuk a virtualhostokat, amelyeket majd használunk a fejlesztés során. Minden „honlaphoz” külön-külön egyet. Jelen esetben ez az „egyiklap” és a „masiklap”. A böngészőben egyiklap.ht és masiklap.ht lesz a nevük. Egoista vagyok így nálam „.ht” a vége minden virtualhostnak. Az mindenképpen rossz ötlet, hogy a valós, regisztrált domainnévvel megegyező formát használjuk. Tehát, ha van egy „egyiklap.hu” regisztrált nevünk, localhoston a fejlesztéshez ne használjuk ugyanezt a formát, sőt semmi olyan végződést, ami valóban létezik a neten. Használhatunk bármit ezek helyett, például: „.sajat”, „.home”, „.ht” (:-D), stb.
Akkor most ismét rendszer-garázdálkodunk. A /sites-available/ mappában, a localhost.conf mellé létrehozunk egy újabb fájlt „egyiklap.conf” néven, megnyitjuk szerkesztésre és a következőt írjuk bele:
<VirtualHost *:80> ServerName egyiklap.ht ServerAlias egyiklap ServerAdmin nemszukseges@megadni.ro DocumentRoot /home/heimtibor/www/egyiklap/ AddDefaultCharset UTF-8 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen AddType application/x-httpd-php .php ErrorLog /home/heimtibor/szerver_log/egyiklap.error_log CustomLog /home/heimtibor/szerver_log/egyiklap.access_log combined ### Itt egy közös rész következik, minden hostnál kell ### HostnameLookups Off UseCanonicalName Off ServerSignature Off ErrorDocument 500 "Szerver hiba!" ErrorDocument 403 "Nincs jogosultságod!" ### Eddig a közös rész ### ScriptAlias /cgi-bin/ "/home/heimtibor/www/egyiklap/cgi-bin/" <Directory "/home/heimtibor/www/egyiklap/cgi-bin"> AllowOverride None Options +ExecCGI -Includes Require all granted </Directory> <Directory "/home/heimtibor/www/egyiklap/"> Options FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
Mentjük, bezárjuk. Ezt a mintát követve létrehozzuk a masiklap.conf fájlt is, a szükséges módosításokkal benne.
Most bekapcsoljuk őket:
sudo apache2ctl configtest sudo a2ensite egyiklap sudo a2ensite masiklap sudo service apache2 reload
Be kell állítsuk a helyi domainneveket a /etc/host fájlban. A tartalma:
127.0.0.1 localhost 127.0.1.1 heim-www 127.0.2.1 egyiklap.ht egyiklap 127.0.2.2 masiklap.ht masiklap # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
A vastagon szedett két sor az új benne, a többi eredetileg is benne volt.
Még egy beállítás van, amit érdemes megtenni, mert most már szinte elvárás a szép url használata a weblapokon és ehhez (meg egyéb „finomságokhoz”) az Apache rewrite moduljára is szükségünk van (a .htaccess fájl működéséhez), ami alapból nincs bekapcsolva. Bekapcsoljuk tehát ezt is:
sudo a2enmod rewrite
Újraindítjuk az Apache-ot (sudo service apache2 reload).
Ezen a ponton gyakorlatilag végeztünk a rendszerbeli garázdálkodással, bezárhatjuk az ehhez használt terminált és fájlkezelőt.
Most már kellene valami tartalom is azokba a mappákba. Kicsit korábban létrehoztunk egy üres, index.html nevű fájlt a /www/ mappába. Most megnyitjuk ezt a fájlt szerkesztésre és a következőt írjuk bele:
<!DOCTYPE html> <head> <title>VirtualHostok</title> <meta charset=”UTF-8”> </head> <body> <ul> <li><a href="http://egyiklap.ht">egyiklap</a></li> <li><a href="http://masiklap.ht">masiklap</a></li> <li><a href="http://localhost/phpmyadmin/">PhpMyAdmin</a></li> </ul> </body> </html>
Így már könnyedén elérjük mindegyik „weblapunkat” a locahostról.
Ezzel végeztünk is. Később, ha egy újabb hostot szeretnénk beállítani, akkor a megfelelő lépéseket ismételjük az egyiklap.conf létrehozásától kezdődően.
Az mappák (/www/egyiklap, /www/masiklap) tartalommal való feltöltése már mindenkinek a saját házi feladata.