diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c8af3b5 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +all: + docker compose up --build + +re: clean all + +clean: + docker system prune -af + docker volume prune -af + +.PHONY: clean re all diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..0a7b604 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,51 @@ +services: + web-server: + build: + context: . + dockerfile: ./docker/web/Dockerfile + container_name: pressf-web + volumes: + - site:/var/www/html + ports: + - 9001:80 + + networks: + #- traefik-back + - pressf + depends_on: + - php + labels: + - traefik.enable=true + - traefik.docker.network=traefik-back + + - traefik.http.routers.pressf.rule=Host(`trans.kanel.ovh` ,`pressf.kanel.ovh`) + - traefik.http.routers.pressf.entrypoints=websecure + - traefik.http.routers.pressf.tls=true + - traefik.http.routers.pressf.tls.certresolver=letsencrypt + - traefik.http.routers.pressf.service=pressf + - traefik.http.services.pressf.loadbalancer.server.port=80 + + php: + build: + context: . + dockerfile: docker/php/Dockerfile + container_name: pressf-php + volumes: + - site:/var/www/html + - db:/var/www/db + networks: + - pressf + +networks: + #traefik-back: + #external: true + pressf: + name: pressf + external: false + +volumes: + db: + name: pressf-db + site: + name: pressf-site + diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile new file mode 100644 index 0000000..6407962 --- /dev/null +++ b/docker/php/Dockerfile @@ -0,0 +1,8 @@ +FROM php:8.4-fpm-alpine + +# Installez les dépendances nécessaires pour la compilation d'extensions PHP +RUN apk --no-cache add \ + sqlite \ + sqlite-dev + +RUN mkdir -p /var/www/db && chown -R www-data:www-data /var/www/db diff --git a/docker/web/Dockerfile b/docker/web/Dockerfile new file mode 100644 index 0000000..9f66c71 --- /dev/null +++ b/docker/web/Dockerfile @@ -0,0 +1,23 @@ +FROM nginx:alpine + +RUN apk update && apk add --no-cache \ + php84 \ + php84-fpm \ + php84-opcache \ + php84-mysqli \ + php84-pdo \ + php84-pdo_mysql \ + php84-json \ + php84-cli \ + php84-common \ + php84-mbstring \ + php84-xml \ + php84-curl + +COPY ./site /var/www/html +COPY ./docker/web/http-conf/pressf.conf /etc/nginx/conf.d/default.conf + +RUN mkdir -p /var/www/db +RUN chown -R nginx:nginx /var/www/db + +VOLUME ["/var/www/html", "/var/db"] diff --git a/docker/web/http-conf/pressf.conf b/docker/web/http-conf/pressf.conf new file mode 100644 index 0000000..c41e40e --- /dev/null +++ b/docker/web/http-conf/pressf.conf @@ -0,0 +1,36 @@ +server { + listen 0.0.0.0:80; # Écouter sur toutes les interfaces réseau (IPv4) + + # Répertoire de travail de Nginx + root /var/www/html; + index index.php index.html; + + # Gestion des fichiers PHP avec le socket Unix + location ~ \.php$ { + fastcgi_pass php:9000; + fastcgi_index index.php; + + # Paramètre de chemin de fichier pour le traitement PHP + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param DOCUMENT_ROOT $document_root; + + # Inclure les paramètres FastCGI standard + include fastcgi_params; + } + + # Serveur de fichiers statiques (images, CSS, JS, etc.) + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + # Gestion du favicon + location = /favicon.ico { + root /var/www/html; + } + + # Gestion des erreurs 404 + error_page 404 /404.html; + location = /404.html { + root /usr/share/nginx/html; + } +} diff --git a/site/favicon.ico b/site/favicon.ico new file mode 100644 index 0000000..f44cbca Binary files /dev/null and b/site/favicon.ico differ diff --git a/site/fetchf.php b/site/fetchf.php new file mode 100644 index 0000000..244b0f8 --- /dev/null +++ b/site/fetchf.php @@ -0,0 +1,15 @@ +query('SELECT count FROM respect_count WHERE id = 1'); +$row = $result->fetchArray(SQLITE3_ASSOC); +$current_count = $row['count']; + +// Fermer la connexion +$db->close(); + +// Afficher la valeur actuelle du compteur +echo $current_count; +?> diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..65281b9 --- /dev/null +++ b/site/index.html @@ -0,0 +1,108 @@ + + +
+ + +Current count:
+ + + + + + + + diff --git a/site/kanel.jpg b/site/kanel.jpg new file mode 100644 index 0000000..ebeca54 Binary files /dev/null and b/site/kanel.jpg differ diff --git a/site/pressf.php b/site/pressf.php new file mode 100644 index 0000000..2a208f2 --- /dev/null +++ b/site/pressf.php @@ -0,0 +1,51 @@ +exec('CREATE TABLE IF NOT EXISTS respect_count ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + count INTEGER NOT NULL DEFAULT 0 +)'); + +// Vérifier si le premier enregistrement existe, sinon l'insérer +$result = $db->query('SELECT * FROM respect_count WHERE id = 1'); +if (!$result->fetchArray(SQLITE3_ASSOC)) { + // Si le record avec id = 1 n'existe pas, on l'insère + $db->exec('INSERT INTO respect_count (id, count) VALUES (1, 0)'); +} + +// Mettre à jour le nombre dans la base de données +$db->exec('UPDATE respect_count SET count = count + 1 WHERE id = 1'); + +// Fermer la connexion +$db->close(); + +// Ouvrir une nouvelle connexion pour afficher le compteur +$db = new SQLite3('/var/www/db/pressf.db'); +$result = $db->query('SELECT count FROM respect_count WHERE id = 1'); +$row = $result->fetchArray(SQLITE3_ASSOC); +$current_count = $row['count']; +$db->close(); + + +// Store the current time in the session after the action is completed + +$_SESSION['last_click_time'] = time(); + +// Afficher la valeur actuelle du compteur +echo $current_count; +?>