From d80f2f7417b2c5399f56b5ba002f53b3c587715d Mon Sep 17 00:00:00 2001 From: Ladebeze66 Date: Thu, 15 Aug 2024 20:46:55 +0200 Subject: [PATCH] ff --- data/Makefile => Makefile | 14 ++--- data/scrs/.env | 16 ------ .../requirements/mariadb/conf/50-server.cnf | 9 ---- .../requirements/mariadb/tools/entrypoint.sh | 24 --------- .../mariadb/tools/init_db_template.sql | 8 --- data/scrs/requirements/nginx/conf/nginx.conf | 49 ------------------ data/setup.sh => setup.sh | 0 srcs/.env | 16 ++++++ {data/scrs => srcs}/docker-compose.yml | 2 + .../requirements/mariadb/.dockerignore | 0 .../requirements/mariadb/Dockerfile | 16 +++--- srcs/requirements/mariadb/conf/50-server.cnf | 19 +++++++ srcs/requirements/mariadb/tools/entrypoint.sh | 20 +++++++ .../requirements/nginx/.dockerignore | 0 .../requirements/nginx/Dockerfile | 10 ++-- .../requirements/nginx/conf/default | 0 srcs/requirements/nginx/conf/nginx.conf | 41 +++++++++++++++ .../requirements/wordpress/.dockerignore | 0 .../requirements/wordpress/Dockerfile | 10 ++-- .../wordpress/conf/web/Inception_Visual.webp | Bin .../wordpress/conf/web/index.html | 0 .../requirements/wordpress/conf/web/index.php | 0 .../wordpress/conf/web/jump_scare_image.webp | Bin .../requirements/wordpress/conf/wp-config.php | 0 .../requirements/wordpress/conf/www.conf | 0 .../wordpress/tools/auto_config.sh | 13 +---- data/sudo_setup.sh => sudo_setup.sh | 0 27 files changed, 122 insertions(+), 145 deletions(-) rename data/Makefile => Makefile (83%) delete mode 100644 data/scrs/.env delete mode 100644 data/scrs/requirements/mariadb/conf/50-server.cnf delete mode 100644 data/scrs/requirements/mariadb/tools/entrypoint.sh delete mode 100644 data/scrs/requirements/mariadb/tools/init_db_template.sql delete mode 100644 data/scrs/requirements/nginx/conf/nginx.conf rename data/setup.sh => setup.sh (100%) create mode 100644 srcs/.env rename {data/scrs => srcs}/docker-compose.yml (97%) rename {data/scrs => srcs}/requirements/mariadb/.dockerignore (100%) rename {data/scrs => srcs}/requirements/mariadb/Dockerfile (65%) create mode 100644 srcs/requirements/mariadb/conf/50-server.cnf create mode 100644 srcs/requirements/mariadb/tools/entrypoint.sh rename {data/scrs => srcs}/requirements/nginx/.dockerignore (100%) rename {data/scrs => srcs}/requirements/nginx/Dockerfile (60%) rename {data/scrs => srcs}/requirements/nginx/conf/default (100%) create mode 100644 srcs/requirements/nginx/conf/nginx.conf rename {data/scrs => srcs}/requirements/wordpress/.dockerignore (100%) rename {data/scrs => srcs}/requirements/wordpress/Dockerfile (86%) rename {data/scrs => srcs}/requirements/wordpress/conf/web/Inception_Visual.webp (100%) rename {data/scrs => srcs}/requirements/wordpress/conf/web/index.html (100%) rename {data/scrs => srcs}/requirements/wordpress/conf/web/index.php (100%) rename {data/scrs => srcs}/requirements/wordpress/conf/web/jump_scare_image.webp (100%) rename {data/scrs => srcs}/requirements/wordpress/conf/wp-config.php (100%) rename {data/scrs => srcs}/requirements/wordpress/conf/www.conf (100%) rename {data/scrs => srcs}/requirements/wordpress/tools/auto_config.sh (77%) rename data/sudo_setup.sh => sudo_setup.sh (100%) diff --git a/data/Makefile b/Makefile similarity index 83% rename from data/Makefile rename to Makefile index d35a187..9f56f6e 100644 --- a/data/Makefile +++ b/Makefile @@ -6,6 +6,8 @@ HOSTNAME=fgras-ca.42.fr HOSTS_FILE=/etc/hosts VOLUME_DIR_MYSQL = /home/$(USER)/data/mysql VOLUME_DIR_HTML = /home/$(USER)/data/html +VOLUMES_DIR = /home/$(USER)/data +DOCKER_COMPOSE_FILE = ./srcs/docker-compose.yml all: sudo-validate setup-hosts create-volumes start-docker @@ -15,7 +17,7 @@ sudo-validate: down: @echo "Stopping and removing all Docker containers..." - @docker-compose -f /home/$(USER)/data/scrs/docker-compose.yml down + @docker-compose -f $(DOCKER_COMPOSE_FILE) down re: down all @@ -38,9 +40,7 @@ clean: down @docker system prune -a --force --volumes @echo "Removing MySQL and HTML data directories..." - @sudo chmod -R 777 $(VOLUME_DIR_MYSQL) - @sudo chmod -R 777 $(VOLUME_DIR_HTML) - @sudo rm -rf $(VOLUME_DIR_MYSQL) $(VOLUME_DIR_HTML) + @sudo rm -rf $(VOLUMES_DIR) setup-hosts: @echo "Configuring /etc/hosts..." @@ -54,10 +54,6 @@ create-volumes: start-docker: @echo "Starting Docker Compose in detached mode..." - @docker-compose -f /home/$(USER)/data/scrs/docker-compose.yml up --build + @docker-compose -f $(DOCKER_COMPOSE_FILE) up -d --build .PHONY: all re down clean setup-hosts create-volumes start-docker sudo-validate - - - - diff --git a/data/scrs/.env b/data/scrs/.env deleted file mode 100644 index 118a07f..0000000 --- a/data/scrs/.env +++ /dev/null @@ -1,16 +0,0 @@ -DOMAIN_NAME= -CERTS_=/etc/nginx/ssl/inception.key -MYSQL_HOSTNAME= -MYSQL_DATABASE= -MYSQL_USER= -MYSQL_PASSWORD= -MYSQL_ROOT_PASSWORD= -WP_TITLE= -WP_ADMIN_USR= -WP_ADMIN_PWD= -WP_ADMIN_EMAIL= -WP_USR= -WP_EMAIL= -WP_PWD= -ftp_user= -ftp_pwd= diff --git a/data/scrs/requirements/mariadb/conf/50-server.cnf b/data/scrs/requirements/mariadb/conf/50-server.cnf deleted file mode 100644 index 5aa7b9d..0000000 --- a/data/scrs/requirements/mariadb/conf/50-server.cnf +++ /dev/null @@ -1,9 +0,0 @@ -[mysql] -default-character-set=utf8 - -[mysqld] -datadir = /var/lib/mysql -#socket = /run/mysqld/mysqld.sock -bind_address=* -port = 3306 -user = mysql \ No newline at end of file diff --git a/data/scrs/requirements/mariadb/tools/entrypoint.sh b/data/scrs/requirements/mariadb/tools/entrypoint.sh deleted file mode 100644 index 8c7be56..0000000 --- a/data/scrs/requirements/mariadb/tools/entrypoint.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -# Démarrer le service MariaDB -service mysql start -# Remplacer les variables dans le fichier SQL -envsubst < /docker-entrypoint-initdb.d/init_db_template.sql > /docker-entrypoint-initdb.d/init_db.sql -# Exécuter le script SQL d'initialisation -mysql -u root -p"${MYSQL_ROOT_PASSWORD}" < /docker-entrypoint-initdb.d/init_db.sql -if [ $? -ne 0 ]; then - echo "Échec de l'exécution du script SQL" - exit 1 -fi - -echo "=== Script SQL exécuté avec succès ===" - -# Fonction de surveillance pour garder le conteneur en cours d'exécution -while true; do - sleep 60 - if ! pgrep mysqld > /dev/null; then - echo "Le service MySQL s'est arrêté, redémarrage..." - service mysql restart - fi -done - diff --git a/data/scrs/requirements/mariadb/tools/init_db_template.sql b/data/scrs/requirements/mariadb/tools/init_db_template.sql deleted file mode 100644 index f085527..0000000 --- a/data/scrs/requirements/mariadb/tools/init_db_template.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE}; -CREATE USER IF NOT EXISTS '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}'; -GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%'; -FLUSH PRIVILEGES; - -CREATE USER IF NOT EXISTS '${MYSQL_ADMIN_USER}'@'%' IDENTIFIED BY '${MYSQL_ADMIN_PASSWORD}'; -GRANT ALL PRIVILEGES ON *.* TO '${MYSQL_ADMIN_USER}'@'%' WITH GRANT OPTION; -FLUSH PRIVILEGES; diff --git a/data/scrs/requirements/nginx/conf/nginx.conf b/data/scrs/requirements/nginx/conf/nginx.conf deleted file mode 100644 index 7437b7c..0000000 --- a/data/scrs/requirements/nginx/conf/nginx.conf +++ /dev/null @@ -1,49 +0,0 @@ -user www-data; -worker_processes auto; -pid /run/nginx.pid; - -events { - worker_connections 768; -} - -http { - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - ssl_protocols TLSv1.2 TLSv1.3; - ssl_prefer_server_ciphers on; - - access_log /var/log/nginx/access.log; - error_log /var/log/nginx/error.log; - - gzip on; - gzip_disable "msie6"; - - include /etc/nginx/conf.d/*.conf; - include /etc/nginx/sites-enabled/*; - - server { - listen 443 ssl; - ssl_certificate /etc/nginx/ssl/inception.crt; - ssl_certificate_key /etc/nginx/ssl/inception.key; - - root /var/www/html; - server_name fgras-ca.42.fr; - index index.php index.html index.htm; - - location / { - try_files $uri $uri/ =404; - } - - location ~ \.php$ { - include snippets/fastcgi-php.conf; - fastcgi_pass wordpress:9000; - } - } -} diff --git a/data/setup.sh b/setup.sh similarity index 100% rename from data/setup.sh rename to setup.sh diff --git a/srcs/.env b/srcs/.env new file mode 100644 index 0000000..6c93c95 --- /dev/null +++ b/srcs/.env @@ -0,0 +1,16 @@ +DOMAIN_NAME=fgras-ca.42.fr +CERTS_=/etc/nginx/ssl/inception.key +MYSQL_HOSTNAME=mariadb +MYSQL_DATABASE=wordpress +MYSQL_USER=fgras +MYSQL_PASSWORD=1234 +MYSQL_ROOT_PASSWORD=5678 +WP_TITLE=FernandGrasCalvet +WP_ADMIN_USR=fgras-ca +WP_ADMIN_PWD=1234 +WP_ADMIN_EMAIL=fgras.ca@gmail.com +WP_USR=fgras +WP_EMAIL=fgras.ca@42.com +WP_PWD=123 +ftp_user=Dino +ftp_pwd=gg66! diff --git a/data/scrs/docker-compose.yml b/srcs/docker-compose.yml similarity index 97% rename from data/scrs/docker-compose.yml rename to srcs/docker-compose.yml index 0095a1c..3fe8e90 100644 --- a/data/scrs/docker-compose.yml +++ b/srcs/docker-compose.yml @@ -22,6 +22,8 @@ services: build: context: ./requirements/wordpress dockerfile: Dockerfile + depends_on: + - mariadb env_file: - .env expose: diff --git a/data/scrs/requirements/mariadb/.dockerignore b/srcs/requirements/mariadb/.dockerignore similarity index 100% rename from data/scrs/requirements/mariadb/.dockerignore rename to srcs/requirements/mariadb/.dockerignore diff --git a/data/scrs/requirements/mariadb/Dockerfile b/srcs/requirements/mariadb/Dockerfile similarity index 65% rename from data/scrs/requirements/mariadb/Dockerfile rename to srcs/requirements/mariadb/Dockerfile index f08d39b..70aed7c 100644 --- a/data/scrs/requirements/mariadb/Dockerfile +++ b/srcs/requirements/mariadb/Dockerfile @@ -1,4 +1,7 @@ -FROM debian:buster +FROM debian:bullseye + +# Exposer le port 3306 +EXPOSE 3306 # Installer les paquets nécessaires RUN apt update -y && apt upgrade -y && \ @@ -10,18 +13,13 @@ RUN mkdir -p /run/mysqld /var/www && \ chown mysql:mysql /run/mysqld # Copier les fichiers de configuration -COPY ./conf/50-server.cnf /etc/mysql/mariadb.conf.d/ -COPY ./tools/init_db_template.sql /docker-entrypoint-initdb.d/init_db_template.sql +COPY ./conf/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf COPY ./tools/entrypoint.sh /usr/local/bin/entrypoint.sh # Assurer les permissions correctes pour le script et les fichiers SQL -RUN chmod +x /usr/local/bin/entrypoint.sh && \ - chmod 644 /docker-entrypoint-initdb.d/init_db_template.sql && \ - chmod -R 777 /var/lib/mysql - -# Exposer le port 3306 -EXPOSE 3306 +RUN chmod +x /usr/local/bin/entrypoint.sh # Utiliser le script d'entrée ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] +CMD ["mariadbd"] diff --git a/srcs/requirements/mariadb/conf/50-server.cnf b/srcs/requirements/mariadb/conf/50-server.cnf new file mode 100644 index 0000000..56bd20b --- /dev/null +++ b/srcs/requirements/mariadb/conf/50-server.cnf @@ -0,0 +1,19 @@ +[server] + +[mysql] +default-character-set=utf8 + +[mysqld] + +user = mysql +user = mysql +socket = /run/mysqld/mysqld.sock +pid-file = /run/mysqld/mysqld.pid +basedir = /usr +datadir = /var/lib/mysql +tmpdir = /tmp +lc-messages-dir = /usr/share/mysql +lc-messages = en_US +skip-external-locking + +bind-address = 0.0.0.0 \ No newline at end of file diff --git a/srcs/requirements/mariadb/tools/entrypoint.sh b/srcs/requirements/mariadb/tools/entrypoint.sh new file mode 100644 index 0000000..dc3de94 --- /dev/null +++ b/srcs/requirements/mariadb/tools/entrypoint.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +echo "Starting MariaDB..." +service mariadb start + +sleep 2 + +echo "Creating user..." +mysql -e "CREATE USER IF NOT EXISTS \`${MYSQL_USER}\`@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';" +mysql -e "GRANT ALL PRIVILEGES ON \`${MYSQL_DATABASE}\`.* TO '${MYSQL_USER}'@'%';" + +mysql -e "FLUSH PRIVILEGES;" + +echo "Generating database..." +mysql -e "CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};" + +echo "Stopping MariaDB..." +mysqladmin -u root shutdown + +exec "$@" \ No newline at end of file diff --git a/data/scrs/requirements/nginx/.dockerignore b/srcs/requirements/nginx/.dockerignore similarity index 100% rename from data/scrs/requirements/nginx/.dockerignore rename to srcs/requirements/nginx/.dockerignore diff --git a/data/scrs/requirements/nginx/Dockerfile b/srcs/requirements/nginx/Dockerfile similarity index 60% rename from data/scrs/requirements/nginx/Dockerfile rename to srcs/requirements/nginx/Dockerfile index 346deea..2b53b5d 100644 --- a/data/scrs/requirements/nginx/Dockerfile +++ b/srcs/requirements/nginx/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:buster +FROM debian:bullseye # Installer Nginx et OpenSSL RUN apt update -y && apt upgrade -y @@ -9,13 +9,13 @@ RUN mkdir -p /etc/nginx/ssl # Copier les configurations de Nginx et le fichier default COPY ./conf/nginx.conf /etc/nginx/nginx.conf -COPY ./conf/default /etc/nginx/sites-available/default # Générer des certificats auto-signés pour SSL -RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/inception.key -out /etc/nginx/ssl/inception.crt -subj "/C=FR/ST=IDF/L=Paris/O=42/OU=42/CN=fgras-ca.42.fr" +RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/inception.key -out /etc/nginx/ssl/inception.crt -subj "/C=FR/ST=IDF/L=Perpignan/O=42/OU=42/CN=fgras-ca.42.fr" -# Supprimer le lien symbolique existant et créer un nouveau lien symbolique pour le site par défaut -RUN rm -f /etc/nginx/sites-enabled/default && ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/ +RUN mkdir -p /run/nginx + +EXPOSE 443 # Démarrer Nginx CMD ["nginx", "-g", "daemon off;"] diff --git a/data/scrs/requirements/nginx/conf/default b/srcs/requirements/nginx/conf/default similarity index 100% rename from data/scrs/requirements/nginx/conf/default rename to srcs/requirements/nginx/conf/default diff --git a/srcs/requirements/nginx/conf/nginx.conf b/srcs/requirements/nginx/conf/nginx.conf new file mode 100644 index 0000000..bdc46c4 --- /dev/null +++ b/srcs/requirements/nginx/conf/nginx.conf @@ -0,0 +1,41 @@ +events{} + +http { + include /etc/nginx/mime.types; + + server { + listen 443 ssl; + listen [::]:443 ssl; + + ssl_protocols TLSv1.2 TLSv1.3; + + # SSL certificates + ssl_certificate /etc/nginx/ssl/inception.crt; + ssl_certificate_key /etc/nginx/ssl/inception.key; + + root /var/www/html; + index index.php index.html; + + server_name fgras-ca.42.fr; + + location / { + try_files $uri $uri/ /index.php?$args; + } + + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass wordpress:9000; + fastcgi_index index.php; + + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Full path to the script file + fastcgi_param PATH_INFO $fastcgi_path_info; # Extra path information + fastcgi_param QUERY_STRING $query_string; # Query string + fastcgi_param REQUEST_METHOD $request_method; # HTTP request method + fastcgi_param CONTENT_TYPE $content_type; # Content type + fastcgi_param CONTENT_LENGTH $content_length; # Content length + fastcgi_param SERVER_NAME $server_name; # Server name + fastcgi_param SERVER_PORT $server_port; # Server port + } + } +} diff --git a/data/scrs/requirements/wordpress/.dockerignore b/srcs/requirements/wordpress/.dockerignore similarity index 100% rename from data/scrs/requirements/wordpress/.dockerignore rename to srcs/requirements/wordpress/.dockerignore diff --git a/data/scrs/requirements/wordpress/Dockerfile b/srcs/requirements/wordpress/Dockerfile similarity index 86% rename from data/scrs/requirements/wordpress/Dockerfile rename to srcs/requirements/wordpress/Dockerfile index 393ebf0..24e4e71 100644 --- a/data/scrs/requirements/wordpress/Dockerfile +++ b/srcs/requirements/wordpress/Dockerfile @@ -1,8 +1,8 @@ -FROM debian:buster +FROM debian:bullseye # Installer les paquets nécessaires RUN apt update -y && apt upgrade -y && \ - apt-get install -y php7.3-fpm php7.3-mysql mariadb-client wget curl vim && \ + apt-get install -y php7.4-fpm php7.4-mysql mariadb-client wget curl vim && \ mkdir -p /var/www/html && \ wget https://fr.wordpress.org/wordpress-6.0-fr_FR.tar.gz -O /tmp/wordpress.tar.gz && \ tar -xzvf /tmp/wordpress.tar.gz -C /var/www/html --strip-components=1 && \ @@ -12,7 +12,7 @@ RUN apt update -y && apt upgrade -y && \ #RUN apt-get install sendmail -y # Copier les fichiers de configuration PHP et le script d'auto-configuration -COPY ./conf/www.conf /etc/php/7.3/fpm/pool.d/ +COPY ./conf/www.conf /etc/php/7.4/fpm/pool.d/www.conf COPY ./conf/wp-config.php /var/www/html/ COPY ./tools/auto_config.sh /usr/local/bin/ @@ -25,6 +25,8 @@ RUN chmod -R 777 /var/www/html COPY ./conf/web /var/www/html RUN chmod -R 777 /var/www/html +ENTRYPOINT ["/usr/local/bin/auto_config.sh"] + EXPOSE 9000 -ENTRYPOINT ["/usr/local/bin/auto_config.sh"] +CMD ["php-fpm7.4", "-F"] diff --git a/data/scrs/requirements/wordpress/conf/web/Inception_Visual.webp b/srcs/requirements/wordpress/conf/web/Inception_Visual.webp similarity index 100% rename from data/scrs/requirements/wordpress/conf/web/Inception_Visual.webp rename to srcs/requirements/wordpress/conf/web/Inception_Visual.webp diff --git a/data/scrs/requirements/wordpress/conf/web/index.html b/srcs/requirements/wordpress/conf/web/index.html similarity index 100% rename from data/scrs/requirements/wordpress/conf/web/index.html rename to srcs/requirements/wordpress/conf/web/index.html diff --git a/data/scrs/requirements/wordpress/conf/web/index.php b/srcs/requirements/wordpress/conf/web/index.php similarity index 100% rename from data/scrs/requirements/wordpress/conf/web/index.php rename to srcs/requirements/wordpress/conf/web/index.php diff --git a/data/scrs/requirements/wordpress/conf/web/jump_scare_image.webp b/srcs/requirements/wordpress/conf/web/jump_scare_image.webp similarity index 100% rename from data/scrs/requirements/wordpress/conf/web/jump_scare_image.webp rename to srcs/requirements/wordpress/conf/web/jump_scare_image.webp diff --git a/data/scrs/requirements/wordpress/conf/wp-config.php b/srcs/requirements/wordpress/conf/wp-config.php similarity index 100% rename from data/scrs/requirements/wordpress/conf/wp-config.php rename to srcs/requirements/wordpress/conf/wp-config.php diff --git a/data/scrs/requirements/wordpress/conf/www.conf b/srcs/requirements/wordpress/conf/www.conf similarity index 100% rename from data/scrs/requirements/wordpress/conf/www.conf rename to srcs/requirements/wordpress/conf/www.conf diff --git a/data/scrs/requirements/wordpress/tools/auto_config.sh b/srcs/requirements/wordpress/tools/auto_config.sh similarity index 77% rename from data/scrs/requirements/wordpress/tools/auto_config.sh rename to srcs/requirements/wordpress/tools/auto_config.sh index bba713c..27b2123 100644 --- a/data/scrs/requirements/wordpress/tools/auto_config.sh +++ b/srcs/requirements/wordpress/tools/auto_config.sh @@ -4,15 +4,6 @@ mkdir -p /run/php chown www-data:www-data /run/php -# Assurez-vous que PHP-FPM est arrêté avant de le démarrer en mode non daemonisé -service php7.3-fpm stop - -# Attendre que MariaDB soit prêt -until mysqladmin ping -h mariadb --silent; do - echo "Waiting for MariaDB to be ready..." - sleep 5 -done - # Télécharger WP-CLI si nécessaire if [ ! -f /usr/local/bin/wp ]; then wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar @@ -37,6 +28,4 @@ else echo "=== WordPress is already installed ===" fi -# Démarrer PHP-FPM en mode non daemonisé -php-fpm7.3 -F - +exec "$@" diff --git a/data/sudo_setup.sh b/sudo_setup.sh similarity index 100% rename from data/sudo_setup.sh rename to sudo_setup.sh