diff --git a/bin/ose b/bin/ose new file mode 100755 index 0000000000000000000000000000000000000000..cff424c7cabef5a28704356209becff47fb0c2f2 --- /dev/null +++ b/bin/ose @@ -0,0 +1,327 @@ +#!/usr/bin/env php +<?php + +$c = new Console(); +$oa = new OseAdmin($c); + +$c->printMainTitle("OSE", 15); + +$action = isset($_SERVER['argv'][1]) ? $_SERVER['argv'][1] : ''; + +switch ($action) { + case 'update': + update($c, $oa); + break; + case 'notifier-indicateurs': + $oa->exec('notifier indicateurs'); + break; + default: + help($c, $oa); + break; +} + + +function update(Console $c, OseAdmin $oa) +{ + $osedir = "/var/www/ose/deploy";//dirname(__DIR__); + + // Choix de la version + $c->println("Mise à jour de OSE"); + $c->println("Assurez-vous bien d'avoir mis OSE en mode maintenance avant de démarrer\n(pressez Entrée pour continuer)..."); + $c->getInput(); + + $c->exec([ + "cd $osedir", + "git fetch --all --tags --prune", + ], false); + + $c->println("Sélection de la version à déployer", $c::COLOR_LIGHT_CYAN); + $c->println("La version actuellement installée est la ".$oa->currentVersion($osedir)); + $c->println("Voici la liste des versions de OSE disponibles:"); + $tags = $oa->getTags(); + foreach ($tags as $tag) { + $c->println($tag); + } + $ok = false; + while (!$ok) { + $c->print("Veuillez choisir une version à déployer: "); + $version = $c->getInput(); + if ($oa->tagIsValid($version)) { + $ok = true; + } else { + $c->println("$version n'est pas dans la liste des versions disponibles."); + } + } + + // Récupération des sources + $c->println("\nMise à jour des fichiers à partir de GIT", $c::COLOR_LIGHT_CYAN); + $c->passthru([ + "cd $osedir", + "git checkout tags/$version", + ]); + $oa->writeVersion($osedir, $version); + + // Récupération des dépendances + $c->println("\nMise à jour des dépendances à l'aide de Composer", $c::COLOR_LIGHT_CYAN); + $c->passthru([ + "cd $osedir", + "php composer.phar self-update", + "php composer.phar install", + ]); + + // Conclusion + $c->println("\nFin de la mise à jour des fichiers", $c::COLOR_LIGHT_GREEN); + $c->println("Il reste encore votre base de données à mettre à jour."); + $c->println("N'oubliez pas de sortir du mode maintenance!"); + $c->println(''); +} + + +function help(Console $c, OseAdmin $oa) +{ + $c->println('Actions possibles :'); + $c->println(" - update : Mise à jour de l'application"); + $c->println(" - notifier-indicateurs : Envoi des mails relatifs aux indicateurs"); +} + + + + + +/************************************************************ + * Classes utiles * + ************************************************************/ +class OseAdmin +{ + const OSE_ORIGIN = 'git@git.unicaen.fr:dsi/OSE.git'; + + /** + * @var Console + */ + protected $console; + + /** + * @var array + */ + private $tags = false; + + + + /** + * OseAdmin constructor. + * + * @param Console $console + */ + public function __construct(Console $console) + { + $this->console = $console; + } + + + + public function gitlabIsReachable(): bool + { + $gitCheck = $this->console->exec("git ls-remote --heads " . self::OSE_ORIGIN, false); + + return (false !== strpos(implode(' ', $gitCheck), 'heads/master')); + } + + + + public function getTags(): array + { + if (false === $this->tags) { + $this->tags = []; + + $ts = $this->console->exec("git ls-remote --tags --refs " . self::OSE_ORIGIN, false); + foreach ($ts as $tag) { + $this->tags[] = substr($tag, strpos($tag, 'refs/tags/') + 10); + } + } + + return $this->tags; + } + + + + /** + * @param string $tag + * + * @return bool + */ + public function tagIsValid(string $tag): bool + { + return in_array($tag, $this->getTags()); + } + + + + public function currentVersion(string $osedir): string + { + $vf = $this->getVersionFile($osedir); + if (!file_exists($vf)) { + return 'inconnue'; + } + + return file_get_contents($vf); + } + + + + public function writeVersion(string $osedir, string $version) + { + $vf = $this->getVersionFile($osedir); + file_put_contents($vf, $version); + } + + + + private function getVersionFile(string $osedir): string + { + if ('/' == substr($osedir, -1)) { + return $osedir . 'VERSION'; + } else { + return $osedir . '/VERSION'; + } + } + + + + public function exec($args) + { + $this->console->exec("php ../public/index.php " . $args); + } +} + + + + + +class Console +{ + const COLOR_BLACK = '0;30'; + const COLOR_DARK_GRAY = '1;30'; + const COLOR_BLUE = '0;34'; + const COLOR_LIGHT_BLUE = '1;34'; + const COLOR_GREEN = '0;32'; + const COLOR_LIGHT_GREEN = '1;32'; + const COLOR_CYAN = '0;36'; + const COLOR_LIGHT_CYAN = '1;36'; + const COLOR_RED = '0;31'; + const COLOR_LIGHT_RED = '1;31'; + const COLOR_PURPLE = '0;35'; + const COLOR_LIGHT_PURPLE = '1;35'; + const COLOR_BROWN = '0;33'; + const COLOR_YELLOW = '1;33'; + const COLOR_LIGHT_GRAY = '0;37'; + const COLOR_WHITE = '1;37'; + + const BG_BLACK = '40'; + const BG_RED = '41'; + const BG_GREEN = '42'; + const BG_YELLOW = '43'; + const BG_BLUE = '44'; + const BG_MAGENTA = '45'; + const BG_CYAN = '46'; + const BG_LIGHT_GRAY = '47'; + + + + public function printMainTitle($title, $spaces = 1) + { + $pstr = str_repeat(' ', $spaces); + $t = $pstr . $title . $pstr; + + $len = mb_strlen($t); + + echo '╔' . str_repeat('═', $len) . "╗\n"; + echo '║' . str_repeat(' ', $len) . "║\n"; + echo "║" . $t . "║\n"; + echo '║' . str_repeat(' ', $len) . "║\n"; + echo '╚' . str_repeat('═', $len) . "╝\n\n"; + } + + + + public function print($text, $color = null, $bgColor = null) + { + if ($bgColor) $bgColor = ';' . $bgColor; + + if (!$color && !$bgColor) { + echo $text; + } else { + echo "\e[$color$bgColor" . "m$text\e[0m"; + } + } + + + + public function println($text, $color = null, $bgColor = null) + { + $this->print($text, $color, $bgColor); + echo "\n"; + } + + + + public function gestExitCode($code) + { + if (0 == $code) return; + + $this->printDie("Une erreur ($code) est survenue. Le script est stoppé"); + } + + + + public function printDie($text) + { + $this->println($text, self::COLOR_LIGHT_RED); + $this->println(' -- FIN Prématurée de l\'exécution du script -- ', null, self::BG_RED); + die("\n"); + } + + + + public function getInput() + { + return trim(fgets(STDIN)); + } + + + + public function exec($command, $autoDisplay = true) + { + if (is_array($command)) { + $command = implode(';', $command); + } + + exec($command, $output, $return); + if ($autoDisplay) { + echo implode("\n", $output) . "\n"; + } + $this->gestExitCode($return); + + return $output; + } + + + + public function passthru($command) + { + if (is_array($command)) { + $command = implode(';', $command); + } + + passthru($command, $returnVar); + $this->gestExitCode($returnVar); + + return $returnVar; + } + + + + public function strPad($input, $padLength = null, $padString = ' ') + { + return utf8_encode(str_pad(utf8_decode($input), $padLength, $padString)); + } +} \ No newline at end of file diff --git a/bin/ose-deploy b/bin/ose-deploy new file mode 100644 index 0000000000000000000000000000000000000000..9c2c5449b27ed3752f7ba245c7b96ce643f56fff --- /dev/null +++ b/bin/ose-deploy @@ -0,0 +1,342 @@ +#!/usr/bin/env php +<?php + +$c = new Console(); +$od = new OseDeploy($c); + +$c->printMainTitle("Déploiement de OSE", 13); + +// Mise en place de la clé SSH +$c->println("\nMise en place de la clé SSH vers le GitLab hébergeant OSE", $c::COLOR_LIGHT_CYAN); +$c->println("L'accès au serveur Gitlab doit se faire par SSH."); +$c->print("Voulez-vous créer une clé SSH pour accéder au serveur Gitlab hébergeant OSE ? (o/n, n par défaut) "); +$needKey = $c->getInput(); +if (in_array($needKey, ["o", "O"])) { + $c->println("Génération de la clé SSH..."); + $c->print("Veuillez préciser l'adresse mail du compte utilisé pour accéder au Gitlab de OSE: "); + $gitlabMail = $c->getInput(); + $c->passthru("ssh-keygen -t rsa -C $gitlabMail -b 4096"); + + $c->println("Intégrez ensuite votre clé SSH dans Gitlab. Ensuite, appuyez sur \"Entrée\" pour continuer..."); + $c->getInput(); + if ($od->gitlabIsReachable()) { + $c->println("Votre clé SSH a bien été déployée et est fonctionnelle.", $c::COLOR_LIGHT_GREEN); + } else { + $c->printDie("L'accès par SSH au serveur GitLab de OSE ne fonctionne pas. Merci de déployer par vous-même une clé, car vous en aurez besoin pour la suite de la procédure."); + } +} else { + if (!$od->gitlabIsReachable()) { + $c->printDie("L'accès par SSH au serveur GitLab de OSE ne fonctionne pas. Merci de déployer par vous-même une clé, car vous en aurez besoin pour la suite de la procédure."); + } +} + + +// Création du dossier +$c->println("\nCréation du dossier et initialisation de GIT", $c::COLOR_LIGHT_CYAN); +$c->print("Veuillez indiquer un nouveau répertoire où implanter OSE: "); +$osedir = $c->getInput(); + +if (file_exists($osedir)){ + $c->printDie("Le répertoire $osedir existe déjà. Merci d'en spécifier un nouveau."); +} + +$c->exec([ + "mkdir $osedir", + "cd $osedir", + "git init", + "git remote add origin " . $od::OSE_ORIGIN, + "git fetch --all --tags --prune", +]); + + + +// Choix de la version +$c->println("\nSélection de la version à déployer", $c::COLOR_LIGHT_CYAN); +$c->println("Voici la liste des versions de OSE disponibles:"); +$tags = $od->getTags(); +foreach ($tags as $tag) { + $c->println($tag); +} +$ok = false; +while (!$ok) { + $c->print("Veuillez choisir une version à déployer: "); + $version = $c->getInput(); + if ($od->tagIsValid($version)) { + $ok = true; + } else { + $c->println("$version n'est pas dans la liste des versions disponibles."); + } +} + + +// Récupération des sources +$c->println("\nDéploiement à partir des sources GIT", $c::COLOR_LIGHT_CYAN); +$c->exec([ + "cd $osedir", + "git checkout tags/$version", + "mkdir data/cache", + "chmod 777 data/cache", + //"chmod +7 bin/ose", +]); +$od->writeVersion($osedir, $version); + + + +// Récupération de Composer +$c->println("\nRécupération de l'outil de gestion des dépendances Composer", $c::COLOR_LIGHT_CYAN); +$c->passthru("cd $osedir;wget https://getcomposer.org/composer.phar"); + +// Récupération des dépendances +$c->println("\nChargement des dépendances à l'aide de Composer", $c::COLOR_LIGHT_CYAN); +$c->passthru("cd $osedir;php composer.phar install"); + +// Mise en place des tâches CRON... + + +// Conclusion +$c->println("\nFin du script d'installation des fichiers", $c::COLOR_LIGHT_GREEN); +$c->println("Il reste encore six étapes à réaliser pour que OSE soit pleinement fonctionnel :"); +$c->println(" 1 - Configurez votre serveur Apache"); +$c->println(" 2 - Initialisez la base de données de OSE avec le script prévu à cet effet"); +$c->println(" 3 - Mettez en place la configuration locale de l'application"); +$c->println(" 4 - Une fois bien connecté, configurez vos connecteurs en vous appuyant\n le cas échéant sur ceux qui vous sont fournis"); +$c->println(" 5 - Mettez en place les tâches CRON et les JOBS Oracle nécessaires (envoi de mails pour les infdicateurs, Synchronisatio automatique, etc."); +$c->println(" 6 - Paramétrez l'application pour l'adapter à vos besoins"); +$c->println(''); +$c->println("Vous trouverez plus d'informations dans la procédure d'installation située dans\n$osedir/data/Déploiement/Procédure d'installation.pdf"); +$c->println("OSE possède également un guide de l'administrateur pour vous aider à configurer l'application"); +$c->println(''); + + + + +/************************************************************ + * Classes utiles * + ************************************************************/ +class OseDeploy +{ + const OSE_ORIGIN = 'git@git.unicaen.fr:dsi/OSE.git'; + + /** + * @var Console + */ + protected $console; + + /** + * @var array + */ + private $tags = false; + + + + /** + * OseDeploy constructor. + * + * @param Console $console + */ + public function __construct(Console $console) + { + $this->console = $console; + } + + + + public function gitlabIsReachable(): bool + { + $gitCheck = $this->console->exec("git ls-remote --heads " . self::OSE_ORIGIN, false); + + return (false !== strpos(implode(' ', $gitCheck), 'heads/master')); + } + + + + public function getTags(): array + { + if (false === $this->tags) { + $this->tags = []; + + $ts = $this->console->exec("git ls-remote --tags --refs " . self::OSE_ORIGIN, false); + foreach ($ts as $tag) { + $this->tags[] = substr($tag, strpos($tag, 'refs/tags/') + 10); + } + } + + return $this->tags; + } + + + + /** + * @param string $tag + * + * @return bool + */ + public function tagIsValid(string $tag): bool + { + return in_array($tag, $this->getTags()); + } + + + + public function currentVersion(string $osedir): string + { + $vf = $this->getVersionFile($osedir); + if (!file_exists($vf)) { + return 'inconnue'; + } + + return file_get_contents($vf); + } + + + + public function writeVersion(string $osedir, string $version) + { + $vf = $this->getVersionFile($osedir); + file_put_contents($vf, $version); + } + + + + private function getVersionFile(string $osedir): string + { + if ('/' == substr($osedir, -1)) { + return $osedir . 'VERSION'; + } else { + return $osedir . '/VERSION'; + } + } +} + + + + + +class Console +{ + const COLOR_BLACK = '0;30'; + const COLOR_DARK_GRAY = '1;30'; + const COLOR_BLUE = '0;34'; + const COLOR_LIGHT_BLUE = '1;34'; + const COLOR_GREEN = '0;32'; + const COLOR_LIGHT_GREEN = '1;32'; + const COLOR_CYAN = '0;36'; + const COLOR_LIGHT_CYAN = '1;36'; + const COLOR_RED = '0;31'; + const COLOR_LIGHT_RED = '1;31'; + const COLOR_PURPLE = '0;35'; + const COLOR_LIGHT_PURPLE = '1;35'; + const COLOR_BROWN = '0;33'; + const COLOR_YELLOW = '1;33'; + const COLOR_LIGHT_GRAY = '0;37'; + const COLOR_WHITE = '1;37'; + + const BG_BLACK = '40'; + const BG_RED = '41'; + const BG_GREEN = '42'; + const BG_YELLOW = '43'; + const BG_BLUE = '44'; + const BG_MAGENTA = '45'; + const BG_CYAN = '46'; + const BG_LIGHT_GRAY = '47'; + + + + public function printMainTitle($title, $spaces = 1) + { + $pstr = str_repeat(' ', $spaces); + $t = $pstr . $title . $pstr; + + $len = mb_strlen($t); + + echo '╔' . str_repeat('═', $len) . "╗\n"; + echo '║' . str_repeat(' ', $len) . "║\n"; + echo "║" . $t . "║\n"; + echo '║' . str_repeat(' ', $len) . "║\n"; + echo '╚' . str_repeat('═', $len) . "╝\n\n"; + } + + + + public function print($text, $color = null, $bgColor = null) + { + if ($bgColor) $bgColor = ';' . $bgColor; + + if (!$color && !$bgColor) { + echo $text; + } else { + echo "\e[$color$bgColor" . "m$text\e[0m"; + } + } + + + + public function println($text, $color = null, $bgColor = null) + { + $this->print($text, $color, $bgColor); + echo "\n"; + } + + + + public function gestExitCode($code) + { + if (0 == $code) return; + + $this->printDie("Une erreur ($code) est survenue. Le script est stoppé"); + } + + + + public function printDie($text) + { + $this->println($text, self::COLOR_LIGHT_RED); + $this->println(' -- FIN Prématurée de l\'exécution du script -- ', null, self::BG_RED); + die("\n"); + } + + + + public function getInput() + { + return trim(fgets(STDIN)); + } + + + + public function exec($command, $autoDisplay = true) + { + if (is_array($command)) { + $command = implode(';', $command); + } + + exec($command, $output, $return); + if ($autoDisplay) { + echo implode("\n", $output) . "\n"; + } + $this->gestExitCode($return); + + return $output; + } + + + + public function passthru($command) + { + if (is_array($command)) { + $command = implode(';', $command); + } + + passthru($command, $returnVar); + $this->gestExitCode($returnVar); + + return $returnVar; + } + + + + public function strPad($input, $padLength = null, $padString = ' ') + { + return utf8_encode(str_pad(utf8_decode($input), $padLength, $padString)); + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index 0e0260b92c33264ccb85e9c384f1dbdb9d1a341c..e28ec25a11053c38ec190bcf48d54037386d1601 100755 --- a/composer.json +++ b/composer.json @@ -8,15 +8,15 @@ } ], "require": { - "unicaen/app": "dev-master as 1.3.6", - "unicaen/auth": "dev-master", + "unicaen/app": "1.3.10", + "unicaen/auth": "1.2.0", "zendframework/zend-code": "^2.4", "zendframework/zend-text": "^2.4", "bjyoungblood/bjy-authorize": "dev-master", "zf-commons/zfc-user": "0.1.3", "zendframework/zend-file": "^2.4", - "unicaen/code": "dev-master", - "unicaen/import": "dev-master", - "unicaen/tbl": "dev-master" + "unicaen/code": "1.1.4", + "unicaen/import": "1.1.3", + "unicaen/tbl": "1.0.2" } } diff --git a/composer.lock b/composer.lock index dc27a9f193ab152e5c03eb26d6da47f2106036c1..ef45193e46eda968387a232253b3387ce40392fb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "8fcf364565552167bfe396556f0fee35", + "content-hash": "6da2cfcc99bdc140e00167d9ea4ce7cb", "packages": [ { "name": "bjyoungblood/bjy-authorize", @@ -1284,16 +1284,16 @@ }, { "name": "symfony/debug", - "version": "v3.4.6", + "version": "v3.4.7", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "9b1071f86e79e1999b3d3675d2e0e7684268b9bc" + "reference": "9cf7c2271cfb89ef9727db1b740ca77be57bf9d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/9b1071f86e79e1999b3d3675d2e0e7684268b9bc", - "reference": "9b1071f86e79e1999b3d3675d2e0e7684268b9bc", + "url": "https://api.github.com/repos/symfony/debug/zipball/9cf7c2271cfb89ef9727db1b740ca77be57bf9d7", + "reference": "9cf7c2271cfb89ef9727db1b740ca77be57bf9d7", "shasum": "" }, "require": { @@ -1336,7 +1336,7 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-02-28T21:49:22+00:00" + "time": "2018-04-03T05:22:50+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -1399,16 +1399,16 @@ }, { "name": "symfony/process", - "version": "v2.8.36", + "version": "v2.8.37", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "756f614c5061729ea245ac6717231f7e3bfb74f9" + "reference": "c2fc900ee54e1e44aa956eae8ba041a5347ba93c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/756f614c5061729ea245ac6717231f7e3bfb74f9", - "reference": "756f614c5061729ea245ac6717231f7e3bfb74f9", + "url": "https://api.github.com/repos/symfony/process/zipball/c2fc900ee54e1e44aa956eae8ba041a5347ba93c", + "reference": "c2fc900ee54e1e44aa956eae8ba041a5347ba93c", "shasum": "" }, "require": { @@ -1444,15 +1444,15 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-02-12T17:44:58+00:00" + "time": "2018-03-19T21:11:56+00:00" }, { "name": "unicaen/app", - "version": "dev-master", + "version": "1.3.10", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/app.git", - "reference": "589ef1b2344804bfb90082eb73405c2dd186b447" + "reference": "845dd41da189fdd5e39f6d2d882e05b77a16c5dc" }, "require": { "doctrine/doctrine-orm-module": ">=0.7", @@ -1495,15 +1495,15 @@ ] }, "description": "Module de base des applications unicaen", - "time": "2018-03-21T08:44:30+00:00" + "time": "2018-03-28T08:06:13+00:00" }, { "name": "unicaen/auth", - "version": "dev-master", + "version": "1.2.0", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/auth.git", - "reference": "c89fb672ac642da21630b8eff4cafd54aa07049f" + "reference": "8615a5a03664977d26691a60e35131b12ba0b752" }, "require": { "bjyoungblood/bjy-authorize": ">=1.4", @@ -1525,11 +1525,11 @@ ] }, "description": "Module d'authentification pour les applications Unicaen", - "time": "2018-03-26T14:42:50+00:00" + "time": "2018-03-19T13:36:48+00:00" }, { "name": "unicaen/code", - "version": "dev-master", + "version": "1.1.4", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/code.git", @@ -1555,11 +1555,11 @@ }, { "name": "unicaen/import", - "version": "dev-master", + "version": "1.1.3", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/import.git", - "reference": "ec1e41a0f10538308fda52910b8ef9b714bbeb12" + "reference": "a8f1c91b436138a0bf22226bb9c20335f0aa73aa" }, "require": { "unicaen/auth": "^1.2 || dev-master", @@ -1579,7 +1579,7 @@ ] }, "description": "Module d'import de données vers une base Oracle", - "time": "2018-02-27T14:35:23+00:00" + "time": "2018-02-27T08:40:13+00:00" }, { "name": "unicaen/oracle", @@ -1611,11 +1611,11 @@ }, { "name": "unicaen/tbl", - "version": "dev-master", + "version": "1.0.2", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/tbl.git", - "reference": "b6e44ef6fb34563debc3c22d0dc32bf7d3daa98b" + "reference": "8fcb7ab01d002c1f61a91cc57bd8b0492459a83e" }, "require": { "unicaen/app": "^1.3 || dev-trunk" @@ -1634,7 +1634,7 @@ ] }, "description": "Module Unicaen de gestion de tableaux de bord Oracle", - "time": "2018-03-02T10:27:16+00:00" + "time": "2018-02-27T09:35:50+00:00" }, { "name": "zendframework/zend-authentication", @@ -3958,22 +3958,10 @@ } ], "packages-dev": [], - "aliases": [ - { - "alias": "1.3.6", - "alias_normalized": "1.3.6.0", - "version": "9999999-dev", - "package": "unicaen/app" - } - ], + "aliases": [], "minimum-stability": "stable", "stability-flags": { - "unicaen/app": 20, - "unicaen/auth": 20, - "bjyoungblood/bjy-authorize": 20, - "unicaen/code": 20, - "unicaen/import": 20, - "unicaen/tbl": 20 + "bjyoungblood/bjy-authorize": 20 }, "prefer-stable": false, "prefer-lowest": false, diff --git a/composer.phar b/composer.phar deleted file mode 100644 index 041775a1274ffc0a74952eec9ceedfc062644408..0000000000000000000000000000000000000000 Binary files a/composer.phar and /dev/null differ diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.md" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.md" index 12fc5608035d0c4000e8003e6ce49fd454f2892c..612109ba404b27ef842b2d58b60886f620121084 100644 --- "a/data/D\303\251ploiement/Proc\303\251dure d'installation.md" +++ "b/data/D\303\251ploiement/Proc\303\251dure d'installation.md" @@ -31,15 +31,15 @@ Les spécifications sont les suivantes : * un tablespace temporaire de 2 Go minimum * encodage en UTF-8, Oracle Enterprise Edition 11.2.0.3 (ou +) -# Installation de l'archive +# Installation des fichiers -Cette page mentionne toutes les étapes à réaliser pour pouvoir installer OSE. -Vous devrez auparavant récupérer l'archive de OSE. +L'installation se fait en récupérant les sources directement depuis le déôt GitLab de l'Université de Caen. +Un script a été conçu pour automatiser cette opération. -Dézippez l’Archive de OSE vers le répertoire de votre choix (par exemple /var/www/ose). - -Donner les droits d’écriture à l’utilisateur Apache (www-data sous Debian) au dossier suivant : -data/cache +Exécutez la commande suivante sur votre serveur : +```bash +wget https://ose.unicaen.fr/deploiement/ose-deploy && php ose-deploy +``` # Configuration d'Apache ## Avec un VirtualHost