LAMP je skraćenica od Linux, Apache http server, MySQL i Php tako da ćemo kroz ovaj tekst instalirati i iskonfigurisati ove programe na CentOS 6.6 Minimal Linuksu o kome sam pisao ranije a koji je idealan za ovakva igranja i samoobuku. LAMP ćete koristiti ukoliko želite da razvijate neke svoje web aplikacije koje rade na gorepomenutim servisima, pravite websajtove, učiti se web programiranju i slično.

U ovom primeru LAMP ćemo instalirati na CentOS 6 minimal mašini koja ima internet pristup, IP adresa joj je 192.168.1.123, a uz LAMP ćemo instalirati i phpMyAdmin za lakšu administraciju baze i korisnika na bazi kao i WordPress na lokaciji http://192.168.1.123/vebsajt.

Server jeste nakačen na internet ali mu nije dodat nikakav domen već koristimo IP adresu (nemam VPS niti statičku javnu adresu pa vam ne mogu to pojasniti).

Sve radimo remotely putem ssh klijenta PuTTY i sa mašine na kojoj je instaliran Windows 8.1 (da ne ispadne da smo totalni gikovi digitronci).

UKRATKO:

Linux znate šta je (evo ovde tekst) koristi velika većina svih servera i 97% svih superkompjutera na planeti.

Apache je besplatni Web server otvorenog koda dostupan za većinu operativnih sistema od Linuksa do Windowsa i pokreće ogroman broj sajtova u svetu, čini mi se čak i većinu sajtova. Više o Apache-u pročitajte na njihovom zvaničnom sajtu (link ovde).

MySQL je višekorisnički SQL sistem za upravljenje bazama podataka a koja se većinski koristi za web aplikacije i sajtove, i kao i prethodne dve stavke je apsolutno besplatna za svaku upotrebu i slobodan je softver. Primer radi – Twitter, koji ima trilijarde milijardi transakcija dnevno – koristi MySQL.

PHP je programski jezik koji se koristi za izradu dinamičkih web stranica odnosno za dinamičko generisanje HTML koda koji definiše jednu jednu web stranicu.

phpMyAdmin koji ćemo instalirati, jeste grafički korisnički interfejs koji pozivate iz web browsera za upravljanje bazama podataka (tako da ne morate da se bakćete sa terminalom kad hoćete nešto da promenite u bazi, napravite novu bazu, koisnika i slično).

Instalacija potrebnih paketa

#Trebace nam zbog phpMyAdmin-a
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install httpd mod_ssl mysql mysql-server php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel phpmyadmin wget vim

Izmene konfiguracionih fajlova za phpMyAdmin

#Bekap fajla, za svaki slucaj
cp /etc/httpd/conf.d/phpMyAdmin.conf ~/BEKAP_phpMyAdmin_conf

#Izmena IP adrese u fajlu sa nasom IP adresom:
sed -i s/"127.0.0.1"/"192.168.1.123"/g /etc/httpd/conf.d/phpMyAdmin.conf

Obrisite ili zakomentarisite tarabama sledeće linije u tom fajlu, elem, izvršite ovo pa bacite pogled na screenshot: vim /etc/httpd/conf.d/phpMyAdmin.conf
phpMyAdmin conf

#Pravljenje inicijalnog conf fajla:
cp /usr/share/doc/phpMyAdmin-*/examples/config.sample.inc.php /usr/share/phpMyAdmin/config.inc.php

#Izmena nacina autentifikacije sa cookie na http u phpMyAdminu
sed -i s/"= 'cookie';"/"= 'http';"/g /usr/share/phpMyAdmin/config.inc.php

Izmena PHP postavki

Promenićemo maksimalnu veličinu posta kao i maksimalnu dozvoljenu veličinu fajla koji se sme uploadovati na sajt. Ovo u principu ne morate da radite mada ja ponekad radim upload većih fajlova pa mi je potrebno.

#Promena maksimalne velicine posta sa 8M na 100M
sed -i s/"post_max_size = 8M"/"post_max_size = 100M"/g /etc/php.ini

#Promena maksimalne velicine fajla koji se moze uploadovati
sed -i s/"upload_max_filesize = 2M"/"upload_max_filesize = 80M"/g /etc/php.ini

Izmena Apache konfiguracionih fajlova

…ćemo uraditi da bi dozvolili permalinkove (sajt.com/blabla umesto sajt.com/?p=123) ispod linije koja počinje sa „<Directory „/var/www/html“>“

#Izmena mail adrese (ne morate ovo da menjate ako vas mrzi)
sed -i s/"ServerAdmin root@localhost"/"ServerAdmin vasmail@kompjuteras.com"/g /etc/httpd/conf/httpd.conf

#Malo bezbednost ovo-ono
sed -i s/"ServerSignature On"/"ServerSignature Off"/g /etc/httpd/conf/httpd.conf

vim /etc/httpd/conf/httpd.conf

Apache permalink conf

Podešavanje iptables-a (firewalla)

Ako vam je podignut firewall (iptables) potrebno je pustiti default port da bude vidljiv ljudima van. To ćete uraditi sleećim komandama:

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/rc.d/init.d/iptables restart

Startovanje Apache-a i MySQL-a

#Startovanje potrebnih servisa
service httpd start
service mysqld start

#Nek se dizu prilikom startovanja sistema
chkconfig httpd on
chkconfig mysqld on

Podešavanje MySQL-a

Postavićete root lozinku koja mora biti ultra zajebana i odradićete neke bezbedonosne postavke.

#Pokrenite
/usr/bin/mysql_secure_installation

#Odradite kad vas pita
Enter current password for root (enter for none): (pritisnite enter)
Set root password? [Y/n] (pritisnite enter)
New password: (postavite neku zajebanu lozinku)
Re-enter new password: (ponovite lozinku od malopre)
Remove anonymous users? [Y/n] (pritisnite enter)
Disallow root login remotely? [Y/n] (pritisnite enter)
Remove test database and access to it? [Y/n] (pritisnite enter)
Reload privilege tables now? [Y/n] (pritisnite enter)

Početni test da li sve radi

#Testiranje radi li web na masini:
echo "Radi OK" > /var/www/html/index.html

Idite preko web browsera na adresu (u ovom slučaju): http://192.168.1.123 i ako vam se otvori stranica – sve je OK. Ako se ne otvori – najjače da neće da se otvori, šta ja pričam…

Instalacija WordPress-a

Ulogujte se u phpMyAdmin (root lozinku ste kreirali u delu sa MySQL-om) kreirajte bazu i korisnika. U ovom primeru napravićemo i korisnika na bazi i samu bazu
http://192.168.1.123/phpmyadmin

WP01

Klik na USERS pa na Add user

WP02

Popunite trazene podatke vezane za samu bazu, zacekirajte kao što je navedeno na ovom screenshotu pa kliknite na go

Kad ste kreirali bazu podataka krenite sa instalacijom WordPress-a. Ajmo opet u putty pa…

wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress /var/www/html/websajt
rm -f latest.tar.gz

cd /var/www/html/
chown -R apache:apache websajt/

SELinux (skraćenica od Security Enhanced Linux), kao što mu ime i kaže jeste dodatni bezbedonsni lejer na Linuksu koji kontroliše pristup aplikacijama. Svi predlažu da se on gasi u ovakvim situacijama ali to nije OK jer time – gubite na sigurnosti. Bolje je bunariti po Guglu kako iskonfigurisati SELinux da radi sa vašom aplikacijom kako treba.

restorecon -r /var/www/html

# Ako ste rešili da ipak ugasite SELinux ili vam je server u zatvorenoj mreži ili 
# nemate neke sigurnosne paranoje gašenje radite sledecom komandom, samo bez # na pocetku
sed -i s/"SELINUX=enforcing"/"SELINUX=disabled"/g /etc/selinux/config

Pokrenite instalaciju kroz web browser na adresi (u ovom slučaju) http://192.168.1.123/websajt pa krenite lagano. Taj deo neću opisivati jer je toliko intiutivan da mi je prosto neprijatno kako nam dobro ide – a i imate uputstva po netu i YouTube-u pa samo još fali i moje uputstvo.

ŠTA BI JOŠ TREBALO OVDE URADITI?
Ako vam je server javan i svako može da mu pristupi – onda sigurnosna podešavanja, počevši od iptables, fail2ban, postavljanje log monitoringa, zabrana logovanja na linux putem username/password autentifikacije, ažuriranje svega (radite jednostavnim: yum -y update), promena SSH porta, revizija servisa koji se startuju sa Linuksom (ftp, telnetm blablabla), gašenje nepotrebnih apache modula, malo pametnije iskonfigurisati Apache, skrivanje potpisa servera i svašta nešto, ali otom-potom.