From ed23b179ca0ea73fadd2090e1fc76dd22e404a39 Mon Sep 17 00:00:00 2001 From: Egor Dmitriev Date: Fri, 31 Jan 2020 10:57:38 +0100 Subject: [PATCH 1/5] Updated submodules to their latest commit. --- seosnap-cacheserver | 2 +- seosnap-cachewarmer | 2 +- seosnap-dashboard | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/seosnap-cacheserver b/seosnap-cacheserver index a29415a..5575350 160000 --- a/seosnap-cacheserver +++ b/seosnap-cacheserver @@ -1 +1 @@ -Subproject commit a29415acf96f3f492998b36c5095f7319a6e20d5 +Subproject commit 55753508c52db78146e186e26e4d4ff5553dbb51 diff --git a/seosnap-cachewarmer b/seosnap-cachewarmer index 82606b6..f1cdf6e 160000 --- a/seosnap-cachewarmer +++ b/seosnap-cachewarmer @@ -1 +1 @@ -Subproject commit 82606b6c92937bb0be0f9e6066a85de71585e55e +Subproject commit f1cdf6ecbffbccf825761a6e61fb6569bb34d640 diff --git a/seosnap-dashboard b/seosnap-dashboard index 07f0fde..7d34785 160000 --- a/seosnap-dashboard +++ b/seosnap-dashboard @@ -1 +1 @@ -Subproject commit 07f0fde3ad624924a17ed1c7ac41bb8edf4b1dc6 +Subproject commit 7d3478519da7389da2c45ee4d24c5ab9ed6f6a96 From 9f5420c86f639d04f1d7e1f27bac21e2c2f7f590 Mon Sep 17 00:00:00 2001 From: dheesbeen Date: Fri, 31 Jan 2020 12:37:59 +0100 Subject: [PATCH 2/5] [DOCS] Updated readme with diagram --- README.md | 28 +++++++++++++++++++++++++++- assets/diagram.png | Bin 0 -> 19184 bytes 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 assets/diagram.png diff --git a/README.md b/README.md index 1a952e0..3f77bb9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ ![logo](https://github.com/experius/SeoSnap/raw/master/assets/logo.png) +#SeoSnap Beta + Setup for the whole seosnap stack including dashboard, cache server and cache warmer used for prerendering and full page caching PWA's. @@ -13,6 +15,12 @@ git clone --recursive git@github.com:experius/SeoSnap.git ``` docker-compose up --build -d && docker-compose down ``` +Wait 5 seconds and then build again +``` +docker-compose up --build +``` + +Everythins should run now # Usage * Dashboard: http://127.0.0.1:8080/ (default login: snaptron/Sn@ptron1337) @@ -28,4 +36,22 @@ Cache directory ./cache Make sure you have created a website via dashboard http://127.0.0.1:8080/seosnap/website/add/ ``` docker-compose run cachewarmer -``` \ No newline at end of file +``` + +## Nginx + +Check the nginx.conf in the example folder + + +# How it works + +![diagram](https://github.com/experius/SeoSnap/raw/master/assets/diagram.png) + +### Dashboard +In the dashboard you add the website url along with the website sitemap that you want to make 'SeoSnaps' off. + +### Crawler +When the crawler is started it connects with the dashboard api. It uses scrapy to crawl the sitemap. The scrapy results are send to the administration/dashboard. Scrapy requests are send to the cache server. In a similar way that you would do a request to rendertron. + +### Cache Server +The cache server is a simple file caching server. If a file exist with the content of the page it serves the html from the file. If not, it renders the requested url with rendertron and saves the html output in a file. To refresh the cache the cache-warmer uses PUT requests instead of GET. This will force update from the cache file. \ No newline at end of file diff --git a/assets/diagram.png b/assets/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..49ff613114a9c8f8a4137b34b2d12377f52296a9 GIT binary patch literal 19184 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 DHsQBM literal 0 HcmV?d00001 From 85738318d90f5b236cebe556657ea7ef6b679d86 Mon Sep 17 00:00:00 2001 From: dheesbeen Date: Fri, 31 Jan 2020 12:49:42 +0100 Subject: [PATCH 3/5] [DOCS] Updated readme added software logos --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3f77bb9..6b6764e 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Wait 5 seconds and then build again docker-compose up --build ``` -Everythins should run now +Everything should run now # Usage * Dashboard: http://127.0.0.1:8080/ (default login: snaptron/Sn@ptron1337) @@ -54,4 +54,7 @@ In the dashboard you add the website url along with the website sitemap that you When the crawler is started it connects with the dashboard api. It uses scrapy to crawl the sitemap. The scrapy results are send to the administration/dashboard. Scrapy requests are send to the cache server. In a similar way that you would do a request to rendertron. ### Cache Server -The cache server is a simple file caching server. If a file exist with the content of the page it serves the html from the file. If not, it renders the requested url with rendertron and saves the html output in a file. To refresh the cache the cache-warmer uses PUT requests instead of GET. This will force update from the cache file. \ No newline at end of file +The cache server is a simple file caching server. If a file exist with the content of the page it serves the html from the file. If not, it renders the requested url with rendertron and saves the html output in a file. To refresh the cache the cache-warmer uses PUT requests instead of GET. This will force update from the cache file. + +# Build with +![diagram](https://github.com/experius/SeoSnap/raw/master/assets/software.png) \ No newline at end of file From fbc9e49fae4827d2cf0df02469d392a3e3927151 Mon Sep 17 00:00:00 2001 From: dheesbeen Date: Fri, 31 Jan 2020 12:50:34 +0100 Subject: [PATCH 4/5] [DOCS] Updated readme added software logos --- assets/software.png | Bin 0 -> 41835 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/software.png diff --git a/assets/software.png b/assets/software.png new file mode 100644 index 0000000000000000000000000000000000000000..9f36fd71f0b5fd6f14f7cabae23590ae4999ce86 GIT binary patch literal 41835 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 iV*lM4{!a#Ta5lT$Dn@r_hUWtC_gL9`vvP literal 0 HcmV?d00001 From 3f0b2bf652bccaea1b2dfa67d6be9a85a9f1c070 Mon Sep 17 00:00:00 2001 From: Egor Dmitriev Date: Fri, 31 Jan 2020 14:20:31 +0100 Subject: [PATCH 5/5] [TASK] Removed phpmyadmin --- docker-compose.yml | 16 ---------------- seosnap-dashboard | 2 +- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index d05bddc..e7f778a 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -73,22 +73,6 @@ services: networks: - seosnap - pma: - image: phpmyadmin/phpmyadmin - depends_on: - - db - environment: - PMA_HOST: db - PMA_USER: ${DB_USER} - PMA_PASSWORD: ${DB_PASS} - restart: "unless-stopped" - ports: - - 8081:80 - volumes: - - ./dev/instance/mariadb:/var/lib/mysql - networks: - - seosnap - networks: seosnap: driver: bridge diff --git a/seosnap-dashboard b/seosnap-dashboard index 7d34785..9e36704 160000 --- a/seosnap-dashboard +++ b/seosnap-dashboard @@ -1 +1 @@ -Subproject commit 7d3478519da7389da2c45ee4d24c5ab9ed6f6a96 +Subproject commit 9e36704474568be4551376220b36b6cd01b12dec