Deployment & Lansarea pe Server
Diferența server local vs server live
În dezvoltarea PHP, lucrăm de obicei inițial pe un server local, cum ar fi XAMPP, MAMP sau Laragon. Acest mediu ne permite să:
- Testăm aplicația fără a fi conectat la internet;
- Facem modificări rapid fără a afecta utilizatorii;
- Experimentăm cu baze de date, sesiuni și configurații PHP;
- Depanăm codul în siguranță.
Pe de altă parte, un server live (hosting) este un mediu accesibil publicului, unde aplicația este disponibilă utilizatorilor reali. Caracteristici principale:
- Proiectul trebuie să fie sigur și optimizat;
- Bazele de date și fișierele trebuie importate corect;
- Configurarea PHP, Apache/Nginx și domeniului trebuie să fie corectă;
- Este nevoie de backup regulat și monitorizare.
Exemplu concret
Pe serverul local (XAMPP), accesăm aplicația prin URL-ul http://localhost/nume-proiect și baza de
date este gestionată cu phpMyAdmin local. Pe server live, accesul se face prin domeniul tău, de ex.
https://www.exemplu.ro, iar baza de date este importată în cPanel sau alt panou de administrare.
Astfel, diferența principală este că serverul local este un mediu de dezvoltare, sigur și rapid, iar serverul live este mediul de producție, accesibil utilizatorilor finali și unde codul trebuie să fie robust.
Upload proiect și import DB pe hosting
După ce proiectul PHP este gata pe serverul local, următorul pas este să îl urcăm pe serverul live și să importăm baza de date.
1. Upload fișiere
Există mai multe metode pentru a încărca fișierele pe serverul live:
- FTP/SFTP: Folosim un client FTP (FileZilla, WinSCP) pentru a transfera
fișierele proiectului în directorul public al serverului (de obicei
public_htmlsauwww). - Manager fișiere din cPanel: Majoritatea host-urilor au un File Manager integrat unde putem încărca și dezarhiva arhive zip cu proiectul.
- Git Deployment: Unele hosting-uri permit deploy direct dintr-un repository Git.
2. Export baza de date locală
Pe serverul local (XAMPP/MAMP/Laragon) deschidem phpMyAdmin, selectăm baza de date și facem export:
- Click pe baza de date → Export
- Alegem metoda Quick și formatul SQL
- Descărcăm fișierul SQL rezultat
3. Import baza de date pe hosting
Pe serverul live, deschidem phpMyAdmin sau alt panou de administrare, creăm o bază de date și apoi importăm fișierul SQL:
- Creăm baza de date, user și parola aferentă;
- Selectăm baza de date și mergem la Import → alegem fișierul SQL exportat;
- Rulăm importul și verificăm că toate tabelele și datele au fost adăugate corect.
4. Configurare fișier conexiune
Actualizăm fișierul PHP de conexiune la DB cu datele serverului live (host, user, parolă, nume DB):
<?php
$host = 'localhost'; // sau adresa DB primită de la hosting
$db = 'nume_baza_de_date';
$user = 'utilizator';
$pass = 'parola';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
try {
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
echo "✅ Conexiune reușită la baza de date!";
} catch (PDOException $e) {
echo "❌ Eroare conexiune: " . $e->getMessage();
}
?>
După acești pași, proiectul este funcțional pe serverul live.
Variabile de mediu & fișiere .env
Pentru securitate și flexibilitate, datele sensibile precum credentialele bazei de date, cheile API sau
setările de producție nu ar trebui să fie hardcodate în codul sursă. În PHP, folosim variabile de
mediu și fișiere .env.
1. Ce sunt variabilele de mediu?
Variabilele de mediu sunt valori setate în mediul de server care pot fi accesate de aplicația PHP folosind
getenv() sau librării speciale. Ele permit separarea configurărilor între mediul local și cel live.
2. Fișierul .env
Un fișier .env conține perechi cheie=valoare și nu trebuie urcat în repository-ul public (trebuie
adăugat în .gitignore).
# .env
DB_HOST=localhost
DB_NAME=traffice-test
DB_USER=root
DB_PASS=parola123
APP_ENV=production
APP_DEBUG=false
3. Accesarea variabilelor în PHP
Putem folosi librării precum vlucas/phpdotenv sau funcția nativă getenv() pentru
a încărca aceste valori.
<?php
require 'vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
$host = getenv('DB_HOST');
$db = getenv('DB_NAME');
$user = getenv('DB_USER');
$pass = getenv('DB_PASS');
$dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4";
try {
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
echo "✅ Conexiune reușită folosind variabile de mediu!";
} catch (PDOException $e) {
echo "❌ Eroare conexiune: " . $e->getMessage();
}
?>
4. Avantaje
- Separă datele sensibile de codul sursă.
- Permite schimbarea configurației fără a modifica codul.
- Facilitează deploy-ul pe servere diferite (local, staging, live).
Configurare domeniu + Apache / Nginx
După ce proiectul PHP este gata, pentru a-l face accesibil online, trebuie să configurăm serverul web și domeniul. Cele mai folosite servere sunt Apache și Nginx.
1. Setarea domeniului
Dacă ai un domeniu propriu, trebuie să îl direcționezi către IP-ul serverului tău prin DNS A record. Exemple:
- Domeniu:
exemplu.com - IP server:
123.45.67.89 - Tip înregistrare: A record
După propagarea DNS (poate dura câteva ore), domeniul va fi gata să servească fișierele PHP de pe server.
2. Configurare Apache
Exemplu de fișier virtual host pentru Apache (de obicei în
/etc/apache2/sites-available/exemplu.com.conf):
<VirtualHost *:80>
ServerName exemplu.com
DocumentRoot /var/www/exemplu.com/public
<Directory /var/www/exemplu.com/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/exemplu.com-error.log
CustomLog ${APACHE_LOG_DIR}/exemplu.com-access.log combined
</VirtualHost>
Comenzi utile:
- Activare site:
sudo a2ensite exemplu.com.conf - Reîncărcare Apache:
sudo systemctl reload apache2
3. Configurare Nginx
Exemplu de bloc server Nginx (de obicei în /etc/nginx/sites-available/exemplu.com):
server {
listen 80;
server_name exemplu.com www.exemplu.com;
root /var/www/exemplu.com/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
error_log /var/log/nginx/exemplu.com-error.log;
access_log /var/log/nginx/exemplu.com-access.log;
}
După ce ai configurat fișierul:
- Crează un link simbolic:
sudo ln -s /etc/nginx/sites-available/exemplu.com /etc/nginx/sites-enabled/ - Verifică configurația:
sudo nginx -t - Repornește Nginx:
sudo systemctl reload nginx
4. Testare
Deschide browser-ul și accesează http://exemplu.com. Dacă totul este configurat corect, vei vedea
pagina PHP servită de serverul live.
Backup & optimizare
1. Backup baze de date și fișiere
Pentru a preveni pierderea datelor, este recomandat să faci backup regulat. Exemple:
- Baze de date MySQL:
mysqldump -u root -p traffice-test > test_db_backup.sql - Fișiere site: copierea folderului proiectului pe un alt server sau în cloud (ex: Google Drive, Dropbox, AWS S3)
2. Optimizare site PHP
Câteva bune practici pentru performanță:
- Activarea caching-ului PHP:
opcache.enable=1 - Minimizarea fișierelor CSS, JS
- Indexarea corespunzătoare a tabelelor MySQL pentru interogări rapide
- Limitarea query-urilor complexe și utilizarea prepared statements
Exemple de hosting
1. Shared hosting
- Cel mai ieftin și simplu tip de găzduire.
- Resursele serverului sunt împărțite între mai mulți clienți.
- Ideal pentru site-uri mici sau bloguri personale.
2. VPS (Virtual Private Server)
- Resurse dedicate într-un mediu virtualizat.
- Poți configura Apache/Nginx, PHP și baze de date după nevoi.
- Ideal pentru aplicații medii și comerciale.
3. Cloud hosting
- Scalabil și fiabil, resursele cresc automat în funcție de trafic.
- Exemple: AWS, Google Cloud, DigitalOcean.
- Ideal pentru aplicații mari, e-commerce și proiecte cu trafic variabil.
Felicitări pentru parcurgerea cursului PHP și MySQL! Ai pus bazele solide ale dezvoltării moderne cu PHP și MySQL, ai explorat uneltele esențiale care transformă codul într-o aplicație reală, scalabilă și publicabilă.
Însă adevărata călătorie abia începe. Pe măsură ce aprofundezi conceptele și îți extinzi abilitățile, vei descoperi noi provocări, tehnologii și oportunități. Platforma noastră îți oferă în continuare resurse valoroase pentru a merge mai departe.
Continuă să înveți, să experimentezi și să creezi. Viitorul tău de dezvoltator se construiește cu fiecare linie de cod.
