Ukoliko održavate neki server na kojem se vrti Debian ili neka od distribucija temeljenih na Debianu (Kubuntu, Ubuntu i slično) ili ste jednostavno vlasnik računala sa takvih operativnim sustavom, sigurno često radite nadogradnju sustava sa novim verzijama instaliranih paketa (ukoliko ne radite, trebali biste :-) ). Obično je dovoljno u shell (komandnu liniju) upisati naredbe

debian:~# apt-get update
debian:~# apt-get upgrade

i instalacija novih verzija će se izvršiti automatski (pod uvjetom da postoje nove verzije paketa). No, ponekad se to ne dogodi nego se pojavi poruka ‘The following changes have been kept back’. To se događa zbog toga što su se promijenile ovisnosti (eng. dependencies) paketa koji su instalirani na računalu (ili serveru) i to na taj način da novi paket mora biti instaliran kako bi se napravio upgrade.

Na primjer, na mojem serveru mi se nedavno pojavila poruka:

debian:~# apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
The following packages have been kept back:
  openssh-client openssh-server
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

To znači da paketi openssh-client i openssh-server ne mogu biti samo nadograđeni na novu verziju već je potrebno instalirati nove pakete. Jednostavno rješenje je naredba apt-get dist-upgrade.

root@sun:~# apt-get dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following NEW packages will be installed:
  openssh-client openssh-server
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 3697kB of archives.
After unpacking 1860kB of additional disk space will be used.
Do you want to continue? [Y/n]

Na taj način instalirat će se nove verzije svih paketa kojima je potreban upgrade i sve nove ovisnosti koje su potrebne kako bi se nadogradnja mogla izvršiti.

Nedavno sam imao potrebu na jednom serveru postaviti nekoliko Internet stranica. Možda neki (malo manje upućeni) misle da na Internetu vrijedi “1 site = 1 server” no to nije tako. Vrlo često se kod manje zahtjevnih site-ova (koji nemaju previše pageview-ova dnevno) koristi jedan server za nekoliko Internet stranica. Ovdje ću opisati kako na jednostavan način na jedan Apache2 server smjestiti 3 Internet stranice (za primjer ću koristiti domene www.prva.com, www.druga.com i www.treca.hr).

Dakle, imate server na kojem je instaliran Apache i to u verziji 2.x. Ako malo bolje pogledate u direktorij /etc/apache2, vidjet ćete slijedeće:

  • apache2.conf datoteku - u njoj se nalazi veći dio konfiguracije Apache web servera
  • conf.d direktorij - sve datoteke koje se nalaze u njemu Apache smatra konfiguracijskima i pokušati će ih pročitati kod pokretanja
  • httpd.conf - datoteka ovog naziva je u verziji 1.x sadržavala konfiguraciju koja je sad prebačena u apache2.conf. Budući da u njoj vjerojatno nema ništa, a Apache ju po defaultu čita kod pokretanja, možete ju koristiti za vlastitu konfiguraciju Apache-a
  • mods-available direktorij - u njemu se nalaze konfiguracijske datoteke modula koji su dostupni za instalaciju (neki su možda već i instalirani)
  • mods-enabled direktorij - sadrži soft linkove na konfiguracijske datoteke modula, a ti linkovi se stvaraju automatski kad se modul instalira
  • ports.conf datoteka - popis portova na kojima Apache sluša
  • sites-available direktorij - u njemu se nalaze konfiguracijske datoteke za svaku web stranicu koja je dostupna Apache-u
  • sites-enabled direktorij - sadrži soft linkove na konfiguraciju svake instalirane web stranice

Kreiranje direktorija za svaku stranicu

Prvo ćemo kreirati jedan direktorij u koji ćemo smjestiti sve Internet stranice koje ćemo imati na serveru. Taj direktorij možete kreirati bilo gdje, samo što korisnik pod kojim je pokrenut Apache servis (na nekim distribucijama to je www-data, a na drugima je httpd) mora imati prava za čitanje iz tog direktorija. Ja ću direktorij kreirati u home direktoriju.

mkdir /home/www

Nakon toga kreirajte direktorije za svaku stranicu koju ćete imati, a u svakom direktoriju stranice napravite dodatne direktorije htdocs, logs i cgi-bin.

mkdir /home/www/www.prva.com
mkdir /home/www/www.prva.com/htdocs
mkdir /home/www/www.prva.com/logs
mkdir /home/www/www.prva.com/cgi-bin
mkdir /home/www/www.druga.com
mkdir /home/www/www.druga.com/htdocs
mkdir /home/www/www.druga.com/logs
mkdir /home/www/www.druga.com/cgi-bin
mkdir /home/www/www.treca.com
mkdir /home/www/www.treca.com/htdocs
mkdir /home/www/www.treca.com/logs
mkdir /home/www/www.treca.com/cgi-bin

Naravno, ukoliko ćete imati isti sadržaj za sve stranice (npr. ukoliko imate isti naziv domene, ali različite vršne domene - www.stranica.com, www.stranica.net, www.stranica.org…) nema smisla kreirati različite direktorije nego treba koristiti soft linkove.

Konfiguracija

Nakon što smo kreirali direktorije za svaku web stranicu, moramo u Apache konfiguraciji omogućiti korištenje virtualnih hostova. Najjednostavnije je u direktoriju /etc/apache2/conf.d napraviti datoteku virtual.conf i u nju upisati slijedeće:

NameVirtualHost *

Kao što sam već rekao, Apache prilikom pokretana čita sve datoteke u direktoriju conf.d pa će pročitati i datoteku virtual.conf.

Nakon toga, u direktoriju /etc/apache2/sites-available ćemo kreirati konfiguracijsku datoteku za svaku Internet stranicu. Dakle, u datoteku /etc/apache2/sites-available/www.prva.com upišite slijedeće:

#  Prva.com (/etc/apache2/sites-available/www.prva.com)
<VirtualHost *>
ServerAdmin webmaster@prva.com
ServerName  www.prva.com
ServerAlias prva.com, *.prva.com

# Indexes + Directory Root.
DirectoryIndex index.html, index.php
DocumentRoot /home/www/www.prva.com/htdocs/

# CGI Directory
ScriptAlias /cgi-bin/ /home/www/www.prva.com/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>

# Logfiles
ErrorLog  /home/www/www.prva.com/logs/error.log
CustomLog /home/www/www.prva.com/logs/access.log combined
</VirtualHost>

Nakon toga u istom direktoriju kreirajte još i datoteke www.druga.com te www.treca.com. U njih možete staviti istu konfiguraciju kao i u www.prva.com, samo napravite logične promjene (npr. umjesto Server name www.prva.com upišite Server name www.druga.com te Server name www.treca.com).

Naravno, u svaku od datoteka možete dodati i neki proizvoljni konfiguracijski redak koji će se odnositi samo na tu web stranicu.

Instaliranje internet stranica na serveru

Iako sam ovo poglavlje nazvao instaliranje internet stranica, to je ustvari dozvola korištenja stranice Apache-u.

Da ponovimo - sada imamo 3 stranice koje se još ne koriste jer Apache ne vidi virtualne hostove koje smo definirali. To je zato što se njihova konfiguracija još ne nalazi u direktoriju sites-enabled već samo u sites-available. Pomoću slijedećih naredbi ćemo Apache-u dozvoliti korištenje stranica:

a2ensite www.prva.com
a2ensite www.druga.com
a2ensite www.treca.com

Ukoliko iz nekog razloga želimo privremeno zabraniti korištenje neke stranice Apache-u, to ćemo napraviti sa naredbom a2dissite:

a2dissite www.druga.com

Nakon što smo sve napravili slijedi ponovno pokretanje Apache servera i to je to.

/etc/init.d/apache2 reload

Korisni linkovi

Još jedna zgodna stvar kod Apache-a je što možete imati mnogo Internet stranica sa istom konfiguracijom. Dobar članak o tome možete pronaći ovdje.

U ovom postu ću poći od pretpostavke da budući da ste ovdje, sigurno znate koje su prednosti “pravog” web servera sa root pristupom u odnosu na “obični” hosting Internet stranica - možete instalirati programske pakete koji su vam potrebni bez gnjavaže oko supporta od strane hosting tvrtke, možete smjestiti više web stranica na jednom serveru… Uglavnom, dosta je prednosti ali ima i jedan nedostatak - uglavnom ste sami odgovorni ako server padne zbog pogrešne konfiguracije. No to vas ne bi trebalo brinuti ukoliko znate nešto o konfiguraciji web servera.

Ukoliko ste se susretali sa smještanjem Internet stranica na web serveru, onda sigurno znate i koliko su skupi tzv. dedicated serveri. Budući da se kod njih radi o kompletnom serveru koji je rezerviran isključivo za kupca, takve usluge imaju i odgovarajuću, dosta visoku cijenu.

VPS - virtualni privatni server

Usluga virtualnog privatnog servera je način da se root pristup serveru ponudi korisnicima po osjetno nižoj cijeni - kvaka je u tome što kod VPS-a ne dobijete pravi server u najam već se pomoću virtualizacijskog softvera jedan server podijeli na više virtualnih servera od kojih je svaki zasebna cjelina i ne utječu jedan na drugoga.

Koliko je meni poznato, u Hrvatskoj ne postoji tvrtka koja pruža ovakvu vrstu usluge, ali nema razloga zašto ne biste nekoj tvrtki iz Amerike platili za ovakvu uslugu. Jedna od boljih i jeftinijih je VPSLink, tvrtka koja nudi nekoliko vrsti virtualnih privatnih servera koji dolaze sa predinstaliranim operativnim sustavom Windows ili Linux (postoji nekoliko različitih distribucija među kojima su i Debian i Ubuntu). Budući da je za svaki VPS pod Windows operativnim sustavom potrebno platiti licencu Microsoftu, takve usluge su nešto skuplje od Linux baziranih VPS-ove.

Kod većine tvrtki koje nude uslugu VPS-a možete dobiti LAMP server - web server sa predinstaliranim Linux OS-om, Apache web serverom, MySQL bazom podataka i PHP-om. Na ovaj način možete dobiti server koji je spreman za hosting Internet stranica bez prethodnog konfiguriranja. Ipak, za bilo kakav napredniji način korištenja VPS-a (npr. za smještanje više stranica na jedan server) ipak je potrebno znati konfigurirati Apache jer smještanje jedne Internet stranice na VPS nema smisla - jeftinije i jednostavnije je uzeti običan hosting.

Prednosti i mane

Već sam naveo glavnu prednost ovakve usluge - relativno jeftin način dobivanja root pristupa web serveru. Razlog jeftinije usluge je što VPS server obično ima manje radne memorije, manji kapacitet diska no za manje zahtjevne korisnike to je i više nego dovoljno. Naravno, tvrtke nude različita ograničenja kod VPS servera pa tako tvrtka VPSLink u ponudi ima diskovne kapacitete od 2.5 GB do 160 GB, mjesečni bandwith od 100 GB do 5.000 GB, količinu memorije od 128 MB do 4096 MB… Dakle, za svakoga ima ponešto. Nekima će biti zanimljivo da neke tvrtke dozvoljavaju i preprodaju hostinga pa tako možete kupiti najjači VPS hosting plan i preprodavati pojedinačnim korisnicima.

Ubuntu Logo

U posljednjih nekoliko godina Ubuntu distribucija (i njene inačice poput Kubuntu, Edubuntu, Xubuntu…) postaju sve popularnije. Kako i ne bi kad se radi o distribucijama koje su Linux približile običnim korisnicima. Zahvaljujući Ubuntu (koji je temeljen na Debianu), Linux više nije rezerviran za profesionalne informatičare jer za njegovo korištenje u 99% slučajeva nećete trebati koristiti zloglasnu komandnu liniju. Većina stvari se može podesiti preko grafičkog sučelja - slično kao i kod Windowsa.

Kao i velika većina Linux distribucija, Ubuntu ne samo da je besplatan već se njegovo širenje potiče. Na taj način korisnici dobivaju jeftinije računalo jer ne trebaju plaćati licencu za operativni sustav (za Windowse je to oko 1.000 kn). Ti novci koji se uštede na operativnom sustavu mogu se investirati u bolji hardver.

Još jedna dobra stvar kod Linuxa općenito je što vam antivirusni program praktički nije potreban. Nitko ne kaže da Ubuntu nema sigurnosnih propusta (zbog otvorenog koda propusti su još opasniji), ali se autorima virusa jednostavno ne da raditi viruse za Linux zbog puno manjeg broja korisnika u odnosu na Windowse (pogotovo početnika).

Verzije Ubuntu-a:

Najnovija verzija Ubuntu-a je 7.10 (nazvana je Gutsy Gibbon ili samo Gutsy), a uskoro će na svjetlo dana izaći i verzija 8.04 koja će biti LTS (Long Term Support). LTS znači da će ta verzija za desktop računala imati podršku 3 godine, a za servere 5 godina od izlaska.

Inače, tvorci Ubuntu-a se trude (i do sad su uspijevali) pratiti politiku da svaka nova verzija izlazi 6 mjeseci nakon izlaska trenutne verzije. Verzije Ubuntu-a uvijek imaju svoju brojčanu oznaku i naziv. Do danas Ubuntu je izašao u slijedećim verzijama:

  • 4.10 - Warty Warthog (20.10.2004.)
  • 5.04 - Hoary Hedgehog (08.04.2005.)
  • 5.10 - Breezy Badger (13.10.2005.)
  • 6.06 - Dapper Drake (01.06.2006.)
  • 6.10 - Edgy Eft (26.10.2006.)
  • 7.04 - Feisty Fawn (19.04.2007.)
  • 7.10 - Gutsy Gibbon (18.10.2007.)
  • 8.04 LTS - Hardy Heron (24.04.2008.)
  • 8.10 - Interpid Ibex (30.10.2008.)

Kao što možete vidjeti, do sada je samo verzija 6.06 zakasnila i nije ispoštovan rok od 6 mjeseci. Osim toga, vidljivo je da verzije izlaze u Travnju i Listopadu.

Kako nabaviti Ubuntu?

Kao i većinu softvera Ubuntu se može nabaviti preko Interneta. Otvorite stranicu http://www.ubuntu.com/getubuntu/download i tamo preuzmite najnoviju verziju.

Ukoliko vam se ne žuri ili baš želite naručiti CD ili DVD, to možete napraviti na stranici https://shipit.ubuntu.com/. Za dostavu će trebati nekoliko tjedana, a ukoliko želite, možete naručiti više kopija pa ih možete podijeliti drugima.

Ubuntu, Kubuntu, Edubuntu…

Kao što možda znate, postoji više vrsta *buntu distribucija. Sve one se temelje na Ubuntu, samo što neke imaju drugačije grafičko sučelje (npr. Kubuntu ima KDE, a ne Gnome grafičko sučelje), zatim neke imaju posebnu namjenu i slično. Ali svima je zajedničko to da su potekli od Debiana i savjeti koji vrijede za Ubuntu, najčešće vrijede i za sve ostale distribucije.

Eto, ovo su osnovne stvari koje trebate znati ukoliko želite prijeći na Ubuntu. Na vama je da otkrivate dalje, a ja ću vas samo uputiti na jednu od najpopularnijih stranica za pomoć u vezi Ubuntu i srodnih distribucija - http://ubuntuforums.org/. To je ustvari forum na kojem se razmjenjuju ideje i pomaže se korisnicima koji zapadnu u probleme prilikom korištenja jedne od ovih distribucija.

Apache logoSigurno ste se do sad susretali sa web adresama tipa http://www.domena.hr/~imekorisnika/. To je standardna adresa za web prostor svakog korisnika na nekom web serveru. Svaka takva adresa ima DocumentRoot u direktoriju /home/<imekorisnika>/public_html. To je defaultna postavka Apache web servera.

No, mogli ste se susresti i sa puno “ljepšim” adresama tipa http://imekorisnika.domena.hr. Do takvog oblika web adrese vrlo je lako doći koristeći mod_rewrite modul Apache web servera.

Otvorite datoteku /etc/apache2/httpd.conf (ili /etc/apache2/apache2.conf) u nekom editoru teksta (ja ću, kao i uvijek do sad koristiti vim).

vim /etc/apache2/httpd.conf

U nju upišite slijedeće:

<VirtualHost 192.168.1.1:80>
    ServerName korisnici.domena.hr
    ServerAlias *.domena.hr
    DocumentRoot /var/www/korisnici/

    UseCanonicalName Off

    RewriteEngine on

    RewriteCond %{HTTP_host} ^([a-z0-9][-a-z0-9]+)\.domena\.hr\.?(:80)?$ [NC]
    RewriteCond /home/%1/public_html -d
    RewriteRule ^(.*) /home/%1/public_html/$1 [L]
</VirtualHost>

U prvoj liniji umjesto IP adrese 192.168.1.1 stavite IP adresu vašeg servera. Svugdje gdje piše domena.hr promijenite u vlastitu domenu i restartajte Apache.

/etc/init.d/apache2 restart

Ako na serveru imate nekog korisnika (ovo ne vrijedi za root korisnika), u njegovom home direktoriju kreirajte direktorij naziva public_html. Otvorite Internet preglednik i upišite http://imekorisnika.domena.hr i trebali biste vidjeti korisnikov web prostor.

U slučaju da prilikom restarta Apache servera dobijete grešku o liniji RewriteEngine on, vjerojatno nemate instaliran modul mod_rewrite. Upišite slijedeće:

a2enmod rewrite

Nakon toga ponovno napravite restart Apache servera i sve bi trebalo raditi kako treba.