From dd2eaf814f78bd53f58116ff24d3101f34f019e9 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 28 Apr 2021 16:03:38 +0200 Subject: [PATCH] Initial release --- README.md | 0 config/apache/vhosts/www.test.com.conf | 24 ++++++++ config/mysql/my.cnf | 16 +++++ config/php-fpm/php.ini | 14 +++++ config/php/php.ini | 3 + config/pma/config.user.inc.php | 1 + config/pma/php.ini | 5 ++ data/ssl/www.test.com/www.test.com.cer | 20 +++++++ data/ssl/www.test.com/www.test.com.key | 19 ++++++ data/www/index.html | 5 ++ data/www/phpinfo.php | 1 + docker-compose.yaml | 75 ++++++++++++++++++++++++ docker/apache/Dockerfile | 81 ++++++++++++++++++++++++++ docker/mysql/Dockerfile | 5 ++ docker/php-fpm/Dockerfile | 9 +++ 15 files changed, 278 insertions(+) create mode 100644 README.md create mode 100644 config/apache/vhosts/www.test.com.conf create mode 100644 config/mysql/my.cnf create mode 100644 config/php-fpm/php.ini create mode 100644 config/php/php.ini create mode 100644 config/pma/config.user.inc.php create mode 100644 config/pma/php.ini create mode 100644 data/ssl/www.test.com/www.test.com.cer create mode 100644 data/ssl/www.test.com/www.test.com.key create mode 100644 data/www/index.html create mode 100644 data/www/phpinfo.php create mode 100644 docker-compose.yaml create mode 100644 docker/apache/Dockerfile create mode 100644 docker/mysql/Dockerfile create mode 100644 docker/php-fpm/Dockerfile diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/config/apache/vhosts/www.test.com.conf b/config/apache/vhosts/www.test.com.conf new file mode 100644 index 0000000..b59ee1e --- /dev/null +++ b/config/apache/vhosts/www.test.com.conf @@ -0,0 +1,24 @@ +# Redirect to SSL + + ServerName www.test.com + Redirect permanent / https://www.test.com + + + ServerAdmin webmaster@test.com + ServerName www.test.com + DocumentRoot /var/www/html/www.test.com + ErrorLog ${APACHE_LOG_DIR}/www.test.com-error.log + CustomLog ${APACHE_LOG_DIR}/www.test.com-access.log combined + SSLEngine on + SSLCertificateFile /etc/ssl/custom/www.test.com/www.test.com.cer + SSLCertificateKeyFile /etc/ssl/custom/www.test.com/www.test.com.key + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + Options FollowSymLinks + AllowOverride All + Require all granted + + \ No newline at end of file diff --git a/config/mysql/my.cnf b/config/mysql/my.cnf new file mode 100644 index 0000000..2c58635 --- /dev/null +++ b/config/mysql/my.cnf @@ -0,0 +1,16 @@ +[mysqld] +bind-address=0.0.0.0 +skip-name-resolve=1 +log_error =/var/log/mysql/mysql_error.log +general_log_file=/var/log/mysql/mysql.log +general_log =1 +#slow_query_log =1 +#slow_query_log_file=/var/log/mysql/mysql_slow.log +#long_query_time =2 +#log_queries_not_using_indexes = 1 +innodb_buffer_pool_instances = 2 +innodb-buffer-pool-size=2G +wait_timeout = 28800 +innodb_log_file_size = 256MB +max_allowed_packet = 128M +interactive_timeout = 28800 \ No newline at end of file diff --git a/config/php-fpm/php.ini b/config/php-fpm/php.ini new file mode 100644 index 0000000..dc2a0d7 --- /dev/null +++ b/config/php-fpm/php.ini @@ -0,0 +1,14 @@ +[php] +date.timezone=UTC+1 +log_errors=On +error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT +display_errors=Off +max_execution_time=60 +memory_limit=1024M +error_log=/var/log/php/error.log +access_log=/var/log/php/access.log +post_max_size=512M +upload_max_filesize=512M +short_open_tag=On +catch_workers_output = yes +log_errors = on \ No newline at end of file diff --git a/config/php/php.ini b/config/php/php.ini new file mode 100644 index 0000000..bea184c --- /dev/null +++ b/config/php/php.ini @@ -0,0 +1,3 @@ +memory_limit = 256M +post_max_size = 100M +upload_max_filesize = 100M \ No newline at end of file diff --git a/config/pma/config.user.inc.php b/config/pma/config.user.inc.php new file mode 100644 index 0000000..9fefd39 --- /dev/null +++ b/config/pma/config.user.inc.php @@ -0,0 +1 @@ +$cfg['ExecTimeLimit'] = 0; \ No newline at end of file diff --git a/config/pma/php.ini b/config/pma/php.ini new file mode 100644 index 0000000..a9c1a6d --- /dev/null +++ b/config/pma/php.ini @@ -0,0 +1,5 @@ +[php] +memory_limit=2048M +upload_max_filesize=512M +short_open_tag=On +max_execution_time=60 \ No newline at end of file diff --git a/data/ssl/www.test.com/www.test.com.cer b/data/ssl/www.test.com/www.test.com.cer new file mode 100644 index 0000000..f69d902 --- /dev/null +++ b/data/ssl/www.test.com/www.test.com.cer @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIFmDCCBICgAwIBAgIQCfIZA5I5bSNWO37MufoFmzANBgkqhkiG9w0BAQsFADBu +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg +RFYgVExTIENBIC0gRzEwHhcNMjEwMTE4MDAwMDAwWhcNMjIwMTE3MjM1OTU5WjAf +MR0wGwYDVQQDDBQqLnNlcnZpY2VwYXJ0czI0LmNvbTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAIcgWCF5R0KWXw2uYgjoM2rlAxGkunAa41edGyJUbfTd +kVQlKtrW2z5s8iVKn/frnCj+Ii3BSCdzqAGjXJsKCUxJNrj4xXkiL+69bOuwtUP0 +j37Cqt0UkkSY7JHAU0/3DJZb+dnWm0dq9ooi0EDX1rYFN7GG0uc/04kMRDprQahP +eU28jLdLz0HUiY92ixQ5bMDcehqkvl1uUlRSun3K7Z0F3DvkfuWXLGafO0g4VMFN +MBz3nlvdp820ExMul8eDFCocUIFBYr4/2XnKacAZ0ZSnGLe0O6eHSe+GtSlQLEzr +lv9pRfn/uVbKnB1o3b0TYGU0akTTNnJDH6ycx0EQEvECAwEAAaOCAn8wggJ7MB8G +A1UdIwQYMBaAFFV0T7JyT/VgulDR1+ZRXJoBhxrXMB0GA1UdDgQWBBR6IAvKJww+ +4tSJhRQWwBLvR7U07DAzBgNVHREELDAqghQqLnNlcnZpY2VwYXJ0czI0LmNvbYIS +c2VydmljZXBhcnRzMjQuY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggr +BgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0gBDcwNTAzBgZngQwBAgEwKTAnBggrBgEF +BQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGABggrBgEFBQcBAQR0 +MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEF +BQcwAoY+aHR0cDovLasdasdasd +-----END CERTIFICATE----- \ No newline at end of file diff --git a/data/ssl/www.test.com/www.test.com.key b/data/ssl/www.test.com/www.test.com.key new file mode 100644 index 0000000..f9181c9 --- /dev/null +++ b/data/ssl/www.test.com/www.test.com.key @@ -0,0 +1,19 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEAhyBYIXlHQpZfDa5iCOgzauUDEaS6cBrjV50bIlRt9N2RVCUq +2tbbPmzyJUqf9+ucKP4iLcFIJ3OoAaNcmwoJTEk2uPjFeSIv7r1s67C1Q/SPfsKq +3RSSRJjskcBTT/cMllv52dabR2r2iiLQQNfWtgU3sYbS5z/TiQxEOmtBqE95TbyM +t0vPQdSJj3aLFDlswNx6GqS+XW5SVFK6fcrtnQXcO+R+5ZcsZp87SDhUwU0wHPee +W92nzbQTEy6Xx4MUKhxQgUFivj/ZecppwBnRlKcYt7Q7p4dJ74a1KVAsTOuW/2lF ++f+5VsqcHWjdvRNgZTRqRNM2ckMfrJzHQRAS8QIDAQABAoIBAArscHN0THBzm4eN +m1tA+jcgAFmCyZeadNp2VuU1khYDe2YkAwzh5aNsRz8Ag2IVZ/Bgav7r6xtVXDWV +sTzPWOUT3hqh8cTTILDaG14KUP0HXjpPHmT07sYg3q8Brzp9rETTdqVHlhH18axF +GDTFvhPE5DWzwoTzQfSIS1O1q/8hHzR76LAI+l82rrNeD11zFZZ0BYaB7ebWWPN2 +/xi4C1QvHWSKz/m0WeGodpf+iy4k3tqnN7EGHgcn9Ro+nOSSrCLPWjBHcD/sBgeT +xwKA/ESwpbW0QHp1nKvn0oK3Q0NksISsNffVgI21XgaNFU0DwyOxSXeLC61grcXo +v06vgAkCgYEA160bHm6RQdNEZXJ7kb5hrJ1XHQWkaFAh8GF1MkaHsDAi8NiIIQ46 +2+L5pBDbjXk11wXG6Augbd4nJbostwWZy3sHqzv6mu1Uvh1WzH8X5t8lQEyYHhyZ +d6rK0lcXARP8p1i28EUR+oHn6y0BK9bK5WwLVqaW/NFs1VhrI7oqv+cCgYEAoGPi +/i8inUWJYWF2J6ZSh7kjkJDS5TxZoe8AldscAG8vMGfkmrMaz/t2zf06ByCo1wks +ijvbeOI3AGBE5C3hIcNNnXXnkHjdrR0pXb9pxI1CuFEdjmJV8eSmUKzVoWG3wkLU +/2ekYHPadasdasd +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/data/www/index.html b/data/www/index.html new file mode 100644 index 0000000..91b58c8 --- /dev/null +++ b/data/www/index.html @@ -0,0 +1,5 @@ + + +Test + + diff --git a/data/www/phpinfo.php b/data/www/phpinfo.php new file mode 100644 index 0000000..043aa26 --- /dev/null +++ b/data/www/phpinfo.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..36eba29 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,75 @@ +version: '3.3' +services: + php-fpm: + container_name: php-fpm + build: + context: './docker/php-fpm' + restart: always + volumes: + - '${DOCUMENT_ROOT}:/var/www/html' + - '${PHP_FPM_INI}:/usr/local/etc/php/conf.d/php.override.ini' + - '${LOG_ROOT}php-fpm:/var/log/php' + environment: + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + depends_on: + - 'mysql' + mysql: + container_name: mysql + build: + context: './docker/mysql' + restart: always + command: --default-authentication-plugin=mysql_native_password + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} + - TZ=Europe/Berlin + - MYSQL_USER=${MYSQL_USER_NEW} + - MYSQL_PASSWORD=${MYSQL_PASSWORD_NEW} + - MYSQL_DATABASE=${MYSQL_DATABASE_NEW} + ports: + - '${MYSQL_PORT}:3306' + volumes: + - '${MYSQL_CONFIG_ROOT}:/etc/mysql/conf.d' + - '${LOG_ROOT}mysql:/var/log/mysql' + - '${MYSQL_BACKUP}:/var/log/mysql/backup' + phpmyadmin: + container_name: 'phpmyadmin' + image: phpmyadmin/phpmyadmin + restart: always + depends_on: + - mysql + - apache + - php-fpm + volumes: + - '${PMA_CFG}:/etc/phpmyadmin/config.user.inc.php' + - '${PHP_PMA_INI}:/usr/local/etc/php/php.ini' + environment: + PMA_HOST: mysql + PMA_PORT: 3306 + PMA_USER: root + PMA_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + UPLOAD_LIMIT: 1G + ports: + - '${PMA_PORT}:80' + apache: + build: + context: ./docker/apache + container_name: 'apache' + restart: 'always' + ports: + - "${APACHE_PORT}:80" + - "${APACHES_PORT}:443" + depends_on: + - mysql + volumes: + - ${DOCUMENT_ROOT}:/var/www/html + - ${EXZEICHNUNGEN}:/var/www/html/Exzeichnungen + - ${PHP_INI}:/usr/local/etc/php/php.ini + - ${APACHE_VHOSTS}:/etc/apache2/sites-enabled + - ${LOG_ROOT}apache:/var/log/apache2 + - ${SSL_ROOT}:/etc/ssl/custom + environment: + PMA_PORT: ${PMA_PORT} \ No newline at end of file diff --git a/docker/apache/Dockerfile b/docker/apache/Dockerfile new file mode 100644 index 0000000..9f9543e --- /dev/null +++ b/docker/apache/Dockerfile @@ -0,0 +1,81 @@ +FROM php:7.4.2-apache-buster + +# Surpresses debconf complaints of trying to install apt packages interactively +# https://github.com/moby/moby/issues/4032#issuecomment-192327844 + +ARG DEBIAN_FRONTEND=noninteractive + +# Update +RUN apt-get -y update --fix-missing && \ + apt-get upgrade -y && \ + apt-get --no-install-recommends install -y apt-utils && \ + rm -rf /var/lib/apt/lists/* + + +# Install useful tools and install important libaries +RUN apt-get -y update && \ + apt-get -y --no-install-recommends install nano wget \ +dialog \ +libsqlite3-dev \ +libsqlite3-0 && \ + apt-get -y --no-install-recommends install default-mysql-client \ +zlib1g-dev \ +libzip-dev \ +libicu-dev && \ + apt-get -y --no-install-recommends install --fix-missing apt-utils \ +build-essential \ +git \ +curl \ +libonig-dev && \ + apt-get -y --no-install-recommends install --fix-missing libcurl4 \ +libcurl4-openssl-dev \ +zip \ +openssl && \ + rm -rf /var/lib/apt/lists/* && \ + curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +# Install xdebug +RUN pecl install xdebug-2.8.0 && \ + docker-php-ext-enable xdebug + +# Install redis +RUN pecl install redis-5.1.1 && \ + docker-php-ext-enable redis + +# Install imagick +RUN apt-get update && \ + apt-get -y --no-install-recommends install --fix-missing libmagickwand-dev && \ + rm -rf /var/lib/apt/lists/* && \ + pecl install imagick && \ + docker-php-ext-enable imagick + +# Other PHP7 Extensions + +RUN docker-php-ext-install pdo_mysql && \ + docker-php-ext-install pdo_sqlite && \ + docker-php-ext-install mysqli && \ + docker-php-ext-install curl && \ + docker-php-ext-install tokenizer && \ + docker-php-ext-install json && \ + docker-php-ext-install zip && \ + docker-php-ext-install -j$(nproc) intl && \ + docker-php-ext-install mbstring && \ + docker-php-ext-install gettext && \ + docker-php-ext-install exif + + +# Install Freetype +RUN apt-get -y update && \ + apt-get --no-install-recommends install -y libfreetype6-dev \ +libjpeg62-turbo-dev \ +libpng-dev && \ + rm -rf /var/lib/apt/lists/* && \ + docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg && \ + docker-php-ext-install gd + +# Enable apache modules +RUN a2enmod rewrite headers +RUN a2enmod ssl + +# Cleanup +RUN rm -rf /usr/src/* \ No newline at end of file diff --git a/docker/mysql/Dockerfile b/docker/mysql/Dockerfile new file mode 100644 index 0000000..4e1c997 --- /dev/null +++ b/docker/mysql/Dockerfile @@ -0,0 +1,5 @@ +FROM mysql:latest +RUN mkdir -p /var/log/mysql/backup +RUN touch /var/log/mysql/mysql_error.log /var/log/mysql/mysql.log /var/log/mysql/mysql_slow.log +RUN chown -R mysql:root /var/log/mysql + diff --git a/docker/php-fpm/Dockerfile b/docker/php-fpm/Dockerfile new file mode 100644 index 0000000..2883468 --- /dev/null +++ b/docker/php-fpm/Dockerfile @@ -0,0 +1,9 @@ +FROM php:7.4.13-fpm-alpine3.12 + +RUN docker-php-ext-install mysqli pdo pdo_mysql + +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + + +# Set working directory +WORKDIR /var/www \ No newline at end of file