Loading .gitignore +1 −0 Original line number Diff line number Diff line deploy/ vendor/ .idea .DS_Store .gitlab-ci.yml +1 −1 Original line number Diff line number Diff line Loading @@ -19,4 +19,4 @@ cache: update-satis: stage: publish script: - update-satis - curl https://gest.unicaen.fr/packagist/update CHANGELOG.md +31 −9 Original line number Diff line number Diff line CHANGELOG ========= # CHANGELOG 1.0.1 (04/02/2020) ------------------ ## 3.2.1 - Mise à jour des dépendances avec Composer - Ajout de la colonne user_role.accessible_exterieur pour gérer le blocages de rôles depuis l'extérieur - Mise à jour des dépendances. - Ajout de `post-install-cmd` et de `post-create-project-cmd` utiles dans le `composer.json`. 1.0.0 (19/09/2019) ------------------ ## 3.2.0 ### Ajout - Simplification des configs pour Docker. ## 3.1.0 - Dépendance avec les versions 3.0 des bib unicaen. - Version avec une bdd postgres dans un service docker. - Création du fichier de licence LICENSE. - Création du script install.sh pour mimer ce qui est fait dans sygal. - Nouvelle façon de mettre le numéro de version dans la config (cf. bin/bump-version). ## 3.0.0 - Dépendances: montée possible en ZF 3. - Création d'un module démo avec bdd sqlite minimale. - Docker: modif des ports utilisés et passage à PHP 7.3. - Config pour tests unitaires. - Désactivation du validateur de session HttpUserAgent car peut provoquer une erreur 'Session validation failed' sur android. ## 1.0.1 - Mise à jour des dépendances avec Composer. - Ajout de la colonne user_role.accessible_exterieur pour gérer le blocages de rôles depuis l'extérieur. ## 1.0.0 - Embryon d'application. README.md +100 −16 Original line number Diff line number Diff line # Squelette d'application Unicaen Ce squelette d'application constitue un socle minimal pour entamer rapidement le développement d'une nouvelle application à la mode "Unicaen". ## Build et lancement du container Docker $ docker-compose up --build ## Création d'une nouvelle appli à partir du squelette ## Installation des dépendances PHP : Imaginons que nous voulons créer une nouvelle appli PHP 7.3 dans le répertoire `./newapp`. ### Préalable Nous aurons besoin de l'image Docker `unicaen-dev-php${PHP_VERSION}-apache` pour être dans un environnement PHP dont on maîtrise la version. Pour obtenir puis construire cette image, reportez-vous au dépôt [unicaen-image](https://git.unicaen.fr/open-source/docker/unicaen-image). ### Création des sources de l'application - Pour obtenir le master des sources du squelette d'application : ```bash APP_DIR=newapp git clone git@git.unicaen.fr:lib/unicaen/skeleton-application.git ${APP_DIR} cd ${APP_DIR} ``` - Puis pour installer les dépendances PHP : ```bash # si vous avez la joie d'être derrière un proxy : #HTTP_PROXY=http://10.14.128.99:3128 #HTTPS_PROXY=${HTTP_PROXY} #NO_PROXY=unicaen.fr,localhost PHP_VERSION=7.3 docker run \ --rm \ -v $PWD:/app \ -w /app \ --env HTTP_PROXY \ --env HTTPS_PROXY \ --env NO_PROXY \ unicaen-dev-php${PHP_VERSION}-apache \ composer install ``` - Puis pour installer les fichiers de config exemples : ```bash docker run \ --rm \ -v $PWD:/app \ -w /app \ --env HTTP_PROXY \ --env HTTPS_PROXY \ --env NO_PROXY \ unicaen-dev-php${PHP_VERSION}-apache \ composer run-script "post-create-project-cmd" ``` ### Droits d'écriture Comme les commandes lancées via Docker (comme ici, `composer`) sont exécutées en `root`, il faut reprendre la main sur les fichiers créés. ```bash sudo chown -R ${USER}:${USER} . ``` ### Création du dépôt git ```bash git init git add . git commit -m "Squelette de l'application" git push --set-upstream git@git.unicaen.fr:dsi/${APP_DIR}.git master ``` *NB : la création du dépôt git de cette façon n'est possible que si vous disposez des droits suffisants dans le namespace gitlab spécifié.* ## Construction et lancement du container Docker ```bash docker-compose up --build ``` $ docker-compose run --rm skeleton-application composer install --no-suggest ## Module Demo Loading @@ -16,32 +96,35 @@ permettant d'avoir une authentification locale qui fonctionne. Cette base de données est fournie par le service `db` (fichier de config `docker-compose.yml`). Il y a également un service `adminer` fournissant de quoi explorer la base de données avec l'outil ["Adminer"](https://www.adminer.org) en vous rendant à l'adresse `http://localhost:9080` et en utilisant les informations de connexion à la bdd présentes dans le `docker-compose.yml`. Pour explorer/administrer la base de données de l'extérieur du container (avec PHPStorm par exemple), ["Adminer"](https://www.adminer.org) en vous rendant à l'adresse `http://localhost:9080` (sélectionner "PostgeSQL" et utiliser les informations de connexion à la bdd présentes dans le `docker-compose.yml`). Pour explorer/administrer la base de données *de l'extérieur du container* (avec PHPStorm par exemple), l'adresse de la base est cette fois `localhost:8432`. NB : - Grâce au montage `./data/db:/var/lib/postgresql/data` spécifié dans `docker-compose.yml`, la base de données est persistée dans le répertoire `data/db` de l'appli. persistée dans le répertoire `data/db` de l'appli (d'ailleurs, ne pas oublier de faire un `sudo chmod -R 777 data/db`). - Les scripts de création de la base de données exécutés au lancement du container (si la base n'existe pas déjà) se trouvent dans le répertoire `./docker/db` de l'appli et sont fournis au container grâce au montage `./docker/db/:/docker-entrypoint-initdb.d/`. ## Configuration du projet - Renommez `config/autoload/local.php.dist` en `local.php` : - Si cela n'a pas déjà été fait par une des `post-create-project-cmd` du `composer.json`, créez le fichier de config `config/autoload/local.php` à partir du `.dist` : ```bash mv config/autoload/local.php.dist config/autoload/local.php cp -r config/autoload/local.php.dist config/autoload/local.php ``` - Copiez dans votre dossier `config/autoload` les fichiers de configuration locaux et globaux `.dist` des bibliothèques utilisées sans leur extension `.dist` : - Si cela n'a pas déjà été fait par une des `post-create-project-cmd` du `composer.json`, créez dans `config/autoload` les fichiers de configuration locaux et globaux des bibliothèques utilisées à partir des `.dist` : ```bash cp vendor/unicaen/app/config/unicaen-app.global.php.dist config/autoload/unicaen-app.global.php cp vendor/unicaen/app/config/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php cp vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php cp vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unicaen-auth.local.php cp -r vendor/unicaen/app/config/unicaen-app.global.php.dist config/autoload/unicaen-app.global.php cp -r vendor/unicaen/app/config/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php cp -r vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php cp -r vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unicaen-auth.local.php ``` - Le cas échéant, reportez-vous aux docs des modules concernés pour adapter ces fichiers de configuration Loading @@ -49,6 +132,7 @@ cp vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unica - [unicaen/app](https://git.unicaen.fr/lib/unicaen/app) - [unicaen/auth](https://git.unicaen.fr/lib/unicaen/auth) ## Test de l'application Théoriquement, l'application devrait être accessible à l'adresse [https://localhost:8443](https://localhost:8443). Loading composer.json +14 −2 Original line number Diff line number Diff line { "name": "unicaen/skeleton-application", "description": "Squelette d'application Unicaen (Laminas aka ZF3)", "description": "Squelette d'application Unicaen (Laminas)", "repositories": [ { "type": "composer", Loading @@ -22,7 +22,19 @@ }, "scripts": { "post-install-cmd": [ "mkdir -p data/DoctrineORMModule/Proxy ; chmod -R 777 data/DoctrineORMModule/Proxy" "cp -r vendor/unicaen/app/public/unicaen public/", "mkdir -p vendor/mpdf/mpdf/ttfontdata && chmod -R 777 vendor/mpdf/mpdf/ttfontdata", "mkdir -p data/cache && chmod -R 777 data/cache && rm -rf data/cache/*", "mkdir -p data/DoctrineModule/cache && chmod -R 777 data/DoctrineModule/cache && rm -rf data/DoctrineModule/cache/*", "mkdir -p data/DoctrineORMModule/Proxy && chmod -R 777 data/DoctrineORMModule/Proxy && rm -rf data/DoctrineORMModule/Proxy/*" ], "post-create-project-cmd": [ "cp -n config/autoload/local.php.dist config/autoload/local.php", "cp -n vendor/unicaen/app/config/unicaen-app.global.php.dist config/autoload/unicaen-app.global.php", "cp -n vendor/unicaen/app/config/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php", "cp -n vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php", "cp -n vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unicaen-auth.local.php", "mkdir -p data/db && chmod -R 777 data/db" ] }, "autoload": { Loading Loading
.gitlab-ci.yml +1 −1 Original line number Diff line number Diff line Loading @@ -19,4 +19,4 @@ cache: update-satis: stage: publish script: - update-satis - curl https://gest.unicaen.fr/packagist/update
CHANGELOG.md +31 −9 Original line number Diff line number Diff line CHANGELOG ========= # CHANGELOG 1.0.1 (04/02/2020) ------------------ ## 3.2.1 - Mise à jour des dépendances avec Composer - Ajout de la colonne user_role.accessible_exterieur pour gérer le blocages de rôles depuis l'extérieur - Mise à jour des dépendances. - Ajout de `post-install-cmd` et de `post-create-project-cmd` utiles dans le `composer.json`. 1.0.0 (19/09/2019) ------------------ ## 3.2.0 ### Ajout - Simplification des configs pour Docker. ## 3.1.0 - Dépendance avec les versions 3.0 des bib unicaen. - Version avec une bdd postgres dans un service docker. - Création du fichier de licence LICENSE. - Création du script install.sh pour mimer ce qui est fait dans sygal. - Nouvelle façon de mettre le numéro de version dans la config (cf. bin/bump-version). ## 3.0.0 - Dépendances: montée possible en ZF 3. - Création d'un module démo avec bdd sqlite minimale. - Docker: modif des ports utilisés et passage à PHP 7.3. - Config pour tests unitaires. - Désactivation du validateur de session HttpUserAgent car peut provoquer une erreur 'Session validation failed' sur android. ## 1.0.1 - Mise à jour des dépendances avec Composer. - Ajout de la colonne user_role.accessible_exterieur pour gérer le blocages de rôles depuis l'extérieur. ## 1.0.0 - Embryon d'application.
README.md +100 −16 Original line number Diff line number Diff line # Squelette d'application Unicaen Ce squelette d'application constitue un socle minimal pour entamer rapidement le développement d'une nouvelle application à la mode "Unicaen". ## Build et lancement du container Docker $ docker-compose up --build ## Création d'une nouvelle appli à partir du squelette ## Installation des dépendances PHP : Imaginons que nous voulons créer une nouvelle appli PHP 7.3 dans le répertoire `./newapp`. ### Préalable Nous aurons besoin de l'image Docker `unicaen-dev-php${PHP_VERSION}-apache` pour être dans un environnement PHP dont on maîtrise la version. Pour obtenir puis construire cette image, reportez-vous au dépôt [unicaen-image](https://git.unicaen.fr/open-source/docker/unicaen-image). ### Création des sources de l'application - Pour obtenir le master des sources du squelette d'application : ```bash APP_DIR=newapp git clone git@git.unicaen.fr:lib/unicaen/skeleton-application.git ${APP_DIR} cd ${APP_DIR} ``` - Puis pour installer les dépendances PHP : ```bash # si vous avez la joie d'être derrière un proxy : #HTTP_PROXY=http://10.14.128.99:3128 #HTTPS_PROXY=${HTTP_PROXY} #NO_PROXY=unicaen.fr,localhost PHP_VERSION=7.3 docker run \ --rm \ -v $PWD:/app \ -w /app \ --env HTTP_PROXY \ --env HTTPS_PROXY \ --env NO_PROXY \ unicaen-dev-php${PHP_VERSION}-apache \ composer install ``` - Puis pour installer les fichiers de config exemples : ```bash docker run \ --rm \ -v $PWD:/app \ -w /app \ --env HTTP_PROXY \ --env HTTPS_PROXY \ --env NO_PROXY \ unicaen-dev-php${PHP_VERSION}-apache \ composer run-script "post-create-project-cmd" ``` ### Droits d'écriture Comme les commandes lancées via Docker (comme ici, `composer`) sont exécutées en `root`, il faut reprendre la main sur les fichiers créés. ```bash sudo chown -R ${USER}:${USER} . ``` ### Création du dépôt git ```bash git init git add . git commit -m "Squelette de l'application" git push --set-upstream git@git.unicaen.fr:dsi/${APP_DIR}.git master ``` *NB : la création du dépôt git de cette façon n'est possible que si vous disposez des droits suffisants dans le namespace gitlab spécifié.* ## Construction et lancement du container Docker ```bash docker-compose up --build ``` $ docker-compose run --rm skeleton-application composer install --no-suggest ## Module Demo Loading @@ -16,32 +96,35 @@ permettant d'avoir une authentification locale qui fonctionne. Cette base de données est fournie par le service `db` (fichier de config `docker-compose.yml`). Il y a également un service `adminer` fournissant de quoi explorer la base de données avec l'outil ["Adminer"](https://www.adminer.org) en vous rendant à l'adresse `http://localhost:9080` et en utilisant les informations de connexion à la bdd présentes dans le `docker-compose.yml`. Pour explorer/administrer la base de données de l'extérieur du container (avec PHPStorm par exemple), ["Adminer"](https://www.adminer.org) en vous rendant à l'adresse `http://localhost:9080` (sélectionner "PostgeSQL" et utiliser les informations de connexion à la bdd présentes dans le `docker-compose.yml`). Pour explorer/administrer la base de données *de l'extérieur du container* (avec PHPStorm par exemple), l'adresse de la base est cette fois `localhost:8432`. NB : - Grâce au montage `./data/db:/var/lib/postgresql/data` spécifié dans `docker-compose.yml`, la base de données est persistée dans le répertoire `data/db` de l'appli. persistée dans le répertoire `data/db` de l'appli (d'ailleurs, ne pas oublier de faire un `sudo chmod -R 777 data/db`). - Les scripts de création de la base de données exécutés au lancement du container (si la base n'existe pas déjà) se trouvent dans le répertoire `./docker/db` de l'appli et sont fournis au container grâce au montage `./docker/db/:/docker-entrypoint-initdb.d/`. ## Configuration du projet - Renommez `config/autoload/local.php.dist` en `local.php` : - Si cela n'a pas déjà été fait par une des `post-create-project-cmd` du `composer.json`, créez le fichier de config `config/autoload/local.php` à partir du `.dist` : ```bash mv config/autoload/local.php.dist config/autoload/local.php cp -r config/autoload/local.php.dist config/autoload/local.php ``` - Copiez dans votre dossier `config/autoload` les fichiers de configuration locaux et globaux `.dist` des bibliothèques utilisées sans leur extension `.dist` : - Si cela n'a pas déjà été fait par une des `post-create-project-cmd` du `composer.json`, créez dans `config/autoload` les fichiers de configuration locaux et globaux des bibliothèques utilisées à partir des `.dist` : ```bash cp vendor/unicaen/app/config/unicaen-app.global.php.dist config/autoload/unicaen-app.global.php cp vendor/unicaen/app/config/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php cp vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php cp vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unicaen-auth.local.php cp -r vendor/unicaen/app/config/unicaen-app.global.php.dist config/autoload/unicaen-app.global.php cp -r vendor/unicaen/app/config/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php cp -r vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php cp -r vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unicaen-auth.local.php ``` - Le cas échéant, reportez-vous aux docs des modules concernés pour adapter ces fichiers de configuration Loading @@ -49,6 +132,7 @@ cp vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unica - [unicaen/app](https://git.unicaen.fr/lib/unicaen/app) - [unicaen/auth](https://git.unicaen.fr/lib/unicaen/auth) ## Test de l'application Théoriquement, l'application devrait être accessible à l'adresse [https://localhost:8443](https://localhost:8443). Loading
composer.json +14 −2 Original line number Diff line number Diff line { "name": "unicaen/skeleton-application", "description": "Squelette d'application Unicaen (Laminas aka ZF3)", "description": "Squelette d'application Unicaen (Laminas)", "repositories": [ { "type": "composer", Loading @@ -22,7 +22,19 @@ }, "scripts": { "post-install-cmd": [ "mkdir -p data/DoctrineORMModule/Proxy ; chmod -R 777 data/DoctrineORMModule/Proxy" "cp -r vendor/unicaen/app/public/unicaen public/", "mkdir -p vendor/mpdf/mpdf/ttfontdata && chmod -R 777 vendor/mpdf/mpdf/ttfontdata", "mkdir -p data/cache && chmod -R 777 data/cache && rm -rf data/cache/*", "mkdir -p data/DoctrineModule/cache && chmod -R 777 data/DoctrineModule/cache && rm -rf data/DoctrineModule/cache/*", "mkdir -p data/DoctrineORMModule/Proxy && chmod -R 777 data/DoctrineORMModule/Proxy && rm -rf data/DoctrineORMModule/Proxy/*" ], "post-create-project-cmd": [ "cp -n config/autoload/local.php.dist config/autoload/local.php", "cp -n vendor/unicaen/app/config/unicaen-app.global.php.dist config/autoload/unicaen-app.global.php", "cp -n vendor/unicaen/app/config/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php", "cp -n vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php", "cp -n vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unicaen-auth.local.php", "mkdir -p data/db && chmod -R 777 data/db" ] }, "autoload": { Loading