[2] Moderne aplikacije :: Internet serveri

[2] Moderne aplikacije :: Internet serveri

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Školski dani
MySQL server



Hvala za pomoć:
WAMP: NIx Car



Potrebno znanje za praćenje teksta:
Korišćenje sistemskih alata
Instalacija programa


Sadržaj

[1] Uvod

[2] Internet serveri (ili Web serveri)
[2.1] Microsoft Internet Information Services

[2.2] Apache
[2.2.1] Windows
[2.2.2] Linux
[2.2.3] Mac OS X

[3] PHP
[3.1] Windows
[3.2] Linux
[3.3] Mac OS X

[4] Jednostavna PHP aplikacija




[1] Uvod


Jedna od odlika modernih aplikacija je odvajanje dela za čuvanje podataka od dela za prikaz i uređivanje. Taj način nam omogućava da napišemo kompletnu logiku za čuvanje podataka bez razmišljanja o tome kako će podaci biti prikazani. Taj deo aplikacije se zove serverski deo i uglavnom se izvršava na nekoj udaljenoj mašini. Drugi deo aplikacije se brine samo o prikazu, i zbog toga možemo prilično lako da napravimo aplikaciju koja će raditi na Windows-u, a kasnije još jednu koja će raditi na Android-u, bez potrebe da menjamo kod koji se brine o podacima. Taj drugi deo aplikacije se zove klijentski deo, i uglavnom sadrži kod za prikaz podataka i minimalnu kontrolu unosa (npr. ne dozvoljava unos slova u polja koja smeju da imaju samo brojeve).

U ovom delu ćemo se okrenuti razvoju serverskog dela aplikacije. Najpopularniji način komunikacije serverskog i klijentskog dela je preko HTTP protokola. Verovatno je većina vas već čula za taj protokol, ali za one koji nisu, to je protokol koji se koristi za prikaz internet stranica. Putem tog protokola možemo povezati serverski i klijentski deo preko lokalne mreže ili interneta.

Na kraju ćemo dobiti potpuno funkcionalan server, na kojem ćemo postaviti PHP aplikaciju za računanje jednostavnih matematičkih izraza.



[2] Internet serveri (ili Web serveri)


Da ne bismo morali da pišemo kompletnu logiku za slanje i primanje HTTP paketa, instaliraćemo program koji će služiti kao most između dva dela naše aplikacije. Taj program se zove Web, odnosno Internet server. Internet server sam po sebi ne zna da radi ništa osim da odgovara na par unapred definisanih HTTP komandi koje dobija od klijentskih aplikacija. Klijentska aplikacija je zadužena za uspostavljanje komunikacije i izdavanje komandi, dok Internet server samo šalje odgovore koje klijent obrađuje i na osnovu njih prikazuje određeni sadržaj korisniku.

Kao što je slučaj i sa svim drugim, postoji više aplikacija koje vrše ulogu Internet servera. Mi ćemo se fokusirati dve koje se nalaze među najpopularnijim: Microsoft Internet Information Services i Apache.
Informacija ::Idea Potrebno je instalirati samo jedan Internet server.


[2.1] Microsoft Internet Information Services


Microsoft Internet Information Services je aplikacija koja se distribuira zajedno s Windows operativnim sistemom. Instalacija je standardno laka, potrebno je samo uključiti taj deo sistema, i to je to. Da biste uključili potrebne Windows komponente, otvorite Control Panel, Programs ili Add/Remove Programs, i zatim izaberite Turn Windows features on or off. U prozoru koji se otvori, čekirajte Internet Information Services i pritisnite OK.

Instalacija IIS-a u Windows 8



To je sve što je potrebno za instalaciju IIS-a. Možete proveriti da li je sve prošlo kako treba tako što ćete otvoriti sledeću adresu: http://localhost/. Ovaj postupak će instalirati samo osnovnu funkcionalnost IIS-a, ali je za sad to sasvim dovoljno.
Upozorenje ::Exclamation Isključite Skype pre nego što instalirate IIS. Standardna podešavanja za Skype i IIS su da koriste port 80 za komunikaciju.



[2.2] Apache


U koliko ne želite da koristite Microsoft-ovo rešenje, ili ne koristite Windows operativni sistem, instalirajte Apache. Apache je jedan od najrasprostranjenijih servera, i podržava skoro sve uređaje i operativne sisteme. Instalacija se na svakom operativnom sistemu razlikuje, pa ćemo zato objasniti postupak za Mac OS X, Linux i Windows posebno.


[2.2.1] Windows

Ako ste korisnik Windows operativnog sistema, verovatno ste navikli da instalirate programe preko tzv. čarobnjaka (wizard-a). U nastavku teksta ćemo obraditi instalaciju uz pomoć čarobnjaka, a zatim i bez njega. Oba načina su jednako dobra, a razlika je u tome što instalacija uz pomoć čarobnjaka zahteva mnogo manje vremena i skoro je nemoguće napraviti grešku u celom procesu, dok bez njega morate odvojiti malo više vremena i biti pažljivi prilikom praćenja uputstva, što će vam pomoći da bolje shvatite kako je ceo sistem povezan.


Instalacija uz pomoć čarobnjaka (WAMP)

WAMP je skraćenica za Windows Apache MySql PHP. Instalacijom WAMP-a dobijate kompletan internet server koji je pripremljen za razvoj internet aplikacija.

Preuzmite čarobnjaka za instalaciju WAMP-a i instalirajte WAMP u direktorijum C:\wamp.

Levim klikom na WAMP ikonicu otvorite meni i izaberite Put Online.

Pokretanje WAMP servera



Kada ikonica pozeleni, proverite da li je sve prošlo bez greške otvaranjem adrese: http://localhost/.


Instalacija bez čarobnjaka

Za instalaciju na Windows-u je potrebno preuzeti binarnu verziju Apache servera. Arhivu je potrebno raspakovati direktno na C: disk. Kratko uputstvo ćete dobiti u datoteci ReadMe.txt, a program će biti raspakovan u direktorijumu C:\Apache24. Instalacija servera se vrši kucanjem sledeće komande u Command Prompt-u pokrenutim pod administratorskim nalogom:
C:\Apache24\bin\httpd –k install C:\Apache24\bin\httpd –k restart
Nakon toga, proverite da li je sve prošlo bez greške otvaranjem adrese: http://localhost/.
Upozorenje ::Exclamation U slučaju da se javi firewall, dozvolite rad Apache servera u mreži.


[2.2.2] Linux

Instalacija na Linux-ima se razlikuje od distribucije do distribucije. Mi ćemo se fokusirati na Debian i njegove derivate, Ubuntu i Linux Mint. Instalacija se svodi na pokretanje jedne komande:
sudo apt-get install apache2
Nakon toga, proverite da li je sve prošlo bez greške otvaranjem adrese: http://localhost/.


[2.2.3] Mac OS X

Mac OS X od verzije 10.5 dolazi sa već instaliranim Apache serverom. Potrebno ga je samo uključiti komandom:
sudo apachectl start
Nakon toga, proverite da li je sve prošlo bez greške otvaranjem adrese: http://localhost/.



[3] PHP


Ranije smo već rekli da su mogućnosti Internet servera prilično ograničene. Na našu sreću su napravljeni tako da možemo da im dodajemo funkcionalnost preko dodatnih biblioteka. Jedna od najpoznatijih biblioteka za dodatnu funkcionalnost Internet servera je PHP. To je serverski skript jezik koji omogućava slanje dinamičkih datoteka. Umesto standardnih statičkih HTML datoteka koje Internet server koristi, PHP koristi svoje skripte na osnovu kojih u letu generiše sadržaj koji će biti poslat klijentima. Uz njegovu pomoć možemo praviti sadržaj koji se menja u skladu sa podacima dobijenih od klijenta, pročitanih iz baze ili dobijenih na neki drugi način.


[3.1] Windows

Za instalaciju PHP-a na Windows operativnom sistemu je potrebno preuzeti binarnu verziju PHP-a. Sadržaj arhive raspakujete u C:\PHP5. Sledeći korak je pravljenje konfiguracije za PHP. Sve što treba da uradite je da kopirate datoteku C:\PHP5\php.ini-production u datoteku C:\PHP5\php.ini, i popravite jednu liniju. Pronađite red u kojem piše:
;cgi.force_redirect = 1
i popravite ga u:
cgi.force_redirect = 0

Microsoft Internet Information Services
Prilikom instaliranja IIS-a, izabrali smo samo najosnovnije komponente. Za pravilan rad PHP-a je potrebno instalirati još jednu dodatnu komponentu pod imenom CGI. Ta komponenta omogućava pokretanje eksternih aplikacija u cilju obrade ulaznih parametara i pripremanja odgovora koji će se poslati klijentu.

Instalacija CGI komponente u Windows 8



Zadnji korak je povezivanje PHP modula s *.php datotekama. Da bismo to uradili, potrebno je da otvorimo IIS Manager pritiskom na Win+R i pokretanjem programa inetmgr.

IIS Manager u Windows 8



Duplo kliknite na Handler Mappings, a zatim, u desnom gornjem uglu, kliknite na Add Script Map… i ispunite podatke kao na sledećoj slici:

Povezivanje PHP modula s *.php datotekama u Windows 8



Nakon klika na dugme OK, potvrdite da želite da dodate modul u listu dozvoljenih. Ovim ste završili podešavanje PHP-a.

Za testiranje napravite datoteku C:\inetpub\wwwroot\test.php i u nju upišite sledeći tekst:
<?php phpinfo(); ?>

Ako je sve prošlo kako treba, otvaranjem adrese http://localhost/test.php ćete dobiti sve podatke o instaliranoj PHP biblioteci.


WAMP
U slučaju da ste instalirali WAMP, PHP je već instaliran i podešen.

Za testiranje napravite datoteku C:\wamp\www\test.php i u nju upišite sledeći tekst:
<?php phpinfo(); ?>

Ako je sve prošlo kako treba, otvaranjem adrese http://localhost/test.php ćete dobiti sve podatke o instaliranoj PHP biblioteci.


Apache
PHP se pokreće kao dodatni modul u Apache serveru, i zato ćemo morati da sredimo par datoteka u njemu. Prvo moramo napraviti datoteku C:\Apache24\conf\extra\httpd-php.conf i u nju upisati:
LoadModule php5_module "C:/PHP5/php5apache2_4.dll" PHPIniDir "C:/PHP5" <IfModule>     AddType application/x-httpd-php .php </IfModule>

Ta datoteka sadrži sve potrebne podatke koji su potrebni da bi Apache znao da učita i koristi PHP. Sada tu datoteku moramo dodati u glavnu datoteku za konfiguraciju. Dodajte sledeći red na kraju datoteke C:\Apache24\conf\httpd.conf:
Include conf/extra/httpd-php.conf

Podešavanja su gotova, i možemo da resetujemo Apache:
C:\Apache24\bin\httpd –k restart

Za testiranje napravite datoteku C:\Apache24\htdocs\test.php i u nju upišite sledeći tekst:
<?php phpinfo(); ?>

Ako je sve prošlo kako treba, otvaranjem adrese http://localhost/test.php ćete dobiti sve podatke o instaliranoj PHP biblioteci.


[3.2] Linux

Instalacija PHP-a na Linux-u je prilično jednostavna. Potrebno je instalirati PHP5 paket i ponovo pokrenuti Apache:
sudo apt-get install php5 sudo /etc/init.d/apache2 restart

Osnovna podešavanja su takva da je sada PHP pokrenut. Ostaje nam još samo da testiramo da je sve prošlo bez greške. Napravite datoteku /var/www/test.php i u nju upišite sledeći tekst:
<?php phpinfo(); ?>

Ako je sve prošlo kako treba, otvaranjem adrese http://localhost/test.php ćete dobiti sve podatke o instaliranoj PHP biblioteci.


[3.3] Mac OS X

Apache server koji dolazi uz Mac OS X sadrži sve datoteke potrebne za korišćenje PHP-a. Kao i kod ostalih operativnih sistema, potrebno je uključiti učitavanje PHP modula datoteci za konfiguraciju. Otvorite je komandom:
sudo nano /etc/apache2/httpd.conf

Pronađite sledeći red i odkomentirajte ga (uklonite # sa početka linije):
#LoadModule php5_module libexec/apache2/libphp5.so

Pre nego što pokrenemo PHP biblioteku, moramo napraviti i njenu datoteku za konfiguraciju. Za početak, možemo iskoristiti standardnu konfiguraciju tako što ćemo ukucati sledeću komandu:
sudo cp /etc/php.ini.default /etc/php.ini

Sada je sve spremno za rad. Potrebno je samo ponovo pokrenuti Apache:
sudo apachectl restart

Vreme je da testiramo da li je sve prošlo kako treba. Napravite datoteku /Library/WebServer/Documents/test.php i u nju upišite sledeći tekst:
<?php phpinfo(); ?>

Ako je sve prošlo kako treba, otvaranjem adrese http://localhost/test.php ćete dobiti sve podatke o instaliranoj PHP biblioteci.



[4] Jednostavna PHP aplikacija


Pre nego što počnemo sa pisanjem PHP aplikacije, podsetimo se u kojim direktorijumima se čuvaju datoteke do kojih gore pomenuti Internet serveri imaju pristup:
IIS na Windows-u: C:\inetpub\wwwroot\
WAMP: C:\wamp\www\
Apache na Windows-u: C:\Apache24\htdocs\
Apache na Linux-u: /var/www/
Apache na Mac OS X-u: /Library/WebServer/Documents/


Aplikacija koju ćemo napraviti da bi se malo upoznali s PHP-om je jednostavan digitron. Prikazaćemo polja za unos dva broja i matematičke operacije, i klikom na dugme prikazati rezultat. Počnimo definisanjem statičkog sadržaja. Napravite datoteku calculator.php u jednom od gore definisanom direktorijumu, u zavisnosti od operativnog sistema i Internet servera, i u nju upišite:
<html>     <head>         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">         <title>Digitron</title>     </head>     <body>         <form method="POST" action="?calculate=1">             <input type="text" name="n1" size="10" />             <input type="text" name="op" size="2" />             <input type="text" name="n2" size="10" />             <input type="submit" name="submit" value="Izračunaj" />         </form>     </body> </html>

Upozorenje ::Exclamation Standardni alati u Linux-u i Mac OS X-u snimaju tekstualne datoteke u UTF-8 formatu. Ako koristite Notepad u Windows-u, morate eksplicitno naglasiti da želite UTF-8 format koristeći Save As… dijalog.

HTML stranicu počinjemo tako što klijentu kažemo da je tekst u UTF-8 formatu, što će nam omogućiti korišćenje naših slova. Posle toga definišemo naziv naše stranice. To je tekst koji će klijentska aplikacija, npr. program za pregled internet stranica, iskoristiti kao ime prozora ili jezička u kojem će prikazati sadržaj stranice.

U telu HTML dokumenta, definišemo formu koja sadrži tri polja za unos teksta, i jedno dugme koje će pokrenuti akciju definisanu na formi. Način na koji će se izvršiti akcija je definisan u polju method na formi. POST je jedna od načina koji Internet serveri razumeju, i njegova svrha je da se pošalju podaci koji mogu dovesti do promene stanja aplikacije. Zbog toga će vam većina programa za pregled internet stranica prikazati upozorenje ako pokušate da osvežite stranicu koju ste dobili kao odgovor na POST akciju. Parametar action definiše šta će se desiti nakon klika na dugme, i u većini slučajeva je to apsolutna ili relativna adresa do nove stranice koja treba da se otvori. U našem slučaju smo definisali da želimo da se otvori ista stranica koja je već bila otvorena, ali da joj se kao parametar prosledi calculate=1.

Informacija ::Idea Detaljnije objašnjenje HTML jezika možete naći ovde. Dodatna pitanja možete postaviti u Web dizajn / HTML forumu.

Otvorite aplikaciju koju smo upravo napravili preko adrese http://localhost/calculator.php. Videćete kontrole koje smo definisali, ali se za sada, osim ponovnog otvaranja stranice, ništa ne dešava kada pritisnemo dugme. Sada na scenu stupa PHP. Odmah ispod taga koji zatvara formu dodajte sledeće:
<?php     if (isset($_GET['calculate'])) {         $n1 = $_POST['n1'];         $op = $_POST['op'];         $n2 = $_POST['n2'];         if (!$n1 || !$op || !$n2 || !ctype_digit($n1) || !ctype_digit($n2))             echo 'Upišite izraz u obliku: broj operacija broj';         else {             if ($op == '+')                 $res = $n1 + $n2;             else if ($op == '-')                 $res = $n1 - $n2;             else if ($op == '*')                 $res = $n1 * $n2;             else if ($op == '/')                 $res = $n1 / $n2;             if ($res)                 echo "Rezultat izraza $n1 $op $n2 je $res";             else                 echo 'Nepoznata operacija!';         }     } ?>

Početak PHP koda se označava tekstom <?php, a kraj ?>. Sve što je između se tretira kao PHP kod. Na prvi pogled se PHP ne razlikuje mnogo od C jezika, i zbog toga će nam biti lakše da razumemo sintaksu. PHP kod se izvršava na serveru što mu daje šansu da promeni sadržaj koji će biti poslat klijentu. Prilikom čitanja datoteke, PHP redom izvršava sve naredbe na koje nailazi, pa treba paziti kad i gde se piše kod.

Krenimo od početka. Pošto imamo samo jednu stranicu i nju koristimo za unos podataka i prikaz rezultata, moramo nekako znati kad rezultat treba da bude prikazan, a kad skriven. Za to ćemo iskoristiti parametar calculate koji smo definisali u formi. Prilikom prvog pokretanja aplikacije, parametar neće biti postavljen, i tako ćemo znati da nemamo podatke na osnovu kojih treba da izračunamo rezultat, pa ga nećemo ni prikazati. Vrednost parametra dobijamo koristeći niz $_GET. U tom nizu su definisani svi parametri koji su prosleđeni trenutnoj stranici. Kod koji smo napisali, proverava da li je parametar calculate postavljen, i samo tada izvršava ostatak koda.

Vrednosti koje smo poslali preko POST metode, dobijamo na isti način kao parametre prosleđene stranici, samo što u ovom slučaju koristimo $_POST niz. Vrednosti u nizu imaju ista imena kao i kontrole koje smo definisali u formi. Možete primetiti da, za razliku od C jezika, ovde nema potrebe da na poseban način definišemo promenljive. Jedino što je bitno je da ime promenljive počinje znakom $. Tip promenljive se automatski menja u odnosu na vrednost koju joj dodelimo.

U sledećih par redova proveravamo da li su unete sve vrednosti, i da li su upisane pravilne vrednosti. U slučaju da neka vrednost nije ispisana, da je umesto broja upisano nešto drugo ili da je upisana nepoznata operacija, ispisujemo tekst koji opisuje način korišćenja aplikacije. Komanda echo ispisuje zadati tekst u HTML stranicu i time menja sadržaj koji će klijent dobiti.

U slučaju da su sve vrednosti pravilno upisane, vrednost izraza upisujemo u promenljivu $res i ispisujemo rezultat. Obratite pažnju da u redu za ispis rezultata koristimo navodnike, a ne apostrofe. PHP tekst napisan pod apostrofima koristi baš tako kako je zapisan, dok tekst napisan pod navodnicima proverava i ako nađe imena definisanih promenljivih, na njihovo mesto upisuje vrednosti tih promenljivih.

Naša mala aplikacijica je gotova, i možete je pokrenuti preko adrese http://localhost/calculator.php.

Digitron u Chrome-u



Informacija ::Idea Više informacija o PHP-u možete naći u PHP forumu.

[url=https://www.mycity.rs/must-login.png kod projekta[/url]



Hvala za pomoć:
WAMP: NIx Car



Školski dani
MySQL server



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4451

Napisano: 10 Apr 2013 12:31

Samo da napomenem da link ne radi Wink

Srki_82 ::Za instalaciju PHP-a na Windows operativnom sistemu je potrebno preuzeti binarnu verziju PHP-a.

Dopuna: 10 Apr 2013 12:33

Jeli ova verzija OK, tačnije, može li se koristiti? Vidim da je zadnja izdata tu.



offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Ta verzija neće raditi sa verzijom Apache-a koju sam dao. I Apache i PHP moraju biti iskompajlirani sa istom verzijom sistemskih datoteka.

Ko je trenutno na forumu
 

Ukupno su 643 korisnika na forumu :: 34 registrovanih, 4 sakrivenih i 605 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1567 - dana 15 Jul 2016 19:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 4channer, _Petar, aerofreak, ALBION101, AMCXXL, attila.jukicburai, baki60, boki99, DENIRO, dimitrovskid, Dusko Nikolin, frenki1986, havoc995, Hawx1990, ivance95, Kos93, Kristian_KG, Kubovac, Mahovljani, maiden6657, Markoni29, operniki, ozzyy, Pippi Langstrumpf, plavii, Recce, Sass Drake, Skopljanac, Srna, SsssssNOVI, trajkoni018, versus2, voja64, zola92