Introducere
„LAMP” este un grup de software open source care de obicei sunt instalate împreună pe un server pentru a putea permite acestuia găzduirea de site-uri dinamice și aplicații web. Acesta este de fapt un acronim care reprezintă sistemul de operare Linux, cu serverul web Apache. Datele de pe site sunt stocate într-o bază de date MySQL, iar conținutul dinamic este procesat de PHP.
În acest ghid vom instala LAMP pe Ubuntu 16.04. Ubuntu va rezolva prima cerință: un sistem de operare Linux.
Condiție prealabilă
Înainte de a începe cu acest ghid, ar trebui să aveți setat pe server un cont de utilizator non-root cu drepturi sudo. Puteți învăța cum să faceți acest lucru parcurgând pașii 1-4 din ghidul setarea inițială a serverului pentru Ubuntu 16.04.
Pasul 1: Instalare Apache și Permisiune Acces în Firewall
Server-ul web Apache este printre cele mai populare servere web din lume. Este bine cunoscut și a fost utilizat la scară largă în istoria web, lucru care îl face cea mai bună alegere pentru găzduirea unui site web.
Putem instala ușor Apache folosind managerul de pachete Ubuntu, apt. Managerul de pachete ne permite să instalăm ușor software-ul dintr-o arhivă deținută de Ubuntu.
În acest scop, putem începe tastând aceste comenzi:
sudo apt-get update
sudo apt-get install apache2
Din moment ce folosim comanda sudo, aceste operații se vor executa cu drepturi root. Vi se va cere parola dumneavoastră de utilizator normal pentru a vă verifica intențiile.
Odată introdusă parola, apt vă va spune ce pachete va instala și de cât spațiu suplimentar aveți nevoie. Apăsați Y și Enter pentru a continua și instalarea va începe.
În continuare, presupunând că ați parcurs instrucțiunile inițiale de activare a firewall-ului UFW, asigurați-vă că firewall-ul permite trafic HTTP și HTTPS. Vă puteți asigura că UFW are un profil de aplicație pentru Apache ca acesta:
sudo ufw app list
Output:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Dacă vă uitați la profilul Apache Full, ar trebui să arate că permite trafic porturilor 80 și 443:
sudo ufw app info „Apache Full”
Output:
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Permiteți traficul de intrare pentru acest profil:
sudo ufw allow in „Apache Full”
Puteți face o verificare la fața locului pentru a vedea dacă totul a decurs conform planului, vizitând adresa IP publică a serverului dumneavoastră în browser-ul Web (a se vedea nota de la punctul următor pentru a afla care este adresa IP publică dacă nu aveți această informație deja):
http://your_server_IP_address
O să vedeți pagina web Apache Ubuntu 16.04, care este acolo doar pentru informare și testare. Ar trebui să arate cam așa:
Dacă vedeți această pagină înseamnă că server-ul dumneavoastră web este instalat corect și accesibil prin intermediul firewall-ului.
Cum să Găsiți Adresa IP Publică a Server-ului
Dacă nu vă cunoașteți adresa IP publică a server-ului, sunt o mulțime de modalități pentru a o afla. De obicei, aceasta este adresa pe care o utilizați pentru a vă conecta la serverul dumneavoastră prin SSH.
Din linia de comandă, o puteți afla în câteva moduri. Primul mod de a vă afla adresa este folosind metoda iproute2 tastând următoarele:
ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’
Această comandă afișează toate adresele IP de pe server. Toate sunt adrese corecte, dar computerul dumneavoastră va putea folosi doar una dintre ele, așa că le puteți încerca pe oricare.
O metodă alternativă este să folosiți utilitarul curl pentru a vă conecta din exterior și a vă spune cum vede serverul dumneavoastră. Puteți face aceasta întrebând serverul care este adresa IP:
sudo apt-get install curl
curl http://domeniu.tld
Indiferent de metoda pe care o folosiți să vă aflați adresa IP, îl puteți introduce în bara de adrese a browser-ului dumneavoastră pentru a ajunge la server.
Pasul 2: Instalarea MySQL
Acum că avem server-ul web funcțional, este timpul să instalăm MySQL. MySQL este un sistem de management al bazei de date. Practic, organizează și oferă acces la baza de date în care site-ul dumneavoastră poate stoca informații.
Din nou, putem folosi apt pentru a descărca și instala software-ul. De această dată, vom instala și alte pachete de „ajutor” care ne vor ajuta în obținerea componentelor și în comunicarea dintre ele:
sudo apt-get install mysql-server
Observație: În acest caz, nu mai este necesar să tastăm sudo apt-get update în fața comenzii. Aceasta pentru că recent am adăugat-o în comanda de mai sus când am instalat Apache. Indexul pachetului de pe computer ar trebui să fie deja actualizat.
Din nou, va fi afișată o listă cu pachetele ce vor fi instalate, împreună cu cantitatea de spațiu pe disc pe care o vor prelua. Introduceți Y pentru a continua.
În timpul instalării, server-ul dumneavoastră va vă cere să selectați și să confirmați o parolă pentru utilizatorul „root” MySQL. Acesta este un cont administrativ în MySQL și este similar cu contul root al server-ului în sine (cel pe care îl configurați acum este un cont specific MySQL).
Când instalarea este completă, o să rulăm un simplu script de securitate care va înlătura unele valori implicite periculoase și care va închide sistemul bazei de date pentru scurt timp. Porniți script-ul interactiv rulând:
sudo mysql_secure_installation
Vi se va cere să introduceți parola pe care ați setat-o pentru contul root MySQL. În continuare, veți fi întrebat dacă doriți să configurați VALIDATE PASSWORD PLUGIN.
Atenție: Activând această caracteristică este o decizie importantă. Dacă este activată, parolele care nu se potrivesc cu criteriile specificate vor fi respinse de către MySQL cu o eroare. Acest lucru va cauza probleme dacă utilizați o parolă slabă în combinație cu software-ul care configurează automat acreditările utilizatorului MySQL, cum ar fi pachetele de Ubuntu pentru phpMyAdmin. Este sigur să lăsați validarea dezactivată, dar ar trebui să folosiți întotdeauna parole puternice, unice pentru acreditările bazei de date.
Răspundeți y pentru yes, sau orice altceva pentru a continua fără activare.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
O să vi se ceară un nivel pentru validarea parolei. Rețineți, dacă introduceți 2, pentru cel mai puternic nivel, o să primiți erori când veți dori să setați orice parolă care nu conține numere, litere mari și litere mici, caractere speciale, care este bazată pe cuvinte comune din dicționar.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Dacă activați validarea parolei, vi se va arăta puterea parolei root existente și veți fi întrebați dacă doriți să schimbați acea parolă. Dacă sunteți mulțumit de actuala parolă, introduceți n pentru „no”:
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
Pentru restul întrebărilor, ar trebui să apăsați Y și să apăsați Enter la fiecare semn. Acesta va înlătura utilizatorii anonimi și bazele de date test, va dezactiva datele de conectare la distanță și va încărca aceste noi reguli pentru ca MySQL să respecte imediat modificările pe care le-am făcut.
În acest moment, sistemul dumneavoastră de baze de date este configurat și putem merge mai departe.
Pasul 3: Instalarea PHP
PHP este componenta noastră de instalare care va procesa codul pentru a afișa conținutul dinamic. Poate rula scripturi, se poate conecta la bazele noastre de date MySQL pentru a obține informații, și preda conținutul prelucrat server-ului web pentru a-l afișa.
Încă o dată, ne vom folosi de sistemul apt pentru a instala componentele noastre. De asemenea, vom include și pachetele ajutătoare, pentru ca PHP să ruleze sub server-ul Apache și să comunice cu baza de date MySQL:
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
Acesta poate instala PHP fără nici o problemă. Îl vom testa în câteva momente.
În majoritatea cazurilor, vom dori să modificăm calea fișierelor server-lor Apache când este cerut un director. În mod curent, dacă un utilizator cere un director de pe server, Apache se va uita după un fișier numit index.html. Vrem să îi spunem server-ului nostru web să prefere fișierele PHP, așa că vom face ca Apache să caute fișiere index.php mai întâi.
Pentru a face acest lucru, tastați comanda dir.conf pentru a deschide fișierul într-un editor text cu drepturi root:
sudo nano /etc/apache2/mods-enabled/dir.conf
Va arăta în felul următor:
/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Vrem să mutăm fișierul selectat index PHP în prima poziție după specificația DirectoryIndex, în felul următor:
/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Când ați terminat, salvați și închideți fișierul apăsând Ctrl-X. Va trebui să confirmați salvarea tastând Y după care să apăsați tasta Enter pentru a confirma locația salvării fișierului.
După aceasta, va trebui să restartăm server-ul web Apache pentru ca modificările noastre să fie recunoscute. Vom face aceasta tastând:
sudo systemctl restart apache2
De asemenea, putem verifica starea serviciului pe apache2 folosind systemctl:
sudo systemctl status apache2
Sample Output:
● apache2.service – LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
Docs: man:systemd-sysv-generator(8)
Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
Tasks: 6 (limit: 512)
CGroup: /system.slice/apache2.service
├─13623 /usr/sbin/apache2 -k start
├─13626 /usr/sbin/apache2 -k start
├─13627 /usr/sbin/apache2 -k start
├─13628 /usr/sbin/apache2 -k start
├─13629 /usr/sbin/apache2 -k start
└─13630 /usr/sbin/apache2 -k start
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server…
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.
Instalarea Modulelor PHP
Pentru a spori funcționalitatea PHP, putem instala unele module suplimentare.
Pentru a vedea opțiunile disponibile pentru modulele și bibliotecile PHP, aveți posibilitatea să filtrați rezultatele apt-cache search folosind următoarea linie de comandă:
apt-cache search php- | less
Folosiți tastele cu săgeți pentru a derula sus și jos și q pentru quit.
Rezultatele sunt toate componente opționale pe care le puteți instala. Vă va oferi o scurtă descriere a fiecărei:
libnet-libidn-perl – Perl bindings for GNU Libidn
php-all-dev – package depending on all supported PHP development packages
php-cgi – server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli – command-line interpreter for the PHP scripting language (default)
php-common – Common files for PHP packages
php-curl – CURL module for PHP [default]
php-dev – Files for PHP module development (default)
php-gd – GD module for PHP [default]
php-gmp – GMP module for PHP [default]
…
:
Pentru a obține mai multe informații despre ce face fiecare modul, fie puteți căuta pe internet, fie vă puteți uita la descrierea pachetului tastând:
apt-cache show package_name
Acolo vor fi multe ieșiri, cu un câmp numit Description-en care vor avea o explicație mai lungă despre funcționalitatea pe care o oferă modulul.
De exemplu, pentru a găsi ce face modulul php-cli, puteți tasta:
apt-cache show php-cli
Împreună cu o cantitate mare de alte informații, veți găsi ceva care arată ca acesta:
Output:
…
Description-en: command-line interpreter for the PHP scripting language (default)
This package provides the /usr/bin/php command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
.
This package is a dependency package, which depends on Debian’s default
PHP version (currently 7.0).
…
Dacă după ce v-ați documentat, decideți să instalați un pachet, puteți face acest lucru folosind comanda apt-get install așa cum am făcut și pentru celălalt software.
Dacă decideți că php-cli este ceea ce vă trebuie, puteți tasta:
sudo apt-get install php-cli
Dacă doriți să instalați mai mult de un modul, puteți face acest lucru prin listarea fiecăruia, separat printr-un spațiu după comanda apt-get install, în felul următor:
sudo apt-get install package1 package2 …
În acest moment grupul LAMP este instalat și configurat. Totuși, ar trebui să testați PHP-ul.
Pasul 4: Testarea Procesării PHP pe Serverul Web
În loc să testăm dacă sistemul nostru este configurat corespunzător, putem crea un script PHP simplu.
Îl vom numi info.php. Pentru ca Apache să găsească și să folosească fișierul corect, va trebui să îl salvăm într-un director specific, denumit „web root”.
În Ubuntu 16.04 acest director se află în /var/www/html/. Putem crea fișierul în acea locație tastând:
sudo nano /var/www/html/info.php
Acesta va deschide un fișier gol. Va trebui să punem următorul text, care este un cod PHP valid, în interiorul fișierului:
info.php
<?php
phpinfo();
Când terminați salvați și închideți fișierul.
Acum puteți testa dacă server-ul dumneavoastră web afișează conținutul furnizat de scriptul PHP. Pentru a încerca acest lucru, trebuie să accesați această pagină în browser-ul dumneavoastră. Aveți nevoie încă o dată de IP-ul public al server-ului dumneavoastră.
Adresa pe care trebuie să o accesați va fi:
http://your_server_IP_address/info.php
Pagina afișată ar trebui să arate în felul următor:
Această pagină vă oferă informații despre server din perspectiva PHP. Este util pentru depanare și pentru a vă asigura că setările sunt aplicate în mod corect.
Dacă acest lucru s-a finalizat cu succes, înseamnă că PHP funcționează conform așteptărilor.
Ar trebui să ștergeți acest fișier în urma finalizării testului, deoarece acesta ar putea oferi informații despre server unor utilizatori neautorizați. Pentru a face acest lucru tastați:
sudo rm /var/www/html/info.php
Puteți mereu reface această pagină dacă aveți nevoie să accesați informațiile mai târziu.
Concluzii
Acum că aveți grupul LAMP instalat, aveți multe opțiuni pentru ce veți face în continuare. Practic, ați instalat o platformă care vă va permite să instalați o multitudine de site-uri web și software pe server-ul dumneavoastră.
Ar trebui să vă asigurați că aceste conexiuni la server sunt securizate prin HTTPS.