From 5b5b07cb32a87e8f3a1a1a42e96068dba4215b6a Mon Sep 17 00:00:00 2001 From: Ilya Rogov Date: Mon, 21 Aug 2017 08:47:47 +0300 Subject: [PATCH 1/2] Add Example --- example/.gitignore | 2 + example/app/.gitkeep | 0 example/core/.gitkeep | 0 example/default.env | 10 +++++ example/docker-compose.yml | 42 ++++++++++++++++++ example/etc/certs/localhost.crt | 17 +++++++ example/etc/certs/localhost.key | 15 +++++++ example/etc/nginx/default.conf | 79 +++++++++++++++++++++++++++++++++ example/etc/script/init.sh | 58 ++++++++++++++++++++++++ example/readme.md | 0 10 files changed, 223 insertions(+) create mode 100644 example/.gitignore create mode 100644 example/app/.gitkeep create mode 100644 example/core/.gitkeep create mode 100644 example/default.env create mode 100644 example/docker-compose.yml create mode 100644 example/etc/certs/localhost.crt create mode 100644 example/etc/certs/localhost.key create mode 100755 example/etc/nginx/default.conf create mode 100755 example/etc/script/init.sh create mode 100644 example/readme.md diff --git a/example/.gitignore b/example/.gitignore new file mode 100644 index 0000000..b1d8452 --- /dev/null +++ b/example/.gitignore @@ -0,0 +1,2 @@ +.env +core diff --git a/example/app/.gitkeep b/example/app/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/example/core/.gitkeep b/example/core/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/example/default.env b/example/default.env new file mode 100644 index 0000000..f852e11 --- /dev/null +++ b/example/default.env @@ -0,0 +1,10 @@ +MYSQL_ROOT_PASSWORD=root + +UMI_DB_NAME=umi +UMI_DB_HOSTNAME=db +UMI_DB_USERNAME=umi +UMI_DB_PASSWORD=umi +UMI_TEMPLATE=demodizzy + +UMI_DOMAIN=localhost +UMI_KEY=%KEY% diff --git a/example/docker-compose.yml b/example/docker-compose.yml new file mode 100644 index 0000000..3597435 --- /dev/null +++ b/example/docker-compose.yml @@ -0,0 +1,42 @@ +version: '3.3' + +services: + + runtime: + image: ware/umi.cms:php-fpm-7.1-alpine + restart: always + env_file: .env + depends_on: + - db + volumes: + - "./core:/var/www/html" + - "./etc/php/php.ini:/usr/local/etc/php/php.ini" + + db: + image: mysql:5.5 + restart: always + volumes: + - data-db:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=root + - MYSQL_DATABASE=${UMI_DB_NAME} + - MYSQL_USER=${UMI_DB_USERNAME} + - MYSQL_PASSWORD=${UMI_DB_PASSWORD} + + web: + image: nginx + restart: always + depends_on: + - runtime + ports: + - "80:80" + - "443:443" + volumes: + - "./core:/var/www/html" + - "./app:/var/www/html/templates/app" + - "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf" + - "./etc/certs:/etc/nginx/certs" + +volumes: + data-db: + driver: local diff --git a/example/etc/certs/localhost.crt b/example/etc/certs/localhost.crt new file mode 100644 index 0000000..2116b54 --- /dev/null +++ b/example/etc/certs/localhost.crt @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICsjCCAhugAwIBAgIJAK9HXB0+bKUaMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQwIBcNMTcwNjI3MTkwMTE2WhgPMjA4NTA3MTUxOTAxMTZa +MEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJ +bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ +AoGBALvW04ukqYNjqoG70UM3RDlPVYtExJAUapDDuxYm6j861/LPPPFjFOT3XygC +WDRGJAQuSx+SSU8tD+scsZwl1sKppLX19BbnDAWxXVuCoxD7CdL+HORQ/oYCWVn8 +6L1Nucn41NkCytz/lVMYYIu0U3Jpib7XvV2sRgVvS9byjT9xAgMBAAGjgacwgaQw +HQYDVR0OBBYEFJWQDkQ3kfZNEFvRd7JT3frl0fjSMHUGA1UdIwRuMGyAFJWQDkQ3 +kfZNEFvRd7JT3frl0fjSoUmkRzBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29t +ZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkggkAr0dc +HT5spRowDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQAt8ASJ/0zYHOIp +WBOKSbammIFLnh/2Mttosi/HWpmr0+5GMN7yAPZKadK8XHbg1D4zw7YaJ18EBIcu +Fp9+Dvs/uyvzG9Q4oJWt4eYTY4uu8GYv0jaQnBmybQZfrkf8VLSCPZ0SPVc1+vBs +Fsm4eOUWHCfe11QxWE/b6q2zwUqULQ== +-----END CERTIFICATE----- diff --git a/example/etc/certs/localhost.key b/example/etc/certs/localhost.key new file mode 100644 index 0000000..7e5c337 --- /dev/null +++ b/example/etc/certs/localhost.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQC71tOLpKmDY6qBu9FDN0Q5T1WLRMSQFGqQw7sWJuo/Otfyzzzx +YxTk918oAlg0RiQELksfkklPLQ/rHLGcJdbCqaS19fQW5wwFsV1bgqMQ+wnS/hzk +UP6GAllZ/Oi9TbnJ+NTZAsrc/5VTGGCLtFNyaYm+171drEYFb0vW8o0/cQIDAQAB +AoGAWJn3hPnxn3EmnzU5ewwZmTLLtfqFATUwIwLAP62xdovKCtUn+PB0jaAFeXjJ +pDaljHdNpiG5hKhLxuns+St8Bd1P1/sZ7a4m8HXpW3JiE8yCBYXxUFNrCJH3pExs +KnM3o+S2woZ9RT8UzWdzODIhQgRmWERbeghtnkOJkFkkg6UCQQDhDhYRk+VkNQTh +1njsRDR+0C11oF57ioggWmzDlRaDEYU0WnqoIjvXNXgljo347zA74S2NJzGI52Dj +feinvLhHAkEA1aq+5/Icn/5Cf8vGOd9Po+cD9xWokVx5ETStrDOBKp7NWz32do1F +MN7i8BlN7N5ht2X/NAwJeTEXADD557JehwJBANb/LfX849enDtLwoPSU89Fx7vvA +CILdBM5jlCQD+U2dHzO0fBjDG4esfOrkFJ0LY3jQ1UNTfe7bm6O4VNppX2ECQEMA +WwMS+gT1z1aRyORG8YtdGvI1WXnTvKc3lKpmMD/0MkNFZ+7/F85eZl2SIcyAY7YG +BwQELkhRq3vE3+jXFysCQFW8Eq1qzfv07DInCz6KJ3OuN+AvPxaNnuSh4ENHMxS0 +jsHubtcvg7w6jKsBYuifVba5bp/pqC9/xZctoEkItVI= +-----END RSA PRIVATE KEY----- diff --git a/example/etc/nginx/default.conf b/example/etc/nginx/default.conf new file mode 100755 index 0000000..18c12a2 --- /dev/null +++ b/example/etc/nginx/default.conf @@ -0,0 +1,79 @@ +worker_processes 4; + +http { + include mime.types; + default_type application/octet-stream; + + server { + listen 80 default_server; + server_name localhost; + root /var/www/html; + + + access_log /var/log/nginx/access.all.log; + error_log /var/log/nginx/error.log warn; + + default_type 'text/plain'; + + try_files /sys-temp/static-cache/$host/$uri/index.html + + if ( $request_uri ~ "^/(images|tinymce|install.php|install_update.php|captcha.php|styles|css|\.css|js|runscripts)") { break; } + + + if (-e $request_filename) { + rewrite ^/(sys\-temp|cache|xmldb|static|packages)\/.*$ /500/ break; + } + + if (!-e $request_filename) { + rewrite ^/robots\.txt /sbots.php?path=$1&$query_string last; + rewrite ^/sitemap\?([0-9]*).xml /sitemap.php?id=$1 last; + rewrite ^(.*)\.xml$ /index.php?xmlMode=force&path=$1&$query_string last; + rewrite ^/(udata|upage|uobject|ufs|usel|ulang|utype|umess|uhttp):?(\/\/)?(.*)$ /releaseStreams.php?scheme=$1&path=$3&$query_string last; + rewrite ^(.*)\.json$ /index.php?jsonMode=force&path=$1&%query_string last; + rewrite ^/.* /index.php?path=$fastcgi_script_name&$query_string last; + } + + location ~* ^/(images|files|logs)/.+\.(php|php3|php4|php5|phtml|phps|pl|pm)$ { + deny all; + } + + location / { + rewrite ^/~/([0-9]+)$ /tinyurl.php?id=$1 break; + index index.php; + } + + location ~* (config\.ini|install\.ini|install\.log|umi\.nginx\.conf|dbview\.php|umibackup) { + rewrite ^(.*)$ / permanent; + } + + location ^~ /(config\.ini|classes|logs|libs|sys-temp|tpls|umaps|usels|xsltTpls) { + deny all; + } + + location ^~ /styles/common/other/elfinder/php/ { + location ~.*\.(php)?$ + { + deny all; + } + } + + location ~* /files/ { } + + location ~* ^.+\.(php)$ { + fastcgi_pass runtime:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + fastcgi_connect_timeout 3060; + fastcgi_send_timeout 3180; + fastcgi_read_timeout 3180; + fastcgi_buffer_size 32k; + fastcgi_buffers 4 32k; + fastcgi_busy_buffers_size 32k; + fastcgi_temp_file_write_size 32k; + fastcgi_temp_path /tmp; + + } + } +} +######################## UMI_CMS_NGINX_END ############################ diff --git a/example/etc/script/init.sh b/example/etc/script/init.sh new file mode 100755 index 0000000..a41654d --- /dev/null +++ b/example/etc/script/init.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env sh + +set -e + +IP=$(ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}') +UMI_IP="${UMI_IP:-"${IP}"}" +UMI_DOMAIN="${UMI_DOMAIN:-"localhost"}" +UMI_TEMPLATE="${UMI_TEMPLATE:-"_blank"}" + +cat > install.ini <<- EOF +[SERVER] +phppath=$(which php) + +[LICENSE] +key = "${UMI_KEY}" +domain = "${UMI_DOMAIN}" +ip = "${UMI_IP}" + +[BACKUP] +mode = "none" + +[DB] +host = "${UMI_DB_HOSTNAME}" +user = "${UMI_DB_USERNAME}" +password = "${UMI_DB_PASSWORD}" +dbname = "${UMI_DB_NAME}" +port = "${UMI_DB_PORT}" + +[SUPERVISOR] +login = "umi" +password = "umi" +lname = "umi" +fname = "umi" +mname = "umi" +email = "umi@umi.local" + +[DEMOSITE] +name = "${UMI_TEMPLATE}" + +[SETUP] +sleep=10 +download_by=25600 +EOF + +if [ ! -f "installer.php" ]; then + echo "Download Installer..." + curl -L http://updates.umi-cms.ru/updateserver \ + -d type=get-installer \ + -d ip=${UMI_IP} \ + -d host=${UMI_DOMAIN} \ + -d key=${UMI_KEY} \ + -d revision=last \ + -o installer.php +fi + +echo "Install..." +php -f installer.php > init.log +echo "DONE" diff --git a/example/readme.md b/example/readme.md new file mode 100644 index 0000000..e69de29 From 3c99b7637ce84d3db259189cb04d2e34f96fcef2 Mon Sep 17 00:00:00 2001 From: Ilya Rogov Date: Thu, 24 Aug 2017 09:06:22 +0300 Subject: [PATCH 2/2] Update docs --- Makefile | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 7e44052..3f0055e 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,20 @@ -duild: +.PHONY: test +.DEFAULT_GOAL := help + +help: ## Output usage documentation + @echo "Usage: make COMMAND [args]\n\nCommands:\n" + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' + +duild: ## Build necessary image for building packages cd image && IMAGE_NAME=php-fpm-7.1-alpine ../hooks/build -.PHONY: test -test: test-static-analysis test-environment +test: lint env-validate ## Run all tests -test-environment: duild +env-validate: duild ## Testing requirements for environment cd test && ./run.sh -test-static-analysis: - shellcheck --exclude=SC2148 Makefile +lint: ## Run static analysis + shellcheck --exclude=SC2148,SC2046 Makefile shellcheck hooks/* shellcheck test/*.sh shellcheck test/**/*.sh