Akkor lássuk a virtualhostokat!
Aki nem találkozott az előzményekkel, az itt elolvashatja: http://ubuntu.hu/node/43668
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ó):
- /szerver_log -> a neve utal a funkcióra;
- /www -> ez lesz a gyökérmappája a webszervernek
- /www/cgi-bin
- /www/egyiklap
- /www/egyiklap/cgi-bin
- /www/masiklap
- /www/masiklap/cgi-bin
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.
Az eredeti leírás, képekkel megtámogatva itt található.