diff --git a/Makefile b/Makefile index 59f226b..456695e 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,12 @@ all: up build: sudo docker network create --subnet=172.20.30.0/24 wordpress - mkdir ./build + sudo mkdir ./build ~/data + sudo curl -f https://wordpress.org/latest.tar.gz --output ~/data/latest.tar.gz + sudo tar -xvf ~/data/latest.tar.gz + sudo mv wordpress ~/data/wordpress + sudo cp srcs/requirements/wordpress/srcs/wordpress.conf ~/data/wordpress/wp-config.php + sudo chown -R root:root ~/data/wordpress up: build sudo docker-compose -f ./srcs/docker-compose.yml up -d @@ -12,4 +17,4 @@ down: clean: down yes | sudo docker system prune -a - sudo rm -rf ./data ./build + sudo rm -rf ~/data ./build diff --git a/Readme.md b/Readme.md index 517747e..74d4548 100644 --- a/Readme.md +++ b/Readme.md @@ -4,12 +4,6 @@ Wordpress served by php-fpm with 1 admin and 1 user and redis cache Mariadb FTP Server pointing to the wordpress volume -# PID 1 -init: true - -# /etc/hosts -127.0.0.1 djonker.42.fr - # Volumes all in /home/user/data mariadb database diff --git a/srcs/.env b/srcs/.env index 37c3b85..5312d12 100644 --- a/srcs/.env +++ b/srcs/.env @@ -1 +1,3 @@ -MARIADBPASSWD=mariapassword +WORDPRESSDATABASEPASSWD=password +WORDPRESSDATABASEUSER=wordpress +WORDPRESSDATABASE=wordpress diff --git a/srcs/docker-compose.yml b/srcs/docker-compose.yml index 3baf5ec..f1a0e2d 100644 --- a/srcs/docker-compose.yml +++ b/srcs/docker-compose.yml @@ -8,9 +8,7 @@ services: container_name: nginx restart: always volumes: - - ../data/nginx/log/error.log:/var/log/error.log - - ../data/nginx/log/access.log:/var/log/access.log - - ../data/wordpress:/var/www/wordpress + - ~/data/wordpress:/var/www/wordpress ports: - 80:80 - 443:443 @@ -19,13 +17,17 @@ services: ipv4_address: 172.20.30.10 mariadb: build: ./requirements/mariadb + environment: + - WORDPRESSDATABASE=${WORDPRESSDATABASE} + - WORDPRESSDATABASEUSER=${WORDPRESSDATABASEUSER} + - WORDPRESSDATABASEPASSWD=${WORDPRESSDATABASEPASSWD} init: true container_name: mariadb restart: always volumes: - - ../data/mariadb/data:/var/lib/mysql - - ../data/mariadb/config:/etc/mysql/conf.d - - ../data/mariadb/logs:/var/log/mysql + - ~/data/mariadb/data:/var/lib/mysql + - ~/data/mariadb/config:/etc/mysql/conf.d + - ~/data/mariadb/logs:/var/log/mysql networks: wordpress: ipv4_address: 172.20.30.20 @@ -34,7 +36,7 @@ services: container_name: wordpress restart: always volumes: - - ../data/wordpress:/var/www/wordpress + - ~/data/wordpress:/var/www/wordpress networks: wordpress: ipv4_address: 172.20.30.30 diff --git a/srcs/requirements/mariadb/Dockerfile b/srcs/requirements/mariadb/Dockerfile index ee03b54..5539d31 100644 --- a/srcs/requirements/mariadb/Dockerfile +++ b/srcs/requirements/mariadb/Dockerfile @@ -1,4 +1,7 @@ FROM alpine +ARG WORDPRESSDATABASE=${WORDPRESSDATABASE} +ARG WORDPRESSDATABASEUSER=${WORDPRESSDATABASEUSER} +ARG WORDPRESSDATABASEPASSWD=${WORDPRESSDATABASEPASSWD} RUN sleep 10 RUN apk update RUN apk add mariadb diff --git a/srcs/requirements/mariadb/srcs/start.sh b/srcs/requirements/mariadb/srcs/start.sh index 330c39b..dabdb29 100644 --- a/srcs/requirements/mariadb/srcs/start.sh +++ b/srcs/requirements/mariadb/srcs/start.sh @@ -5,7 +5,9 @@ then else mysql_install_db --user=mysql --datadir=/var/lib/mysql mysqld & sleep 10 - mysql < maria.sql + #mysql < maria.sql + mysql -e "CREATE DATABASE $WORDPRESSDATABASE" + mysql -e "GRANT ALL PRIVILEGES ON $WORDPRESSDATABASE.* TO $WORDPRESSDATABASEUSER@172.20.30.30 IDENTIFIED BY '$WORDPRESSDATABASEPASSWD'" killall mysqld touch /var/lib/mysql/initialized fi diff --git a/srcs/requirements/nginx/srcs/nginx.conf b/srcs/requirements/nginx/srcs/nginx.conf index be549f5..667dd95 100644 --- a/srcs/requirements/nginx/srcs/nginx.conf +++ b/srcs/requirements/nginx/srcs/nginx.conf @@ -20,6 +20,35 @@ http { gzip_vary on; gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/rss+xml text/javascript image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype; + server { + listen 443 ssl; + ssl_certificate /etc/ssl/certs/nginx.crt; + ssl_certificate_key /etc/ssl/private/nginx.key; + server_name djonker.42.fr localhost; + root /var/www/wordpress; + index index.php; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_session_timeout 10m; + keepalive_timeout 70; + + location / { + try_files $uri /index.php?$args; + add_header Last-Modified $date_gmt; + add_header Cache-Control 'no-store, no-cache'; + if_modified_since off; + expires off; + etag off; + } + + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass 172.20.30.30:9000; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + } + } server { listen 443 ssl; @@ -27,7 +56,7 @@ http { ssl_certificate_key /etc/ssl/private/nginx.key; root /var/www/html; index index.php index.html index.htm; - server_name djonker.42.fr localhost; + server_name html.djonker.42.fr localhost; location / { autoindex on; @@ -35,22 +64,6 @@ http { } } - server { - listen 443 ssl; - ssl_certificate /etc/ssl/certs/nginx.crt; - ssl_certificate_key /etc/ssl/private/nginx.key; - root /var/www/wordpress; - index index.php index.html index.htm; - server_name djonker.42.fr localhost; - - location = /wordpress { - fastcgi_pass 172.20.30.30:9000; - fastcgi_index index.php; - fastcgi_param HTTP_PROXY ""; - fastcgi_param REQUEST_METHOD $request_method; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - } - } server { listen 80; diff --git a/srcs/requirements/wordpress/Dockerfile b/srcs/requirements/wordpress/Dockerfile index 8573aa5..742b510 100644 --- a/srcs/requirements/wordpress/Dockerfile +++ b/srcs/requirements/wordpress/Dockerfile @@ -11,19 +11,8 @@ RUN apk add php-curl RUN apk add php-json RUN apk add php-xml RUN apk add php-zip -COPY srcs/start.sh /root/start.sh COPY srcs/www.conf /etc/php81/php-fpm.d/www.conf COPY srcs/wordpress.conf /var/www/wordpress/wp-config.php WORKDIR /root/ -RUN wget https://wordpress.org/latest.tar.gz -RUN tar -xvf latest.tar.gz -RUN mv wordpress/* /var/www/wordpress/ -RUN chown -R root:root /var/www -RUN openssl genrsa -out nginx.key -RUN openssl req -new -key nginx.key -out nginx.csr -subj "/C=NL/ST=Friesland/L=Heerenveen/O=localhost/OU=localhost/CN=localhost/emailAddress=djonker@student.codam.nl" -RUN openssl x509 -req -days 365 -in nginx.csr -signkey nginx.key -out nginx.crt -RUN mv nginx.crt /etc/ssl/certs/nginx.crt -RUN mv nginx.key /etc/ssl/private/nginx.key -RUN chmod 600 /etc/ssl/certs/nginx.crt /etc/ssl/private/nginx.key CMD php-fpm81 -F -R EXPOSE 9000/tcp diff --git a/srcs/requirements/wordpress/srcs/wordpress.conf b/srcs/requirements/wordpress/srcs/wordpress.conf index 856f154..07fc170 100644 --- a/srcs/requirements/wordpress/srcs/wordpress.conf +++ b/srcs/requirements/wordpress/srcs/wordpress.conf @@ -29,7 +29,7 @@ define( 'DB_USER', 'wordpress' ); define( 'DB_PASSWORD', 'password' ); /** MySQL hostname */ -define( 'DB_HOST', 'mariadb' ); +define( 'DB_HOST', '172.20.30.20' ); /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8mb4' ); @@ -37,8 +37,8 @@ define( 'DB_CHARSET', 'utf8mb4' ); /** The Database Collate type. Don't change this if in doubt. */ define( 'DB_COLLATE', '' ); -define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/'); -define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/'); +define('WP_SITEURL', 'https://djonker.42.fr'); +define('WP_HOME', 'https://djonker.42.fr'); /**#@+ * Authentication Unique Keys and Salts. @@ -81,7 +81,6 @@ $table_prefix = 'wp_'; * @link https://wordpress.org/support/article/debugging-in-wordpress/ */ define( 'WP_DEBUG', false ); - /* That's all, stop editing! Happy publishing. */ /** Absolute path to the WordPress directory. */ diff --git a/srcs/requirements/wordpress/srcs/www.conf b/srcs/requirements/wordpress/srcs/www.conf index b57663a..0b1371b 100644 --- a/srcs/requirements/wordpress/srcs/www.conf +++ b/srcs/requirements/wordpress/srcs/www.conf @@ -38,7 +38,9 @@ group = nobody ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. -listen = 172.20.30.10:9000 +;listen = 172.20.30.10:9000 +;listen = 127.0.0.1:9000 +listen = 9000 ; Set listen(2) backlog. ; Default Value: 511 (-1 on FreeBSD and OpenBSD) @@ -66,7 +68,7 @@ listen = 172.20.30.10:9000 ; must be separated by a comma. If this value is left blank, connections will be ; accepted from any ip address. ; Default Value: any -;listen.allowed_clients = 127.0.0.1 +listen.allowed_clients = 172.20.30.10 ; Specify the nice(2) priority to apply to the pool processes (only if set) ; The value can vary from -19 (highest priority) to 20 (lower priority) @@ -432,7 +434,7 @@ pm.max_spare_servers = 3 ; execute php code. ; Note: set an empty value to allow all extensions. ; Default Value: .php -;security.limit_extensions = .php .php3 .php4 .php5 .php7 +security.limit_extensions = ; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from ; the current environment.