Rezumat
În cadrul acestui proiect sunt descrise etapele necesare pentru a configura un server WWW și altor servicii bazate pe acesta. Înițial se vor face setările necesare ale interfeței de rețea pentru a realiza conexiunea la Internet. Apoi se va studia și verifica existenta pachetelor, ce sunt nevoie de instalat, pe mediul de dezvoltare folosit (în cazul dat sistemul de operare Centos 5.4 ). După primii pași se va purcede la instalarea și configurarea serverului LAMP, care este compus din apache, mysql și php . Se vor descrie etapele necesare pentru a seta funcționarea corectă a serverului. Mai apoi se va trece la configurarea serviciilor adiționale cum ar fi ftp, https. De menționat faptul că toate aceste etape nu reprezintă toate etapele posibile în ridicarea unui server WWW, ci etapele necesare pentru funcționarea normală și necesară a serverului pentru a presta serviciile predestinate lui.
Aspecte generele
În figura ce urmează este reprezentată schema configurației rețelei în care se află serverul.
-
Server
-
Calculatorul depe care s-au făcut toate setările serverului prinintermediul conexiunii realizate prin ssh
-
Swicth-ul #1
-
Switch-ul #2
-
Modem DSL configurat ca router
OS: Centos 5.4 (numai kernel, fără desktop)
CPU: 300Mhz Intel Pentium
RAM: 192MB SDRAM
HDD: 80GB IDE ATA
LAN: 100Mbit
IP: 192.168.1.100
OS: Ubuntu 9.10
CPU: 2.4Ghz Intel Core2Duo
RAM: 4GB DDR2
HDD: 500GB SATA
LAN: 100Mbit
IP: 192.168.1.20
Model: TP-link
Model: ASUS
Model: Zyxel 600
Mod DSL: ADSL2+
Viteză conexiune: 20mbps/1024kbps
IP: 192.168.1.1
Configurarea serverului
Setarea interfeței de rețea
Pentru a realiza conexiunea calculatorului la internet este necesară următoare configurare a interfeței de rețea:
- IP: 192.168.1.100
- Gateway: 192.168.1.1
- DNS1: 172.27.137.10
- DNS2: 172.27.137.20
Mai întîi de toate ne logăm cu drepturi de root:
# sudo su
Pentru a seta IP-ul este necesară editarea fișierului /etc/sysconfig/network-scripts/ifcfg-eth0 :
# nano /etc/sysconfig/network-scripts/ifcfg-eth0
Se va deschide utilitarul pentru editat texte în care trebuie făcute următoarele modificări:
Am setat mai poi gateway-ul prin editarea fișierului /etc/sysconfig/network prin următorea comandă:
# nano /etc/sysconfig/network
În utilitarul de editat texte facem următoarele modificări:
Iar prin editarea fișierului nano /etc/resolv.conf setăm serverele DNS de care avem nevoie:
# nano /etc/resolv.conf
Modificăm următoarele:
Configurare firewall
Pentru a permite conexiunile către server este nevoie de setat firewall-ul preinstalat (cu ajutorul utilitarului iptables) prin deschiderea port-urilor de care avem nevoie: 80 pentru conexiuni HTTP, 443 pentru HTTPS și 21 pentru conexiuni FTP. Pentru aceasta executăm următoarele comenzi în terminal:
# iptables -I INPUT -p tcp –dport 80 -j ACCEPT
# iptables -I INPUT -p tcp –dport 443 -j ACCEPT
# iptables -I INPUT -p tcp –dport 21 -j ACCEPT
# /etc/init.d/iptables save
Notă: De menționat faptul că la acest capitol se încadrează și configurarea router-ului pentru a permite conexinule către server din afara rețeli locale. Pentru aceasta s-a făcut port forwarding către server (IP: 192.168.1.100) la porturile 80,21,443. În afară de aceasta a fost setat Firefall-ul routerului pentru a permite conexiunile prin porturile menționate mai sus.
Instalare pachete necesare
Verificări inițiale
Mai întîi de toate se verifică dacă pachetele ce dorim să le instalăm (apache,httpd,mysql,vsftpd,php) sunt deja instalate prin executarea comenzilor:
# rpm -qa | grep -i apache
# rpm -qa | grep -i httpd
# rpm -qa | grep -i php
# rpm -qa | grep -i mysql
în caz că sunt instalate unul din aceste pachete este necesară eliminarea lui prim executarea comenzii:
# rpm -e numepachet
Instalare și configurare Apache
Se va instala webserverul apache2 prin comanda ce urmează:
# yum install httpd
Pentru configurări se editează fișierul /etc/httpd/conf/httpd.conf și anume:
-
se setează directorul implicit pentru stocarea fișierelor .php, .html, etc :
în cazul nostru el este /var/www/html
DocumentRoot “/var/www/html”
<Directory “/var/www/html”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
-
se configurează serverul astfel încât fișierele php, html să nu fie percepute ca text dar să fie procesate de server în mod normal:
-
adaugăm index.php pentru a putea fi și ea ca pagină de start:
<IfModule mod_dir.c>
DirectoryIndex index.php index.htm intex.html
</IfModule>
După toate aceste setări pornim Apache (httpd) prin rulearea comenzii:
# service httpd start
Dacă serverul s-a pornit cu succes vom avea următorul mesaj:
Apoi verificăm dacă se oprește corect serverul:
# service httpd stop
În caz de succes se afișează următoarele:
Instalare și configurare MySQL
Se instalează baza de date MySQL și pachetele necesare pentru a face legătura dintre mysql și php:
# yum install mysql mysql-server mysql-php
Pornim serverul mysql:
# service mysqld start
Dacă s-a pornit cu succes avem mesajul:
Rulăm careva comenzi pentru a testa funcționalitatea mysql-ului. Ne logăm în consola mysql:
# mysql
Apoi executăm:
> CREATE DATABASE db1;
> CREATE USER ‘test’@'localhost’ IDENTIFIED BY ‘moldova’;
> GRANT ALL PRIVILEGES ON *.* to ‘test’@'localhost’ WITH GRANT OPTION;
La executarea cu succes avem aceste mesaje:
Pentru a ieși din mysql promt:
> \q
Oprim serverul mysql:
# service mysqld stop
Dacă s-a oprit cu succes avem mesajul:
Pentru a putea rula fișiere PHP pe serverul Apache și pentru a face conexiune din PHP către MySQL este nevoie de instalat pachetele php și php-mysql:
# yum install php php-mysql
Instalare și configurare FTP
Pentru a realiza conexiuni FTP către server se va instala utilitarul vsftpd:
# yum install vsftpd
Pornim serviciul pentru a testa dacă merge corect:
# service vsftpd start
Dacă se pornește corect avem următorul mesaj:
Apoi, adăugăm un user pentru a ne conecta prin ftp:
# useradd Neo
# passwd Neo
Setăm folderul (/var/www/html) implicit al utilizatorului Neo prin editarea fișierului /etc/passwd:
# nano /etc/passwd
Aici edităm următoarea linie după cum urmează:
Neo:x:500:500::/var/www/html:/bin/bash
Mai apoi trebuie creeate anumite privilegii asupra folderului acestui utilizator :
# chown Neo /var/www/html
# chmod 777 /var/www/html
Chiar și după aceasta utilizatorul Neo nu va avea acces la fișierele și folderele apartenente sistemului, de aceea deschidem permisiunea utilizatorilor ce se conectează prin ftp de a accesa foldere din sistem:
# /usr/sbin/setsebool -P ftp_home_dir=1
Oprim serviciul FTP:
# service vsftpd stop
Dacă s-a oprit cu succes avem mesajul:
Instalare și configurare server securizat SSL
Instalăm pachetele SSL necesare securizării:
# yum install mod_ssl openssl
Creeăm propriul certificat după cum urmează:
-
generăm key-a privată
# openssl genrsa -out ca.key 1024
-
generăm CSR-ul
# openssl req -new -key ca.key -out ca.csr
S-au introdus următoarele date în certificat:
-
generăm key-a propriu-zisă
# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Dacă execuția a avut loc cu succes avem următorul mesaj:
-
mutăm fișierele în locația necesră
# mv ca.crt /etc/pki/tls/certs
# mv ca.key /etc/pki/tls/private/ca.key
# mv ca.csr /etc/pki/tls/private/ca.csr
Apoi, edităm fișierul de configurație a securizării SSL la Apache:
# nano +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf
Facem următoarele modificări:
Mai este nevoie de editat fișierul httpd.conf :
# nano /etc/hhtpd/conf/httpd.conf
Aici adăugăm următoarele:
# service httpd restart
Aplicații practice
HTTP, MySQL, PHP
Accesăm adresa serverului din browser pentru a verifica funcționalitatea corectă a LAMP-ului:
Notă: Pe server au fost încărcate fișierele .php ale unui site care necesită și o bază de date MySQL
FTP
Conectarea la server :
Conectarea la pagina web prin protocolul https securizat SSL:
Pagina web accesată prin intermediul protocolului HTTPS:
Bibliografie
- http://www.lamphowto.com/
- http://www.phpvs.net/articles/blakes-centos-lamp-server-guide-single-page/
- http://wiki.centos.org/HowTos/Https
- http://wiki.centos.org/HowTos/Network/IPTables
- http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users
- http://www.cyberciti.biz/tips/rhel-fedora-centos-vsftpd-installation.html
Documentarea în pdf o puteți solicita la pagina de Contact.
Tweet
9 Comentarii la “Configurare server LAMP (Linux, Apache, MySQL, PHP)”
Trackbacks/Pingbacks
- Tweets that mention Gânduri numerice » Configurare server LAMP -- Topsy.com - [...] This post was mentioned on Twitter by Nicolae Vartolomei and Iurcu Mircea, Grigoriev Sergiu. Grigoriev Sergiu said: New Blog ...
Bravo!
Bun articol.
Sper că l-ai înscris în concurs
eu nu am atita rabdare si pasiune sa studiez aceste sisteme, cred ca a fost vreo lucrare semestriala
@neagaoleg: păi, în vreo 5-7 zile l-am realizat. a fost proiect de vacanță
@Nicolae Vartolomei: mulțumesc
@mircea iurcu: nu corespunde termenilor
pentru mine a fost nou crearea SSL, în rest m-am jucat şi eu destul în anii de studenţie cu goange de astea.
bv, îmi plac oamenii pasionaţi de ceva
@ryunoske: mulțumesc
Ma bucur ca in moldova mai sunt baietz care se ocupa cu ceva serios. Imi amintesc de un proiect asemanator numai ca pe freebsd http://blog.arvat.org/archives/392
Foarte bun articol… trebuie de incercat