Ce processus d'installation est destiné à être effectué en local pour un poste de développeur, dans un environnement Linux (testé sous Debian et Ubuntu).
Il est à adapter pour un déploiement dans un autre environnement.
Les applications et paquets suivants doivent être installées au préalable :
# Postgresql et Postgis (version: 9.4 minimum, l'application fonctionne dans les versions supérieures)
# Voir ici pour l'obtention des différentes versions de PostgreSQL : https://www.postgresql.org/download/
apt-get install -y postgresql postgresql-client postgresql-contrib postgresql-9.4-postgis
# Apache & php (php 7.2 minimum)
apt-get install -y apache2 php7.2 php7.2-pgsql php7.2-cli php7.2-curl php7.2-bcmath php7.2-mbstring php7.2-json php7.2-zip php7.2-xml
a2enmod rewrite
a2enmod expires
a2enmod cgi
a2enmod cgid
a2enmod remoteip
# Mapserver
apt-get install -y cgi-mapserver mapserver-bin mapserver-doc php5-mapscript libapache2-mod-fcgid
# mapserv is a fcgi compatible, use default config sethandler with .fcgi
ln /usr/lib/cgi-bin/mapserv /usr/lib/cgi-bin/mapserv.fcgi
a2enmod fcgid
# Tomcat et drivers postgres
apt-get install -y tomcat8 libpostgresql-jdbc-java
ln -fs /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat8/lib/postgresql-jdbc4.jar
# RabbitMQ
apt-get install -y rabbitmq-server
# Facultatif : Management plugin
rabbitmq-plugins enable rabbitmq_management
# Supervisor
apt-get install -y supervisor
# GDAL
apt-get install -y gdal-bin
# Divers
apt-get install -y zip
apt-get install -y libxml2-utils
# node sert à compiler les fichiers less. Le résultat de la compilation est commité, donc node n'est pas utile ailleurs que sur les machines de dev.
apt-get install nodejs
L'application Sencha Command doit aussi être installée pour exécuter le build du client ExtJS. Elle n'est pas nécessaire pour l'exécution de l'application. Les instructions d'installation et les paquets peuvent être trouvés ici : https://www.sencha.com/products/extjs/cmd-download/. Attention, ne pas installer la commande en tant que super utilisateur (sudo), sinon il sera difficile de l'utiliser en tant qu'utilisateur normal. Rajouter la commande sencha dans son PATH.
# Créer de préférence un répertoire pour l'ensemble des codes du projet:
mkdir -p /path/to/ginco-project
cd /path/to/ginco-project
# récupérer le code du projet ginco
git clone https://github.com/SINP-GINCO/ginco.git
Copier le fichier configs/example.properties
, ou configs/localhost.properties.dist
,
à la racine du projet, le renommer en localhost.properties, et adapter le contenu
à votre configuration.
Créer d'abord deux utilisateurs Postgres: un administrateur, et un utilisateur standard nommé "ogam":
sudo -u postgres psql -c "CREATE ROLE admin WITH LOGIN PASSWORD 'passwd' SUPERUSER;"
sudo -u postgres psql -c "CREATE ROLE ogam WITH LOGIN PASSWORD 'passwd' NOSUPERUSER NOINHERIT NOCREATEDB NOCREATEROLE;"
Créer un répertoire /var/data/ginco et donner tous les droits aux utilisateurs apache et tomcat.
Créer et initialiser la base de données avec le script create_db.php :
php database/init/create_db.php -f localhost.properties
Le script build_ginco.php
s'occupe de builder les différentes parties de
l'application (Symfony, Java, ExtJS, fichiers de configuration...). Vous pouvez le lancer
sans arguments pour voir les options disponibles. Pour lancer le build complet
de l'application en environnement de développement :
php build_ginco.php -f localhost.properties --mode=dev
Si vous êtes derrière un proxy, il sera nécessaire de rajouter les informations du proxy pour gradle (responsable de builder la partie Java) :
# Proxy for Gradle (à mettre dans ~/.bashrc ou ~/.profile par exemple)
export GRADLE_OPTS="-Dhttps.proxyHost=proxy.domain.fr -Dhttps.proxyPort=XXXX"
A la fin du build, le script affiche des instructions de post-installation. Les suivre scrupuleusement !
Vous venez de rajouter un fichier nommé ginco_mon.domain.xx.conf dans /etc/apache2/sites-available ; la première fois, il est nécessaire d'activer ce site :
sudo a2ensite ginco_mon.domain.xx
Rajoutez l'url mon.domain.xx dans le fichier /etc/hosts.
Créez un lien symbolique dans /var/www/ vers le répertoire /pat/to/ginco-project/ginco. Attention ce lien doit être le même que celui indique dans localhost.properties, pour la variable apache.path.to.app
## Fin
Redémarrez tous les services :
sudo service apache restart
sudo service tomcat8 restart
sudo service supervisor force-stop; sudo service supervisor restart
Si tout s'est bien passé, votre instance Ginco est up sur l'url que vous avez indiqué dans la configuration (variables url.protocol, url.domain et url.basepath).