generated from francesco/deploy-dinamico
Initial commit
This commit is contained in:
30
.gitea/workflows/deploy.yaml
Normal file
30
.gitea/workflows/deploy.yaml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
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\"
|
||||||
|
}"
|
||||||
98
README.md
Normal file
98
README.md
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
# 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:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
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
|
||||||
|
<?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](https://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
|
||||||
|
<?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!");
|
||||||
|
?>
|
||||||
|
```
|
||||||
30
index.php
Normal file
30
index.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="it">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Funziona!</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
padding: 8rem 1rem;
|
||||||
|
margin: 0;
|
||||||
|
background-color: #111111;
|
||||||
|
color: #fafafa;
|
||||||
|
text-align: center;
|
||||||
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Funziona!</h1>
|
||||||
|
<p>Se vedi questa pagina, <code style="display: inline-block;">deploy-dynamic</code> funziona!</p>
|
||||||
|
<br>
|
||||||
|
<img src="https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExZDcxMWdzaGY1aW1sdXBrN3pjbjR3dXRlc3A2aTRrenFwbjU4aWh1bCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/blSTtZehjAZ8I/giphy.gif" alt="PARTY" style="width:90%;max-width:500px">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<span>Pagina generata dinamicamente con PHP il <?php date_default_timezone_set('Europe/Rome'); echo $current_date = date('d/m/Y H:i:s'); ?></span>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<p><i>Ospitato su vps.francescomancuso.it</i></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user