diff --git a/.gitignore b/.gitignore index 8105094..6219093 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ -wordpress -data +app logs -test +test* +codeception.yml +composer.json +logo.jpg +vendor diff --git a/multiple-sites/.env.deployer b/config/.env.deployer similarity index 100% rename from multiple-sites/.env.deployer rename to config/.env.deployer diff --git a/multiple-sites/.env.example b/config/.env.example similarity index 62% rename from multiple-sites/.env.example rename to config/.env.example index 31f9aea..e044e97 100644 --- a/multiple-sites/.env.example +++ b/config/.env.example @@ -3,5 +3,5 @@ MYSQL_DATABASE=wordpress MYSQL_USER=wordpress MYSQL_PASSWORD=password -WORDPRESS_DB_USER=wordpress -WORDPRESS_DB_PASSWORD=password +WORDPRESS_DB_HOST=db +VIRTUAL_HOST=site1.test diff --git a/wp-multisite/config/nginx/default.conf b/config/nginx/default.conf similarity index 79% rename from wp-multisite/config/nginx/default.conf rename to config/nginx/default.conf index a3f8fee..9672262 100644 --- a/wp-multisite/config/nginx/default.conf +++ b/config/nginx/default.conf @@ -11,7 +11,7 @@ server { rewrite /wp-admin$ $scheme://$host$uri/ permanent; rewrite ^(/[^/]+)?(/wp-.*) $2 last; rewrite ^(/[^/]+)?(/.*\.php) $2 last; - } + } location / { try_files $uri $uri/ /index.php?$args; @@ -24,6 +24,13 @@ server { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } + location = /robots.txt { + return 200 'User-agent: * +Disallow: /'; + access_log off; + log_not_found off; + } + client_max_body_size 100m; - include includes/wpsubdir.conf; + include /etc/nginx/sites-enabled/*; } diff --git a/multiple-sites/config/php-fpm/php.ini b/config/php-fpm/php.ini similarity index 100% rename from multiple-sites/config/php-fpm/php.ini rename to config/php-fpm/php.ini diff --git a/multiple-sites/docker-compose.yml b/docker-compose.yml similarity index 73% rename from multiple-sites/docker-compose.yml rename to docker-compose.yml index 979e0df..781e15a 100644 --- a/multiple-sites/docker-compose.yml +++ b/docker-compose.yml @@ -6,16 +6,16 @@ services: restart: always command: ["-invite-jim=false"] environment: - - VIRTUAL_HOST=mail.site1.test + - VIRTUAL_HOST=mail.${VIRTUAL_HOST} - VIRTUAL_PORT=8025 networks: - site-network - mysql: + db: image: mysql:latest restart: always volumes: - - "./data/db:/var/lib/mysql" + - "./app/db:/var/lib/mysql" environment: - MYSQL_ROOT_PASSWORD - MYSQL_DATABASE @@ -27,14 +27,15 @@ services: php: image: rtcamp/wordpress depends_on: - - mysql + - db restart: always volumes: - - "./wordpress:/var/www/html" + - "./app/src:/var/www/html" - "./config/php-fpm/php.ini:/usr/local/etc/php/php.ini" environment: - - WORDPRESS_DB_USER - - WORDPRESS_DB_PASSWORD + - WORDPRESS_DB_HOST + - WORDPRESS_DB_USER=${MYSQL_USER} + - WORDPRESS_DB_PASSWORD=${MYSQL_PASSWORD} networks: - site-network @@ -44,9 +45,9 @@ services: - php restart: always environment: - - VIRTUAL_HOST=site1.test + - VIRTUAL_HOST volumes: - - "./wordpress:/var/www/html" + - "./app/src:/var/www/html" - "./config/nginx/default.conf:/etc/nginx/conf.d/default.conf" - "./logs/nginx:/var/log/nginx" networks: @@ -55,4 +56,4 @@ services: networks: site-network: external: - name: custom-network + name: ${VIRTUAL_HOST} diff --git a/multiple-sites/README.md b/multiple-sites/README.md deleted file mode 100644 index 6fa7f3b..0000000 --- a/multiple-sites/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Multiple Sites - -### Usage - -1. Start nginx-proxy once. -``` -docker run --name nginx-proxy --restart always -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy -``` - -2. To create a new site, follow these steps. -``` -project_name=site1.test -git clone https://github.com/EasyEngine/docker-compose-wordpress.git $project_name -cd $project_name/multiple-sites -sed -i "s/\(VIRTUAL_HOST=\)\(site1.test\)/\1$project_name/; s/\(VIRTUAL_HOST=\)\(mail.site1.test\)/\1mail.$project_name/;s/\(name: \)\(.*\)/\1$project_name/" docker-compose.yml -docker network create $project_name -docker network connect $project_name nginx-proxy -echo "127.0.0.1 $project_name" | sudo tee -a /etc/hosts - -# Copy .env.example and edit the values. -mv .env.example .env -docker-compose up -d -``` -Website will be available at [http://site1.test]() -Rinse and repeat for any number of sites.(provided you have resources on your system) - -3. To stop a site, follow -``` -project_name=site1.test -cd $project_name -docker-compose stop -``` - -4. To delete a site, follow -``` -project_name=site1.test -cd $project_name -docker-compose down -cd .. -sudo rm -rf $project_name -docker network disconnect $project_name nginx-proxy -docker network rm $project_name -``` - -5. To check logs, -``` -project_name=site1 -cd $project_name -docker-compose logs -f -``` diff --git a/multiple-sites/config/nginx/default.conf b/multiple-sites/config/nginx/default.conf deleted file mode 100644 index 8fcf01b..0000000 --- a/multiple-sites/config/nginx/default.conf +++ /dev/null @@ -1,31 +0,0 @@ -server { - server_name localhost; - - access_log /var/log/nginx/access.log; - error_log /var/log/nginx/error.log; - - root /var/www/html; - index index.php; - - location / { - try_files $uri $uri/ /index.php?$args; - } - - location ~ \.php$ { - try_files $uri =404; - include fastcgi_params; - fastcgi_pass php:9000; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - } - - client_max_body_size 100m; - - location = /robots.txt { - # Some WordPress plugin gererate robots.txt file - # Refer #340 issue - return 200 'User-agent: * -Disallow: /'; - access_log off; - log_not_found off; - } -} diff --git a/multiple-sites/setup.sh b/multiple-sites/setup.sh deleted file mode 100644 index 79d6bf5..0000000 --- a/multiple-sites/setup.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env bash - -DOCKER_COMPOSE_VERSION=1.18.0 - -### -# Docker and Docker compose needs to be installed -### -if [ -x "$(command -v docker)" ]; then - if [ -x "$(command -v docker-compose)" ]; then - : - else - echo "Installing docker-compose, please wait..." && sleep 1 - sudo curl -L https://github.com/docker/compose/releases/download/"${DOCKER_COMPOSE_VERSION}"/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose - sudo chmod +x /usr/local/bin/docker-compose - fi -else - echo "Installing docker, please wait..." && sleep 1 - curl -fsSL get.docker.com | sh -fi - -### -# jwilder/nginx-proxy container needs to be running -### -docker inspect -f '{{.State.Running}}' nginx-proxy -nginx_proxy_status=$? -if [[ "$nginx_proxy_status" != 0 ]]; then - echo "Starting jwilder/nginx-proxy container..." && sleep 1 - docker run --name nginx-proxy --restart always -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy -fi - -### -# Set project_name and deployment_method -### -if [[ "$#" -eq 0 ]]; then - echo -n "Enter your project name(eg: example.com): " - read project_name - deployment_method=none -elif [[ "$#" -ge 1 ]]; then - project_name=$1 -fi - -deployment_method=${2:-none} - -echo "Project Name: $project_name" -echo "Deployment Method: $deployment_method" - -### -# Setup the project -### -mkdir -p /var/www -pushd /var/www > /dev/null 2>&1 - pwd - echo "Configuring project..." && sleep 1 - tmpdir="$(mktemp -d)" - git clone https://github.com/EasyEngine/docker-compose-wordpress.git "$tmpdir" - mkdir "$project_name" - rsync -a $tmpdir/multiple-sites/ $project_name - rm -rf $tmpdir - pushd $project_name > /dev/null 2>&1 - pwd - ls -al - sed -i "s/\(VIRTUAL_HOST=\)\(site1.test\)/\1$project_name/; s/\(VIRTUAL_HOST=\)\(mail.site1.test\)/\1mail.$project_name/;s/\(name: \)\(.*\)/\1$project_name/" docker-compose.yml - if [[ "$deployment_method" == "deployer" ]]; then - mv .env.deployer wordpress/.env - sed -i 's#html#html/current#' config/nginx/default.conf - sed -i '30a \ entrypoint: ["/bin/bash", "-c"]\n command: ["php-fpm"]' docker-compose.yml - fi - - ### - # Setup networking - ### - docker network create $project_name - docker network connect $project_name nginx-proxy - - ### - # Start the containers - ### - mv .env.example .env - echo "Starting containers..." && sleep 1 - docker-compose up -d - chown -R www-data: wordpress - popd > /dev/null 2>&1 -popd > /dev/null 2>&1 diff --git a/single-site/README.md b/single-site/README.md deleted file mode 100644 index cb8b25f..0000000 --- a/single-site/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Single Sites - -### Usage - -First setup project, -``` -project_name=site1.test -git clone https://github.com/EasyEngine/docker-compose-wordpress.git $project_name -cd $project_name/single-site -``` - -1. Start website - `docker-compose up -d`. -2. Stop website - `docker-compose stop` -3. Check logs - `docker-compose logs -f` - -Website will be available at [http://localhost]() diff --git a/single-site/config/nginx/default.conf b/single-site/config/nginx/default.conf deleted file mode 100644 index d85102d..0000000 --- a/single-site/config/nginx/default.conf +++ /dev/null @@ -1,22 +0,0 @@ -server { - server_name localhost; - - access_log /var/log/nginx/access.log; - error_log /var/log/nginx/error.log; - - root /var/www/html; - index index.php; - - location / { - try_files $uri $uri/ /index.php?$args; - } - - location ~ \.php$ { - try_files $uri =404; - include fastcgi_params; - fastcgi_pass php:9000; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - } - - client_max_body_size 100m; -} diff --git a/single-site/config/php-fpm/php.ini b/single-site/config/php-fpm/php.ini deleted file mode 100644 index 4818efb..0000000 --- a/single-site/config/php-fpm/php.ini +++ /dev/null @@ -1,4 +0,0 @@ -# Custom PHP settings - -upload_max_filesize = 100M -post_max_size = 100M diff --git a/single-site/docker-compose.yml b/single-site/docker-compose.yml deleted file mode 100644 index a31f72a..0000000 --- a/single-site/docker-compose.yml +++ /dev/null @@ -1,39 +0,0 @@ -version: '3' - -services: - mysql: - image: mysql:latest - restart: always - volumes: - - "./data/db:/var/lib/mysql" - ports: - - "3306:3306" - environment: - MYSQL_ROOT_PASSWORD: password - MYSQL_DATABASE: wordpress - MYSQL_USER: wordpress - MYSQL_PASSWORD: password - - php: - image: wordpress:php7.1-fpm - depends_on: - - mysql - restart: always - volumes: - - "./wordpress:/var/www/html" - - "./config/php-fpm/php.ini:/usr/local/etc/php/php.ini" - environment: - WORDPRESS_DB_USER: wordpress - WORDPRESS_DB_PASSWORD: password - - nginx: - image: nginx:latest - depends_on: - - php - restart: always - ports: - - "80:80" - volumes: - - "./wordpress:/var/www/html" - - "./config/nginx/default.conf:/etc/nginx/conf.d/default.conf" - - "./logs/nginx:/var/log/nginx" diff --git a/wp-multisite/README.md b/wp-multisite/README.md deleted file mode 100644 index 2a048df..0000000 --- a/wp-multisite/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# WordPress Multisite - -### Usage - -1. Start nginx-proxy once. -``` -docker run --name nginx-proxy -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy -``` - -2. To setup the multisite, follow these steps. -``` -project_name=site1.test -git clone https://github.com/EasyEngine/docker-compose-wordpress.git $project_name -cd $project_name/wp-multisite -sed -i "s/\(VIRTUAL_HOST: \)\(.*\)/\1'$project_name,*.$project_name'/; s/\(name: \)\(.*\)/\1$project_name/" docker-compose.yml -docker network create $project_name -docker network connect $project_name nginx-proxy -echo "127.0.0.1 $project_name" | sudo tee -a /etc/hosts -docker-compose up -d -``` - -3. Configure multisite, -``` -# SUBDIRECTORY -docker-compose exec --user=www-data php wp core multisite-install --title="WordPress Multisite Subdirectory" --admin_user="admin" --admin_password="password" --admin_email="user@example.com" --url=site1.test - -# SUBDOMAIN -docker-compose exec --user=www-data php wp core multisite-install --title="WordPress Multisite Subdomains" --admin_user="admin" --admin_password="password" --admin_email="user@example.com" --url=site1.test --subdomains - -# Add new site -docker-compose exec --user=www-data php wp site create --slug=example -echo "127.0.0.1 example.$project_name" | sudo tee -a /etc/hosts - -# List all sites -docker-compose exec --user=www-data php wp site list --field=url -``` - -3. To stop a site, follow -``` -project_name=site1.test -cd $project_name -docker-compose stop -``` - -4. To delete a site, follow -``` -project_name=site1.test -cd $project_name -docker-compose down -cd .. -sudo rm -rf $project_name -docker network disconnect $project_name nginx-proxy -docker network rm $project_name -``` - -5. To check logs, -``` -project_name=site1 -cd $project_name -docker-compose logs -f -``` diff --git a/wp-multisite/config/nginx/includes/wpsubdir.conf b/wp-multisite/config/nginx/includes/wpsubdir.conf deleted file mode 100644 index 0c535eb..0000000 --- a/wp-multisite/config/nginx/includes/wpsubdir.conf +++ /dev/null @@ -1,5 +0,0 @@ -if (!-e $request_filename) { - rewrite /wp-admin$ $scheme://$host$uri/ permanent; - rewrite ^(/[^/]+)?(/wp-.*) $2 last; - rewrite ^(/[^/]+)?(/.*\.php) $2 last; -} diff --git a/wp-multisite/config/php-fpm/php.ini b/wp-multisite/config/php-fpm/php.ini deleted file mode 100644 index 4818efb..0000000 --- a/wp-multisite/config/php-fpm/php.ini +++ /dev/null @@ -1,4 +0,0 @@ -# Custom PHP settings - -upload_max_filesize = 100M -post_max_size = 100M diff --git a/wp-multisite/docker-compose.yml b/wp-multisite/docker-compose.yml deleted file mode 100644 index 9589c8f..0000000 --- a/wp-multisite/docker-compose.yml +++ /dev/null @@ -1,49 +0,0 @@ -version: '3' - -services: - mysql: - image: mysql:latest - restart: always - volumes: - - "./data/db:/var/lib/mysql" - environment: - MYSQL_ROOT_PASSWORD: password - MYSQL_DATABASE: wordpress - MYSQL_USER: wordpress - MYSQL_PASSWORD: password - networks: - - site-network - - php: - image: rtcamp/wordpress - depends_on: - - mysql - restart: always - volumes: - - "./wordpress:/var/www/html" - - "./config/php-fpm/php.ini:/usr/local/etc/php/php.ini" - environment: - WORDPRESS_DB_USER: wordpress - WORDPRESS_DB_PASSWORD: password - networks: - - site-network - - nginx: - image: nginx:latest - depends_on: - - php - restart: always - environment: - VIRTUAL_HOST: '*.site1.test' - volumes: - - "./wordpress:/var/www/html" - - "./config/nginx/default.conf:/etc/nginx/conf.d/default.conf" - - "./config/nginx/includes:/etc/nginx/includes" - - "./logs/nginx:/var/log/nginx" - networks: - - site-network - -networks: - site-network: - external: - name: custom-network