Skip to content
This repository has been archived by the owner on Nov 30, 2024. It is now read-only.

Commit

Permalink
mandatory part complete
Browse files Browse the repository at this point in the history
  • Loading branch information
mcombeau committed Jun 16, 2023
1 parent 3be82aa commit 6172879
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 35 deletions.
14 changes: 10 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -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 ..
Expand All @@ -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
Expand All @@ -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
9 changes: 9 additions & 0 deletions anonymize-login.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

# Run to re-anonymize files before pushing to git with
# LOGIN=<login_set_in_Makefile_variable> ./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

5 changes: 5 additions & 0 deletions configure-hosts.sh
Original file line number Diff line number Diff line change
@@ -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
7 changes: 7 additions & 0 deletions configure-login.sh
Original file line number Diff line number Diff line change
@@ -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

10 changes: 2 additions & 8 deletions srcs/.env
Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@
# 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
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
Expand Down
4 changes: 2 additions & 2 deletions srcs/requirements/nginx/conf/default.conf
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ server {
listen 443 ssl;
listen [::]:443 ssl;

server_name mcombeau.42.fr;
server_name login.42.fr;

root /var/www/html;

ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
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)(/.+)$;
Expand Down
24 changes: 15 additions & 9 deletions srcs/requirements/wordpress/Dockerfile
Original file line number Diff line number Diff line change
@@ -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 \
Expand All @@ -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" ]
22 changes: 10 additions & 12 deletions srcs/requirements/wordpress/conf/configure-wordpress.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down

0 comments on commit 6172879

Please sign in to comment.