lamp (linux, apache, mysql, php, perl, python)

Linux, poslužitelj, mreže i sigurnost

Moderator/ica: Moderatori/ce

Odgovori
Avatar
hightech
Postovi: 119
Pridružen/a: 21 vel 2013, 01:00
Spol: M
OS: wheezy, slekver ;)
Lokacija: /dev/hda2, etc
Kontakt:

lamp (linux, apache, mysql, php, perl, python)

Post Postao/la hightech »

Prvo, par neophodnih paketa, kao root: <lozinka>

Kod: Označi sve

aptitude install apache2 mysql-server php5 php-pear php5-gd php5-mysql php5-imagick php5-curl curl phpmyadmin rsync cronolog libapache2-mod-php5 libapache2-mod-python
Prilikom instalacije ovih paketa osigurajte mysql server root lozinkom, podesite phpmyadmin - apache2 [x].
Zatim pri sledećoj opciji: configure database for phpmyadmin with dbconfig-common? <Yes> <No>, izaberite <No> i to je to.
Podrazumevani web folder je /var/www, za sada ćemo ga i ostaviti tako da ne dodje do zabune na startu.
Napraviti fajl phpinfo.php

Kod: Označi sve

nano /var/www/phpinfo.php
Ubaciti sledeći sadržaj:

Kod: Označi sve

<?php
echo phpinfo();
?>
Zatim promeniti dozvole i vlašnistvo (ownership) nad folderima i datotekama (rekruzivno)

Kod: Označi sve

chown -R www-data:www-data /var/www
chmod -R 755 /var/www
Restartujte server za svaki slučaj, jer nekada se ne razreše procesi dok se ne uradi restart:

Kod: Označi sve

/etc/init.d/apache2 restart
Sadržaj funkcije phpinfo() - phpinfo.php se nalazi na lokaciji u browseru, sa "document root" /var/www/

Kod: Označi sve

http://localhost/phpinfo.php
Sada trenutno ostavite folder /var/www i kreirajte folder /home/korisnik/htdocs ukoliko ne postoji kao podrazumevani (na Crunchbang-u postoji) i linkovati ga simboličkim linkom iz /var/www

Kod: Označi sve

mkdir /home/korisnik/htdocs
cd /var/www
ln -s /home/korisnik/htdocs korisnik
Trenutno se nalazite u folderu /var/www , tu postoji index.htlm po defaultu i phpinfo.php koj smo napravili, a sada postoji i "folder" linkovan ka /home/korisnik/htdocs. Tu se za sada priča sa /var/www završava i nas sada zanima samo /home/korisnik/htdocs
Napravite fajl index.php koj se treba naći u /home/korisnik/htdocs

Kod: Označi sve

nano /home/korisnik/htdocs/index.php
Sadržaj:

Kod: Označi sve

<?php
echo 'Ovo je naš lični korisnički direktorijum na apache web serveru';
?>
Izmneite dozvole i vlašnistvo (ownership) nad folderom /home/korisnik/htdocs (rekruzivno):

Kod: Označi sve

chown -R www-data:www-data /home/korisnik/htdocs
chmod -R 755 /home/korisnik/htdocs
I sada se nas "korisnički" web direktorijum /home/korisnik/htdocs nalazi na lokaciji:

Kod: Označi sve

http://localhost/korisnik/
Sada konfigurišite phpmyadmin-a, jer ste prilikom instalacije paketa i nega uključili...
Odraditi samo par linija u terminalu:

Kod: Označi sve

cp /etc/phpmyadmin/apache.conf /etc/apache2/sites-available/phpmyadmin
ln -s /etc/apache2/sites-available/phpmyadmin /etc/apache2/sites-enabled/phpmyadmin
Pa restartovati apache:

Kod: Označi sve

/etc/init.d/apache2 restart
Vaš phpmyadmin se nalazi na adresi:

Kod: Označi sve

http://localhost/phpmyadmin
Sledeći korak je mysql sigurna instalacija:

Kod: Označi sve

mysql_secure_installation
Ukucati root lozinku za mysql koju ste definisali malopre prilikom instalacije svih paketa, pa:

Kod: Označi sve

remove anonymous users? [Y/n] y
 ... success!
disallow root login remotely? [Y/n] y
 ... success!
remove test database and access to it? [Y/n] y
 - dropping test database...
reload privilege tables now? [Y/n] y
 ... success!
Samo još jedna stvar pre nego se ulogujemo u phpmyadmin okruženje - kreirati korisnika i dati mu dozvole samo nad njegovom bazom:
Prvo se ulogovati kroz terminal u root-mysql shell:

Kod: Označi sve

mysql -u root -p
Ukucati root lozinku i ispisaće se ovakav odzivnik:

Kod: Označi sve

mysql>
Napraviti bazu, korisnika te baze (kucati samo posle odzivnika "mysql>" i odrediti mu privilegije nad tom bazom:

Kod: Označi sve

mysql> CREATE DATABASE korisnikova_baza;
mysql> CREATE USER 'korisnik_baze' IDENTIFIED BY 'lozinka_korisnika_baze';
mysql> GRANT ALL PRIVILEGES ON korisnikova_baza.* TO 'korisnik_baze';
mysql> exit;
DONE!
sada se na adresi: http://localhost/phpmyadmin ulogujte sa -
user: korisnik_baze
pass: lozinka_korisnika_baze
Možete koristiti vašu mysql bazu podataka!!!

Zatim uraditi još jednu stvar koja će vam olakšati razumevanje web foldera:

Kod: Označi sve

cd /var/www
rm -f index.html
mkdir phpmyadmin
chown -R www-data:www-data /var/www
chown -R www-data:www-data /home/korisnik/htdocs
chmod -R 755 /var/www
chmod -R 755 /home/korisnik/htdocs
Otvoriti u browseru adresu:

Kod: Označi sve

http://localhost
Ne zaboravite da /home/korisnik/htdocs zamenite sa /home/ime_vašeg_korisnika/htdocs
Custom apache konfiguracija
Sada malo zaviriti u apache-ovu konfiguracionu datoteku i dodati podršku za python, perl, cgi, bash kroz CGI (common gateway interface), ali pre toga napravite još cgi-bin direktorijum:

Kod: Označi sve

mkdir /var/www/cgi-bin

Primetili ste da se izmeđustalog izmeštate iz direktorijuma /var/www koj će i dalje ostati kao koreni direktorijum (doc root), a trenutno se fokusirati na folder /var/www/cgi-bin/... kasnije i objašnjenje..
Apache konfiguraciona datoteka za vhost /etc/apache2/sites-available/default izgleda ovako:

Kod: Označi sve

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>
        ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 
	<Directory /var/www/cgi-bin/>
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                AddHandler cgi-script .cgi .pl .py .sh
		Order allow,deny
		Allow from all
	</Directory>
	ErrorLog ${APACHE_LOG_DIR}/apache2.error.log
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
	CustomLog ${APACHE_LOG_DIR}/apache2.access.log combined
</VirtualHost>
Sada ući u dir /var/www/cgi-bin i napraviti 3 fajla (.pl .py .sh)

Kod: Označi sve

cd /var/www/cgi-bin
nano test.pl
test.pl izgleda ovako

Kod: Označi sve

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "perl kroz CGI!"; 
Zatim test.py

Kod: Označi sve

nano test.py
test.py izgleda ovako:

Kod: Označi sve

#!/usr/bin/env python
print "Content-Type: text/html"
print
print """\
<html>
<head><title>py-cgi</title></head>
<body>
<h2>python kroz CGI!</h2>
</body>
</html>
"""
Zatim test.sh

Kod: Označi sve

nano test.sh
test.sh izgleda ovako:

Kod: Označi sve

#!/bin/bash
echo "Content-Type: text/plain"
echo
echo "Datum i vreme:"
date
Pre pokretanja uradićemo sledeće procedure:

Kod: Označi sve

chmod -R 755 /var/www/
chown -R www-data:www-data /var/www/
/etc/init.d/apache2 restart
Skripte u /var/www/cgi-bin se nalaze na adresama:

Kod: Označi sve

http://localhost/cgi-bin/test.pl
http://localhost/cgi-bin/test.py
http://localhost/cgi-bin/test.sh
... šta god da učiniš ... NISI DOBRO IZRAČUNAO ...
... for good fun and advanced thinking join WS1 ...
... do Boga je put dosta kratak, ne moras dalje od svog srca ...
Avatar
iweb
Site Admin
Postovi: 4641
Pridružen/a: 07 ožu 2009, 17:00
Spol: M
OS: fedora 34

Re: lamp (linux, apache, mysql, php, perl, python)

Post Postao/la iweb »

Bi li mogao ovo prebaciti na naš wiki? http://wiki.open.hr/wiki/Naslovnica :)
Avatar
hightech
Postovi: 119
Pridružen/a: 21 vel 2013, 01:00
Spol: M
OS: wheezy, slekver ;)
Lokacija: /dev/hda2, etc
Kontakt:

Re: lamp (linux, apache, mysql, php, perl, python)

Post Postao/la hightech »

Naravno :)
A gde je lemp??? i njega sam postovao????

Molio bih da ne brisete temu, nije lamp nego lemp, nisu isti, jedan je nginx, drugi apache :)
... šta god da učiniš ... NISI DOBRO IZRAČUNAO ...
... for good fun and advanced thinking join WS1 ...
... do Boga je put dosta kratak, ne moras dalje od svog srca ...
Avatar
tomog999
Postovi: 125
Pridružen/a: 03 ožu 2011, 18:18
Spol: M
OS: mint14Cina/Centos6
Lokacija: Zagreb

Re: lamp (linux, apache, mysql, php, perl, python)

Post Postao/la tomog999 »

Zatim promeniti dozvole i vlašnistvo (ownership) nad folderima i datotekama (rekruzivno)

Kod: Označi sve
chown -R www-data:www-data /var/www
chmod -R 755 /var/www
Chmod rekurzivni 755 je učinio da su sve datoteke u /var/www, postale "executable",
čak i za "others", zar to nisu pre extenzivna prava na tim datotekama, zar nisu dovoljne samo "read" ovlasti za "others".
To all you "rvacki pravopis" haters, we're gona blow your planet up
we got death star(death star)
and you know that we got it(death star)

Darth Spellingius :D
Avatar
hightech
Postovi: 119
Pridružen/a: 21 vel 2013, 01:00
Spol: M
OS: wheezy, slekver ;)
Lokacija: /dev/hda2, etc
Kontakt:

Re: lamp (linux, apache, mysql, php, perl, python)

Post Postao/la hightech »

Vidi, 755 ne mora, dovoljno je samo ownership promeniti :)
Ali tu su samo i ti fajlovi koji bi se trebalo izvrsiti i iz tog razloga to stoji :)
... šta god da učiniš ... NISI DOBRO IZRAČUNAO ...
... for good fun and advanced thinking join WS1 ...
... do Boga je put dosta kratak, ne moras dalje od svog srca ...
Odgovori