From c50b7ca36c343d732731c285099cda7d3755190e Mon Sep 17 00:00:00 2001 From: nhanpham Date: Wed, 6 Mar 2019 14:22:51 +0700 Subject: [PATCH 1/8] added rewrite url for a subfolder --- etc/nginx/default.conf | 13 ++++++++++++- etc/nginx/default.template.conf | 31 ++++++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/etc/nginx/default.conf b/etc/nginx/default.conf index 1088f8f2a..fbf34fbbb 100644 --- a/etc/nginx/default.conf +++ b/etc/nginx/default.conf @@ -10,6 +10,17 @@ server { access_log /var/log/nginx/access.log; root /var/www/html/public; + set $virtualdir ""; + set $realdir ""; + + if ($request_uri ~ ^/([^/]*)/.*$ ) { + set $virtualdir /$1; + } + + if (-d "$document_root$virtualdir") { + set $realdir "${virtualdir}"; + } + location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; @@ -45,4 +56,4 @@ server { # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # fastcgi_param PATH_INFO $fastcgi_path_info; # } -# } \ No newline at end of file +# } diff --git a/etc/nginx/default.template.conf b/etc/nginx/default.template.conf index 2a485890f..3d76e28d9 100644 --- a/etc/nginx/default.template.conf +++ b/etc/nginx/default.template.conf @@ -10,6 +10,20 @@ server { access_log /var/log/nginx/access.log; root /var/www/html/public; + set $virtualdir ""; + set $realdir ""; + + if ($request_uri ~ ^/([^/]*)/.*$ ) { + set $virtualdir /$1; + } + + if (-d "$document_root$virtualdir") { + set $realdir "${virtualdir}"; + } + + location / { + try_files $uri $uri/ $realdir/index.php?$args; + } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; @@ -36,6 +50,21 @@ server { # access_log /var/log/nginx/access.log; # root /var/www/html/public; +# set $virtualdir ""; +# set $realdir ""; + +# if ($request_uri ~ ^/([^/]*)/.*$ ) { +# set $virtualdir /$1; +# } + +# if (-d "$document_root$virtualdir") { +# set $realdir "${virtualdir}"; +# } + +# location / { +# try_files $uri $uri/ $realdir/index.php?$args; +# } + # location ~ \.php$ { # try_files $uri =404; # fastcgi_split_path_info ^(.+\.php)(/.+)$; @@ -45,4 +74,4 @@ server { # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # fastcgi_param PATH_INFO $fastcgi_path_info; # } -# } \ No newline at end of file +# } From 768be13fa6a8e8d8d5872ce1761689c9635c8f3c Mon Sep 17 00:00:00 2001 From: Muhammad Kamran Date: Wed, 13 May 2020 00:35:29 +0200 Subject: [PATCH 2/8] Update .gitignore Added gitignore entry for Visual Studio code meta data folder --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7fbb7857b..9a4aa7a18 100644 --- a/.gitignore +++ b/.gitignore @@ -21,5 +21,8 @@ nbproject/ /nbproject/private/ /nbproject/private/private.properties +# VSCode +.vscode/ + # SSL Certs -etc/ssl/ \ No newline at end of file +etc/ssl/ From a346bdb931c99120df3c9f306585cd9bed76f7aa Mon Sep 17 00:00:00 2001 From: Vincent Letourneau Date: Thu, 24 Sep 2020 13:20:25 +0200 Subject: [PATCH 3/8] Update MySQL to 8 version --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 760f38cbc..1138e9315 100644 --- a/.env +++ b/.env @@ -11,7 +11,7 @@ NGINX_HOST=localhost PHP_VERSION=latest # MySQL -MYSQL_VERSION=5.7.22 +MYSQL_VERSION=8.0.21 MYSQL_HOST=mysql MYSQL_DATABASE=test MYSQL_ROOT_USER=root From b99d4f01de8c8885591bd1c3383747e05b7bef65 Mon Sep 17 00:00:00 2001 From: Vincent Letourneau Date: Thu, 24 Sep 2020 13:21:57 +0200 Subject: [PATCH 4/8] Update README - Remove sudo for docker commands - Replacement of the documentation generator by PHPDoc Too many problems with "apigen" dependencies and it seems to not be maintained. --- README.md | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 6c736c0f3..faae0b8b9 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,12 @@ ___ ## Install prerequisites +To run the docker commands without using **sudo** you must add the **docker** group to **your-user**: + +``` +sudo usermod -aG docker your-user +``` + For now, this project has been mainly created for Unix `(Linux/MacOS)`. Perhaps it could work on Windows. All requisites should be available for your distribution. The most important are : @@ -145,7 +151,7 @@ If you modify the host name, do not forget to add it to the `/etc/hosts` file. 1. Generate SSL certificates ```sh - source .env && sudo docker run --rm -v $(pwd)/etc/ssl:/certificates -e "SERVER=$NGINX_HOST" jacoelho/generate-certificate + source .env && docker run --rm -v $(pwd)/etc/ssl:/certificates -e "SERVER=$NGINX_HOST" jacoelho/generate-certificate ``` 2. Configure Nginx @@ -198,13 +204,13 @@ ___ 2. Start the application : ```sh - sudo docker-compose up -d + docker-compose up -d ``` **Please wait this might take a several minutes...** ```sh - sudo docker-compose logs -f # Follow log output + docker-compose logs -f # Follow log output ``` 3. Open your favorite browser : @@ -216,7 +222,7 @@ ___ 4. Stop and clear services ```sh - sudo docker-compose down -v + docker-compose down -v ``` ___ @@ -245,7 +251,7 @@ When developing, you can use [Makefile](https://en.wikipedia.org/wiki/Make_(soft Start the application : ```sh -sudo make docker-start +make docker-start ``` Show help : @@ -261,49 +267,49 @@ ___ ### Installing package with composer ```sh -sudo docker run --rm -v $(pwd)/web/app:/app composer require symfony/yaml +docker run --rm -v $(pwd)/web/app:/app composer require symfony/yaml ``` ### Updating PHP dependencies with composer ```sh -sudo docker run --rm -v $(pwd)/web/app:/app composer update +docker run --rm -v $(pwd)/web/app:/app composer update ``` ### Generating PHP API documentation ```sh -sudo docker-compose exec -T php php -d memory_limit=256M -d xdebug.profiler_enable=0 ./app/vendor/bin/apigen generate app/src --destination ./app/doc +docker run --rm -v $(pwd):/data phpdoc/phpdoc -i=vendor/ -d /data/web/app/src -t /data/web/app/doc ``` ### Testing PHP application with PHPUnit ```sh -sudo docker-compose exec -T php ./app/vendor/bin/phpunit --colors=always --configuration ./app +docker-compose exec -T php ./app/vendor/bin/phpunit --colors=always --configuration ./app ``` ### Fixing standard code with [PSR2](http://www.php-fig.org/psr/psr-2/) ```sh -sudo docker-compose exec -T php ./app/vendor/bin/phpcbf -v --standard=PSR2 ./app/src +docker-compose exec -T php ./app/vendor/bin/phpcbf -v --standard=PSR2 ./app/src ``` ### Checking the standard code with [PSR2](http://www.php-fig.org/psr/psr-2/) ```sh -sudo docker-compose exec -T php ./app/vendor/bin/phpcs -v --standard=PSR2 ./app/src +docker-compose exec -T php ./app/vendor/bin/phpcs -v --standard=PSR2 ./app/src ``` ### Analyzing source code with [PHP Mess Detector](https://phpmd.org/) ```sh -sudo docker-compose exec -T php ./app/vendor/bin/phpmd ./app/src text cleancode,codesize,controversial,design,naming,unusedcode +docker-compose exec -T php ./app/vendor/bin/phpmd ./app/src text cleancode,codesize,controversial,design,naming,unusedcode ``` ### Checking installed PHP extensions ```sh -sudo docker-compose exec php php -m +docker-compose exec php php -m ``` ### Handling database @@ -311,7 +317,7 @@ sudo docker-compose exec php php -m #### MySQL shell access ```sh -sudo docker exec -it mysql bash +docker exec -it mysql bash ``` and @@ -327,13 +333,13 @@ mkdir -p data/db/dumps ``` ```sh -source .env && sudo docker exec $(sudo docker-compose ps -q mysqldb) mysqldump --all-databases -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" > "data/db/dumps/db.sql" +source .env && docker exec $(docker-compose ps -q mysqldb) mysqldump --all-databases -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" > "data/db/dumps/db.sql" ``` #### Restoring a backup of all databases ```sh -source .env && sudo docker exec -i $(sudo docker-compose ps -q mysqldb) mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" < "data/db/dumps/db.sql" +source .env && docker exec -i $(docker-compose ps -q mysqldb) mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" < "data/db/dumps/db.sql" ``` #### Creating a backup of single database @@ -341,13 +347,13 @@ source .env && sudo docker exec -i $(sudo docker-compose ps -q mysqldb) mysql -u **`Notice:`** Replace "YOUR_DB_NAME" by your custom name. ```sh -source .env && sudo docker exec $(sudo docker-compose ps -q mysqldb) mysqldump -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" --databases YOUR_DB_NAME > "data/db/dumps/YOUR_DB_NAME_dump.sql" +source .env && docker exec $(docker-compose ps -q mysqldb) mysqldump -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" --databases YOUR_DB_NAME > "data/db/dumps/YOUR_DB_NAME_dump.sql" ``` #### Restoring a backup of single database ```sh -source .env && sudo docker exec -i $(sudo docker-compose ps -q mysqldb) mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" < "data/db/dumps/YOUR_DB_NAME_dump.sql" +source .env && docker exec -i $(docker-compose ps -q mysqldb) mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" < "data/db/dumps/YOUR_DB_NAME_dump.sql" ``` From a30d340d9654d425a12cf30552f2462ea358cc27 Mon Sep 17 00:00:00 2001 From: Vincent Letourneau Date: Thu, 24 Sep 2020 13:28:23 +0200 Subject: [PATCH 5/8] Add rewrite url for a subfolder Pull request by @phambanhan --- etc/nginx/default.conf | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/etc/nginx/default.conf b/etc/nginx/default.conf index fbf34fbbb..17db04a90 100644 --- a/etc/nginx/default.conf +++ b/etc/nginx/default.conf @@ -21,6 +21,9 @@ server { set $realdir "${virtualdir}"; } + location / { + try_files $uri $uri/ $realdir/index.php?$args; + } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; @@ -47,6 +50,21 @@ server { # access_log /var/log/nginx/access.log; # root /var/www/html/public; +# set $virtualdir ""; +# set $realdir ""; + +# if ($request_uri ~ ^/([^/]*)/.*$ ) { +# set $virtualdir /$1; +# } + +# if (-d "$document_root$virtualdir") { +# set $realdir "${virtualdir}"; +# } + +# location / { +# try_files $uri $uri/ $realdir/index.php?$args; +# } + # location ~ \.php$ { # try_files $uri =404; # fastcgi_split_path_info ^(.+\.php)(/.+)$; From 2e6ab12c3d4ffc3b9bbe1bef5d5d38baff5a8710 Mon Sep 17 00:00:00 2001 From: Vincent Letourneau Date: Thu, 24 Sep 2020 13:31:51 +0200 Subject: [PATCH 6/8] Add some documentations for phpdoc --- web/app/src/Foo.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/web/app/src/Foo.php b/web/app/src/Foo.php index f94d679cd..f982f487f 100644 --- a/web/app/src/Foo.php +++ b/web/app/src/Foo.php @@ -1,9 +1,19 @@ Date: Thu, 24 Sep 2020 13:32:04 +0200 Subject: [PATCH 7/8] Update some commands Change documentation generator with PHPDoc. Apigen poses too many dependency conflicts and does not seem to be maintained. PHPDoc offers a Docker image allowing to externalize the installation and the dependencies. --- Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 86b5d3c43..b396bfdf2 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ init: @$(shell cp -n $(shell pwd)/web/app/composer.json.dist $(shell pwd)/web/app/composer.json 2> /dev/null) apidoc: - @docker-compose exec -T php php -d memory_limit=256M -d xdebug.profiler_enable=0 ./app/vendor/bin/apigen generate app/src --destination app/doc + @docker run --rm -v $(shell pwd):/data phpdoc/phpdoc -i=vendor/ -d /data/web/app/src -t /data/web/app/doc @make resetOwner clean: @@ -70,8 +70,7 @@ mysql-restore: phpmd: @docker-compose exec -T php \ ./app/vendor/bin/phpmd \ - ./app/src \ - text cleancode,codesize,controversial,design,naming,unusedcode + ./app/src text cleancode,codesize,controversial,design,naming,unusedcode test: code-sniff @docker-compose exec -T php ./app/vendor/bin/phpunit --colors=always --configuration ./app/ From 2b2a131ff8805bec146c129e3233bf9cadb406bb Mon Sep 17 00:00:00 2001 From: Vincent Letourneau Date: Thu, 24 Sep 2020 13:37:46 +0200 Subject: [PATCH 8/8] Update of dependencies - Update PHPUnit, PHPCode_sniffer - Remove apigen --- web/app/composer.json.dist | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/web/app/composer.json.dist b/web/app/composer.json.dist index 1db4dfaa3..b4850f712 100644 --- a/web/app/composer.json.dist +++ b/web/app/composer.json.dist @@ -1,13 +1,11 @@ { "require": { - + "symfony/yaml": "^5.1" }, "require-dev": { - "apigen/apigen": "dev-master", "phpmd/phpmd": "@stable", - "phpunit/phpunit": "^7.0", - "roave/better-reflection": "dev-master", - "squizlabs/php_codesniffer": "3.*" + "phpunit/phpunit": "^9.0", + "squizlabs/php_codesniffer": "3.5.*" }, "autoload": { "psr-4": { @@ -21,4 +19,4 @@ }, "minimum-stability": "stable", "prefer-stable": true -} \ No newline at end of file +}