Curs Web Development
Curs HTML
Curs CSS
Curs Javascript
Curs PHP
Curs Phyton
Curs SQL
Curs SEO

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ă:

Pe de altă parte, un server live (hosting) este un mediu accesibil publicului, unde aplicația este disponibilă utilizatorilor reali. Caracteristici principale:

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:

2. Export baza de date locală

Pe serverul local (XAMPP/MAMP/Laragon) deschidem phpMyAdmin, selectăm baza de date și facem export:

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:

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

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:

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:

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:

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:

2. Optimizare site PHP

Câteva bune practici pentru performanță:

Exemple de hosting

1. Shared hosting

2. VPS (Virtual Private Server)

3. Cloud hosting


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.

Top