Francesco Mancuso cb7879d60c
All checks were successful
Deploy / trigger (push) Successful in 1s
Deploy tramite custom CI/CD Action
2026-01-28 21:46:46 +01:00
2026-01-28 21:43:51 +01:00
2026-01-28 21:46:46 +01:00
2026-01-28 21:46:46 +01:00
2026-01-28 21:46:46 +01:00
2026-01-28 21:46:46 +01:00
2026-01-28 21:43:51 +01:00
2026-01-28 21:46:46 +01:00

Template di pubblicazione sito dinamico in PHP

Dominio di output
nomerepository-nomeutente.web.francescomancuso.it

In futuro si potrà personalizzare

Descrizione

Ogni repository, pubblica o privata, permette di effettuare il deploy del proprio sito web. Per farlo, è necessario seguire 3 semplici passaggi.

Il funzionamento è quasi identico alle "GitHub Actions", le quali permettono di creare una pipeline di sviluppo CI/CD. Qui la pipeline CI/CD è stata implementata da zero, con personalizzazioni.

Come fare?

  1. Usare come template questa repository

  2. Caricare la root del sito web con index.php o index.html dentro la cartella radice /. Puoi anche specificare una cartella diversa dal file di configurazione.

  3. Sarà presente insieme ai file della repository la cartelle /.gitea/workflows/deploy.yaml. Questo rappresenta il file di configurazione per avviare il deploy. Di base è già configurato per pubblicare il sito web, ma puoi personalizzare dentro alcuni parametri:

name: Deploy
on: [push]

jobs:
  trigger:
    runs-on: ubuntu-latest
    steps:
      - name: Build & Deploy
        env:
          REPO_NAME: ${{ gitea.event.repository.name }}
          REPO_OWNER: ${{ gitea.repository_owner }}
          # Imposta la cartella che conterrà la root del sito!
          # Default "/"
          # Con nome "nome_cartella"
          ROOT_DIR: "/"
          # Cosa stai andando a pubblicare?
          # - pages       sito web statico
          # - dynamic     sito web dinamico con PHP
          TYPE: "dynamic"
          JOB_TOKEN: ${{ gitea.token }}
        run: |
          curl -f -s -S -X -v POST http://gitea-webhook:9000/hooks/trigger-deploy \
          -H "Content-Type: application/json" \
          -d "{
            \"repository\": { \"name\": \"$REPO_NAME\" },
            \"owner\": { \"username\": \"$REPO_OWNER\" },
            \"root\": \"$ROOT_DIR\",
            \"type\": \"$TYPE\",
            \"token\": \"$JOB_TOKEN\"
          }"

Puoi infatti cambiare la root del sito web per il deploy, modificando la variabile ROOT_DIR, e puoi anche cambiare il tipo di deploy per la repository, modificando la variabile TYPE.

Uso del Database (beta)

Puoi collegare un DB con dati permanenti al tuo sito web in PHP. Per attivare il modulo, crea il file use_db.txt nella cartella radice. Ecco come leggere le variabili del DB e collegarti.

<?php
// Questi valori vengono letti automaticamente
$host = getenv('DB_HOST'); // Sarà "local_db"
$db   = getenv('DB_NAME'); // Sarà "nomerepository-nomeutente"
$user = getenv('DB_USER'); // Uguale al nome DB
$pass = getenv('DB_PASS'); // Password generata casualmente ad ogni deploy
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";

try {
     $pdo = new PDO($dsn, $user, $pass);
     echo "Connessione al database riuscita!";
} catch (\PDOException $e) {
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
?>

Se necessario puoi popolare il DB utilizzando un file SQL, accedendo al link phpmyadmin.vps.francescomancuso.it oppure effettuando un caricamento tramite PHP al primo avvio dell'applicazione.

Dati permanenti (beta)

Se il sito web richiede di salvare dati permanenti (es. upload) che non possono essere scritti nel DB, puoi caricarli attraverso PHP nella cartella /var/www/data del container. Ecco un esempio:

<?php
// index.php

// Salire di un livello per trovare la cartella data
$file_path = '/var/www/data/mio_file.txt'; 
// oppure in modo relativo:
$file_path = __DIR__ . '/../data/mio_file.txt';

file_put_contents($file_path, "Dati salvati nella cartella permanente!");
?>
Description
Esercitazione HTTP di una pagina web con invio dei dati tramite in GET e POST
https://http-get-post-francesco.web.francescomancuso.it/
Readme 333 KiB
Languages
PHP 41.6%
HTML 36.1%
CSS 22.3%