Linux web server

Vrijeme čitanja: 7 min

Na blogu sam već pisao kako podignuti vlastiti web server na Windows platformi. Došao je trenutak da pogledamo kako istu stvar napraviti nativno na Linux platformi. Mnogi bi rekli kako je Linux prirodno okruženje za web servere, a kako ovdje širimo znanje, vrijeme je da pogledamo kako to napraviti.

Podsjetimo se ukratko što nam sve treba za ispravan rad web servera, odnosno što sve moramo instalirati na svom Linux serveru:

  • Apache – web server softver, bez njega nema ni weba
  • PHP – skriptni jezik čiji se kôd izvršava na web serveru
  • Baza podataka – softver u koji će se spremati svi podaci od web stranice

Znamo sve što treba, idemo redom.

Instalacija Debian distribucije

Za potrebe ovog članka, kao Linux rješenje je odabrana Debian 12 distribucija.

Instalacija nije ništa komplicirana a sve radimo u virtualnoj mašini.

  1. Preuzeti Debian .iso image instalaciju
  2. Ubacit .iso image u virtualku (mount) i pokrenuti instalaciju – boot s .iso medija
  3. Slijediti korake instalacije

    Napomena: kad se dođe do dijela za definiranje root lozinke – obavezno zapamtite (ili zapišite) negdje tu lozinku koju definirate, jer će to biti „glavna admin lozinka“ za ovu Debian instalaciju i bez nje nećemo moći ništa.  

  4. Na dijelu odabira instalacije dodatnog softvera, staviti kvačicu na SSH server. To će nam isto trebati kasnije

    Napomena: na ovom koraku također postoji mogućnost odabira instalacije web servera, ali to nećemo kliknuti jer je cilj ovog da taj dio napravimo ručno u svrhu edukacije.

Po završetku instalacije, dočekat će nas login ekran za Debian.

Spajanje na Debian kroz SSH konzolu

U ovom trenutku se za ovakav tip posla osobno volim prebacit na rad kroz konzolu, stoga ću tako i ovdje. Možete napraviti isto tako, kako bi stekli iskustva u korištenju naredbi na Linux platformi ukoliko nemate prijašnjeg iskustva u tome.

  1. Na svom Windows stroju preuzmite i instalirajte Putty program koji ćemo koristiti za SSH spajanje na Debian
  2. Pokrenite Putty i unesite IP adresu svog Debian stroja, s odabranom SSH opcijom

U mom primjeru IP adresa je 192.168.10.105.

Koja je IP adresa kod vas možete provjeriti u svojoj Debian instalaciji odlaskom u Settings > Network.
Pod Wired konekcijom odete na ikonu zupčaniku i otvorit će vam se prozor u kojem će biti prikazana IP adresa. Imajte na umu da kad budete radili ovo za produkciju, da to bude statična IP adresa pošto je riječ o serveru.

Prilikom prvog spajanja, Putty će pitati da li želite spremiti sigurnosne SSH ključeve za spajanje s Debian serverom, slobodno kliknite da želite.

Nakon potvrde, pojavit će nam se konzola i time smo spojeni na Debian server kroz SSH konzolu.

Prijavite se korisničkim podacima koje ste definirali prilikom instalacije (ne root korisnik, već običan non-administrator korisnik).

Kako bi mogli nastaviti dalje s konfiguracijom Linux web servera, još moramo svom običnom korisniku omogućiti da može izvršavati admin naredbe.
Ovo je odlična praksa, jer nikako ne želimo sve raditi preko root korisnika – root ima sve moguće dozvole na stroju i ako se netko dočepa tog pristupa, može napraviti veliku štetu.

Zato našeg non-administrator korisnika treba ubaciti na SUDO listu:

1. U konzoli upisati: su
Pod lozinku unijeti lozinku od root korisnika (ona koju ste definirali prilikom Debian instalacije)

2. Sad smo prijavljeni kao root korisnik.
Naredba za dodavanje običnog korisnika u SUDO listu:

sudo adduser korisnicko_ime sudo

Da bi obični korisnik imao SUDO prava, treba se odjaviti iz konzole i ponovo prijaviti.

To se može napraviti naredbom: exit
Potrebno je dva puta to učiniti; jednom da se izađe iz root, drugi put da se izađe skroz iz konzole.

Nakon toga ponovo pokrenuti Putty i prijaviti se svojim korisničkim podacima.

Sada običan korisnik može izvršavati SUDO naredbe i time možemo krenuti dalje.

Instalacija Apache web servera

Naredba za instalaciju:

sudo apt install apache2

Odabrati Y za potvrdu instalacije.

Instalacija brzo prolazi, svega par sekundi je potrebno.

Korisne Apache naredbe
U radu s web serverom dobro će doći navedene naredbe

Stop, start, restart Apache servisa
sudo systemctl stop apache2
sudo systemctl start apache2
sudo systemctl restart apache2

Provjera instalirane Apache verzije
sudo apachectl -V

Provjera rada Apache servera
sudo systemctl status apache2

Instalacija PHP

PHP nije dio službenog Debian repozitorija odakle se može preuzeti, stoga je kao pred korak potrebno dodati repozitorij s kojeg se može preuzeti PHP.

Potrebno je unijeti tri naredbe:

sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Nakon ovog možemo instalirati PHP preko naredbe:

sudo apt install php8.2

U trenutku pisanja ovog članka aktualna je PHP verzija 8.2.
U gore navedenoj naredbi zamijenite „php8.2“ s verzijom koju želite.

Za provjeru koje sve php verzije postoje u repozitoriju, naredba je:

sudo apt list | grep php

Instalirali smo PHP, ali još trebamo i instalirati PHP ekstenzije koje se često koriste i koje su potrebne za ispravan rad Linux web servisa koji će biti na serveru.

Također pripaziti za koju verziju PHP-a se radi instalacija ekstenzija.


Za PHP 8.2 su slijedeće naredbe:

Instalacija gd ekstenzije (image handling)sudo apt-get install php8.2-gd
Instalacija MySQLi ekstenzijesudo apt-get install php8.2-mysqli
Instalacija intl ekstenzijesudo apt-get install php8.2-intl
Instalacija curl ekstenzijesudo apt-get install php8.2-curl
Instalacija zip ekstenzijesudo apt-get install php8.2-zip
Instalacija bz2 ekstenzijesudo apt-get install php8.2-bz2
Instalacija mbstring ekstenzijesudo apt-get install php8.2-mbstring

Nakon završetka instalacije ekstenzija, obavezno napraviti restart Apache servisa, da se promjene primjene (naredbu za to vidi gore u članku).

Korisne PHP naredbe

Provjera koja verzija PHP-a je instalirana na serveru
php –version

Prikaz instaliranih PHP ekstenzija
php -m
dpkg –get-selections | grep -i php        

Instalacija baze podataka

Instalirat ću MariaDB bazu za potrebe ovog članka.

Naredba za instalaciju:

sudo apt install mariadb-server

Napomena: Ova naredba će raditi na Debian 12. Ako radite instalaciju na Debian 10 ili Debian 11, prije naredbe za instalaciju MariaDB servera, potrebno je dodati repozitorij s kojeg će se preuzeti MariaDB za Debian 10 ili Debian 11:

Naredba:

curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash

Ako u ovom koraku dobijete grešku poput bash: curl: command not found, to znači da curl nije instaliran na Debianu.
To se riješi vrlo lako naredbom:

sudo apt install curl

Nakon dodavanja repozitorija može slobodno ići naredba za instalaciju MariaDB gore navedena.

Za dodatno povećanje sigurnosti baze podataka, možete pokrenuti naredbu:

sudo mysql_secure_installation

Ovo će vas pitati nekoliko pitanja da li želite nešto dopustiti ili ne.
Radite ovo samo ako znate što radite, jer ovo spada u kategoriju naprednijih korisnika!

Baza podataka je ovime instalirana.

Slijedeći korak je napraviti bazu koja će se koristiti za neki web projekt (npr. za instalaciju WordPress).

Kreiranje nove baze

Napomena: sve mysql naredbe moraju završiti sa znakom ; jer inače naredba neće raditi.

  1. Prvo treba ući u mysql command prompt da bi se mogle koristiti mysql naredbe:
    sudo mysql -u root -p
  2. Kreiranje nove baze
    CREATE DATABASE ime_baze;
  3. Kreiranje novog korisnika za bazu
    CREATE USER ‘user’ IDENTIFIED BY ‘password’;

    U mom primjeru će to izgledati ovako:
    create user ‘hrvoje’ IDENTIFIED BY ‘lozinka’;

    Riječ „lozinka“ zamijenite naravno sa svojom nekom lozinkom koja će biti za tog korisnika.
  4. Dodjela prava korisnika za potrebnu bazu
    GRANT ALL PRIVILEGES ON database_name.* TO ‘user’;

    U mom primjeru će to izgledati ovako:
    grant all privileges on db1.* to ‘hrvoje’;
  5. Za kraj treba ova naredba da se ovlasti primjene
    flush privileges;

Ovime smo napravili novu bazu, novog korisnika s lozinkom i dodijelili mu prava za rad s kreiranom bazom.

Korisne SQL naredbe unutar baze:

Prikaz svih trenutnih baza na serveru
show databases;

Prikaz svih mysql korisnika
SELECT user,host FROM mysql.user;

Provjera ovlasti korisnika nad bazama
SHOW GRANTS FOR ‘korisničko_ime’;

Promjena prava web mape

Sadržaj weba koji će biti na serveru se fizički nalazi na putanji /var/www/html.

Toj mapi treba promijeniti dozvole, da nije korisnik root vlasnik svega, nego račun www-data. To je servisni račun kojeg Apache koristi za normalno upravljanje Linux web serverom.

  1. Treba se smjestiti u www folder: cd var/www/
  2. Nakon toga naredba:
sudo chown -R www-data:www-data html

Da li je sve dobro napravljeno, može se provjeriti naredbom: ls -la

Naredba će pokazati tko je vlasnik foldera html.

Bonus naredba

Ako vam je lakše raditi kroz neko grafičko sučelje, može se kroz SSH konzolu instalirati Midnight Commander. To je file manager.

Naredba za instalaciju:

sudo apt install mc

Kad se instalira, pokrenete ga naredbom: mc

Dobit ćete ovako:

Završna riječ

Kroz ovaj članak smo vidjeli kako instalirati svoj web server na Debian Linux distribuciji, kako instalirati sve potrebne dodatke i ekstenzije da web server radi normalno.

Da li sve zaista radi normalno može se provjeriti tako da otvorite svoj Internet pretraživač i odete na adresu od svog Debian web servera.

U mom primjeru je to adresa: http://192.168.10.105/ gdje dobijem ovo:

Imajte na umu da koraci opisani ovdje su za osnovno dizanje web servera na Linuxu. Kad svladate ovo, slijedeće je da se gleda kako da se pojačati sigurnost tog web servera (hint: mod_security za Apache).

Što dalje?
U ovom trenutku imate konfiguriran Debian web server na koji sad možete instalirati bilo koju web aplikaciju poput WordPress ili Joomla. Prilikom instalacije web aplikacije, za podatke za spajanje na bazu podataka koristiti ćete ime baze koju ste sami kreirali, kao i korisničko ime i lozinku za tu bazu.

Ovime ste svladali konfiguraciju svog Linux web servera!

AUTOR
Picture of Hrvoje Matešić

Hrvoje Matešić

KAVA

Sviđa ti se pročitano?

Revolut QR

MOGLO BI TE ZANIMATI
PODIJELI ČLANAK
PRETPLATI SE
Saznaj kad napišem novi članak
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments