From 6172879dc87ea7af68a67dd7420a14a52c0087b3 Mon Sep 17 00:00:00 2001 From: mcombeau Date: Fri, 16 Jun 2023 17:25:50 +0100 Subject: [PATCH] mandatory part complete --- Makefile | 14 +++++++---- anonymize-login.sh | 9 +++++++ configure-hosts.sh | 5 ++++ configure-login.sh | 7 ++++++ srcs/.env | 10 ++------ srcs/requirements/nginx/conf/default.conf | 4 ++-- srcs/requirements/wordpress/Dockerfile | 24 ++++++++++++------- .../wordpress/conf/configure-wordpress.sh | 22 ++++++++--------- 8 files changed, 60 insertions(+), 35 deletions(-) create mode 100755 anonymize-login.sh create mode 100755 configure-hosts.sh create mode 100755 configure-login.sh diff --git a/Makefile b/Makefile index a230e39..44411c2 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,22 @@ +# Edit login before launching ! LOGIN = login +DOMAIN = ${LOGIN}.42.fr DATA_PATH = /home/${LOGIN}/data +ENV = LOGIN=${LOGIN} DATA_PATH=${DATA_PATH} DOMAIN=${LOGIN}.42.fr all: up up: setup - DATA_PATH=${DATA_PATH} docker-compose -f ./srcs/docker-compose.yml up -d --build + ${ENV} docker-compose -f ./srcs/docker-compose.yml up -d --build down: - DATA_PATH=${DATA_PATH} docker-compose -f ./srcs/docker-compose.yml down + ${ENV} docker-compose -f ./srcs/docker-compose.yml down start: - DATA_PATH=${DATA_PATH} docker-compose -f ./srcs/docker-compose.yml start + ${ENV} docker-compose -f ./srcs/docker-compose.yml start stop: - DATA_PATH=${DATA_PATH} docker-compose -f ./srcs/docker-compose.yml stop + ${ENV} docker-compose -f ./srcs/docker-compose.yml stop status: cd srcs && docker-compose ps && cd .. @@ -22,6 +25,8 @@ logs: cd srcs && docker-compose logs && cd .. setup: + ${ENV} ./configure-login.sh + ${ENV} ./configure-hosts.sh sudo mkdir -p /home/${LOGIN}/ sudo mkdir -p ${DATA_PATH} sudo mkdir -p ${DATA_PATH}/mariadb-data @@ -31,6 +36,7 @@ clean: sudo rm -rf ${DATA_PATH} fclean: clean + ${ENV} ./anonymize-login.sh docker system prune -f .PHONY: up down start stop status logs prune clean fclean diff --git a/anonymize-login.sh b/anonymize-login.sh new file mode 100755 index 0000000..8ec1fc0 --- /dev/null +++ b/anonymize-login.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Run to re-anonymize files before pushing to git with +# LOGIN= ./anonymize-login.sh + +sed -i "s/${LOGIN}/login/g" Makefile +sed -i "s/${LOGIN}/login/g" srcs/.env +sed -i "s/${LOGIN}/login/g" srcs/requirements/nginx/conf/default.conf + diff --git a/configure-hosts.sh b/configure-hosts.sh new file mode 100755 index 0000000..7f44640 --- /dev/null +++ b/configure-hosts.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +if ! grep -q ${DOMAIN} "/etc/hosts"; then + echo "127.0.0.1 ${DOMAIN}" | sudo tee -a /etc/hosts +fi diff --git a/configure-login.sh b/configure-login.sh new file mode 100755 index 0000000..53bd7d0 --- /dev/null +++ b/configure-login.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# Edit the LOGIN variable in Makefile first + +sed -i "s/login/${LOGIN}/g" srcs/.env +sed -i "s/login/${LOGIN}/g" srcs/requirements/nginx/conf/default.conf + diff --git a/srcs/.env b/srcs/.env index 0cbb75c..d4e4c75 100644 --- a/srcs/.env +++ b/srcs/.env @@ -1,14 +1,9 @@ -# Example .env file -DOMAIN_NAME=login.42.fr - -#NGINX NGINX_PORT=443 -NGINX_HOST=nginx +NGINX_HOST=login.42.fr NGINX_ROOT=login NGINX_ROOT_PWD=123letmein! -#MARIADB DB_PORT=3306 DB_HOST=mariadb DB_ROOT_PASS=ExtremelySecurePassword666 @@ -16,10 +11,9 @@ WP_DB_NAME=wordpress_db WP_DB_USER=wordpress_user WP_DB_PASS=SecurePassword100Percent -#WORDPRESS WP_PORT=9000 WP_PATH=/var/www/html/wordpress/ -WP_SITE_NAME=a_wordpress_website +WP_TITLE=Inception WP_ADMIN_USER=website_owner_123 WP_ADMIN_PASS=SecurePassword_123 WP_ADMIN_EMAIL=owner@example.com diff --git a/srcs/requirements/nginx/conf/default.conf b/srcs/requirements/nginx/conf/default.conf index df3df17..660b4d4 100644 --- a/srcs/requirements/nginx/conf/default.conf +++ b/srcs/requirements/nginx/conf/default.conf @@ -3,7 +3,7 @@ server { listen 443 ssl; listen [::]:443 ssl; - server_name mcombeau.42.fr; + server_name login.42.fr; root /var/www/html; @@ -11,7 +11,7 @@ server { ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; ssl_protocols TLSv1.2 TLSv1.3; - index index.php index.html index.htm; + index index.php index.html index.htm wordpress/index.php; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; diff --git a/srcs/requirements/wordpress/Dockerfile b/srcs/requirements/wordpress/Dockerfile index 5b84445..2bdd531 100644 --- a/srcs/requirements/wordpress/Dockerfile +++ b/srcs/requirements/wordpress/Dockerfile @@ -1,6 +1,6 @@ FROM alpine:3.18 -# Install PHP 8.2 & MariaDB-client dependencies +# Install PHP 8.1 & MariaDB-client dependencies RUN apk update && apk upgrade &&\ apk add php81 php81-fpm php81-bcmath php81-bz2 php81-calendar php81-cli php81-ctype \ php81-curl php81-dom php81-exif php81-fileinfo php81-gd php81-gmp \ @@ -13,24 +13,30 @@ RUN apk update && apk upgrade &&\ apk add mariadb-client # Install Wordpress files -RUN wget https://wordpress.org/latest.tar.gz &&\ - mkdir -p /var/www/html &&\ - tar -xvf latest.tar.gz -C /var/www/html &&\ - rm -f latest.tar.gz +# RUN wget https://wordpress.org/latest.tar.gz &&\ +# mkdir -p /var/www/html &&\ +# tar -xvf latest.tar.gz -C /var/www/html &&\ +# rm -f latest.tar.gz +# Configure PHP-fpm to listen on internal inception network port 9000 RUN sed -i 's/listen = 127.0.0.1:9000/listen = 9000/g' /etc/php81/php-fpm.d/www.conf # Install WP-CLI +# Moving wp-cli.phar to /usr/bin/wp-cli.phar rather than /usr/bin/wp to avoid +# PHP errors for phar vendors files missing. This is a wp-cli bug: +# https://github.com/wp-cli/config-command/issues/141 +# https://github.com/wp-cli/config-command/issues/31 +# https://github.com/wp-cli/wp-cli/issues/4689#issuecomment-366428642 RUN apk add curl &&\ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar &&\ - chmod +x wp-cli.phar - # alias wp="/usr/bin/php81-cli wp-cli.phar" - # mv wp-cli.phar /usr/local/bin/wp &&\ - # alias wp="/usr/bin/php81-cli /usr/local/bin/wp" + chmod +x wp-cli.phar &&\ + mv wp-cli.phar /usr/bin/wp-cli.phar # Copy WordPress configuration file COPY ./conf/configure-wordpress.sh /tmp/configure-wordpress.sh RUN chmod +x /tmp/configure-wordpress.sh +WORKDIR /var/www/html/wordpress + # Run the WordPress configuration file at container startup ENTRYPOINT [ "sh", "/tmp/configure-wordpress.sh" ] diff --git a/srcs/requirements/wordpress/conf/configure-wordpress.sh b/srcs/requirements/wordpress/conf/configure-wordpress.sh index 9d8ebf7..211da9d 100644 --- a/srcs/requirements/wordpress/conf/configure-wordpress.sh +++ b/srcs/requirements/wordpress/conf/configure-wordpress.sh @@ -15,22 +15,20 @@ if [ -f ${WP_PATH}/wp-config.php ] then echo "[WP config] WordPress already configured." else - echo "[WP config] Configuring WordPress database access..." - + echo "[WP config] Setting up WordPress..." echo "[WP config] Updating WP-CLI..." - ./wp-cli.phar cli update --yes --allow-root - echo "[WP config] WP-CLI info:" - ./wp-cli.phar --info - # echo "[WP config] Downlading latest WordPress core..." - # ./wp-cli.phar core download --allow-root + wp-cli.phar cli update --yes --allow-root + echo "[WP config] Downloading WordPress..." + wp-cli.phar core download --allow-root echo "[WP config] Creating wp-config.php..." - ./wp-cli.phar config create --dbname=${WP_DB_NAME} --dbuser=${WP_DB_USER} --dbpass=${WP_DB_PASS} --dbhost=${DB_HOST} --path=${WP_PATH} --allow-root + wp-cli.phar config create --dbname=${WP_DB_NAME} --dbuser=${WP_DB_USER} --dbpass=${WP_DB_PASS} --dbhost=${DB_HOST} --path=${WP_PATH} --allow-root echo "[WP config] Installing WordPress core..." - ./wp-cli.phar core install --url=${NGINX_HOST} --title=${WP_TITLE} --admin_user=${WP_ADMIN_USER} --admin_password=${WP_ADMIN_PASS} --admin_email=${WP_ADMIN_EMAIL} --path=${WP_PATH} --allow-root + wp-cli.phar core install --url=${NGINX_HOST}/wordpress --title=${WP_TITLE} --admin_user=${WP_ADMIN_USER} --admin_password=${WP_ADMIN_PASS} --admin_email=${WP_ADMIN_EMAIL} --path=${WP_PATH} --allow-root echo "[WP config] Creating WordPress default user..." - ./wp-cli.phar user create $WP_USER ${WP_USER_EMAIL} --user_pass=${WP_USER_PASS} --role=subscriber --display_name=${WP_USER} --porcelain --path=${WP_PATH} --allow-root - echo "[WP config] ---------- wp-config.php" - cat ${WP_PATH}/wp-config.php + wp-cli.phar user create $WP_USER ${WP_USER_EMAIL} --user_pass=${WP_USER_PASS} --role=subscriber --display_name=${WP_USER} --porcelain --path=${WP_PATH} --allow-root + echo "[WP config] Installing WordPress theme..." + wp-cli.phar theme install bravada --path=${WP_PATH} --activate --allow-root + wp-cli.phar theme status bravada --allow-root fi echo "[WP config] Executing PHP fastcgi."