biommap/patches/install_app.sh

255 lines
9.1 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -ex
cd $(dirname $(dirname "${BASH_SOURCE[0]:-$0}"))
DIR=$(pwd)
#création d'un fichier de configuration pour api/back
if [ ! -f config/settings.ini ]; then
echo 'Fichier de configuration du projet non existant, copie du template...'
cp config/settings.ini.template config/settings.ini
echo "Fichier de config disponible : $DIR."
echo "Merci de renseigner le fichier et de relancer la commande install_app.sh."
exit
fi
. config/settings.ini
#Installation de python / gunicorn / supervisor + dépendances
sudo apt update && sudo apt -y install python2.7 git gcc curl gunicorn python-setuptools lsb-release apt-transport-https wget
sudo apt -y install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl libbz2-dev
sudo apt -y install apache2 python-dev libpq-dev libgeos-dev supervisor unzip virtualenv libcurl4-openssl-dev libssl-dev
sudo apt -y install libglib2.0-0 libsm6 libxext6 libxrender-dev
#RELEASE=$(cat /etc/os-release | grep VERSION_CODENAME |cut -d "=" -f2)
sudo apt install python3 python3-dev python3-pip -y
sudo apt-get clean
#echo `python3 --version`
sudo service supervisor start && sudo supervisorctl stop all
#Maj de pip
pip3 install --upgrade pip
#Installation de nvm / npm
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
#cp -r ${HOME}/.nvm /home/synthese/.nvm
#chown -R synthese:synthese /home/synthese/.nvm
cd ${DIR}/frontend
set +x
nvm install
set -x
echo `npm -v`
cd ${DIR}
#Installation de taxhub
#if [ ! -d /home/synthese ]; then
#adduser --gecos "" --home /home/citizen citizen
#sudo passwd -d citizen
#adduser citizen sudo
#adduser citizen root
#adduser synthese www-data
#fi
cd $HOME
python3 -m pip install virtualenv==20.0.1 --user
sudo a2enmod rewrite proxy proxy_http
sudo apache2ctl restart
sudo apt-get install -y postgresql postgresql-client postgresql-postgis postgresql-server-dev-11
sudo apt-get clean
sudo adduser postgres sudo
sudo service postgresql start
sudo -n -u postgres psql -c "CREATE ROLE $user_pg WITH PASSWORD '$user_pg_pass';"
sudo -n -u postgres psql -c "ALTER ROLE $user_pg WITH LOGIN;"
sudo -n -u postgres createdb -O $user_pg $pg_dbname -T template0 -E UTF-8
cd $HOME
if [ ! -d $HOME/taxhub ] && [ $install_taxhub ]; then
wget https://github.com/PnX-SI/TaxHub/archive/$taxhub_version.zip
unzip $taxhub_version.zip
mv TaxHub-$taxhub_version/ taxhub/
rm ${taxhub_version}.zip
fi
cd $HOME/taxhub
if [ ! -f settings.ini ]; then
cp settings.ini.sample settings.ini
fi
sed -i "s,db_host=.*$,db_host=$pg_host,g" settings.ini
sed -i "s,db_name=.*$,db_name=$pg_dbname,g" settings.ini
sed -i "s,user_pg=.*$,user_pg=$user_pg,g" settings.ini
sed -i "s,user_pg_pass=.*$,user_pg_pass=$user_pg_pass,g" settings.ini
sed -i "s,db_port=.*$,db_port=$pg_port,g" settings.ini
sed -i "s,usershub_release=.*$,usershub_release=2.1.3,g" settings.ini
sudo printf "
<Location /taxhub> \n
ProxyPass http://127.0.0.1:5000/ retry=0 \n
ProxyPassReverse http://127.0.0.1:5000/ \n
</Location> \n
\n
Alias '/static' 'HOME_PATH/taxhub/static' \n
<Directory 'HOME_PATH/taxhub/static'> \n
AllowOverride None \n
Order allow,deny \n
Allow from all \n
</Directory> \n
" | sed "s,HOME_PATH,$HOME,g" | sudo tee /etc/apache2/sites-available/taxhub.conf
sudo printf '
RewriteEngine on \n
RewriteRule "taxhub$" "taxhub/" [R] \n
' | sudo tee /etc/apache2/sites-available/000-default.conf
sudo a2ensite taxhub.conf
sudo apache2ctl restart
cd $HOME/taxhub
mkdir -p var/log
mkdir -p $DIR/var/log
touch $DIR/var/log/api_geonature-errors.log
mkdir -p /tmp/taxhub/
mkdir -p /tmp/usershub/
sudo chown -R $(whoami) $HOME/taxhub
sudo chown -R $(whoami) /tmp/taxhub
sudo chown -R $(whoami) /tmp/usershub
#sed -i "s,nano.*$,#,g" install_db.sh
#sed -i "s,PnEcrins,PnX-SI,g" install_db.sh
sed -i "s,^nano,," install_db.sh
./install_db.sh
./install_app.sh
cd $DIR
. config/settings.ini
sudo -u postgres psql $pg_dbname -c 'create extension postgis;'
if [ ! -f config/default_config.toml ]; then
echo 'Fichier de configuration API non existant, copie du template...'
cp config/default_config.toml.template config/default_config.toml
sed -i "s/SQLALCHEMY_DATABASE_URI = .*$/SQLALCHEMY_DATABASE_URI = \"postgresql:\/\/$user_pg:$user_pg_pass@$pg_host:$pg_port\/$pg_dbname\"/" config/default_config.toml
sed -i "s,URL_APPLICATION = .*$,URL_APPLICATION = \"$url_application\",g" config/default_config.toml
sed -i "s,API_ENDPOINT = .*$,API_ENDPOINT = \"$api_endpoint\",g" config/default_config.toml
sed -i "s,API_PORT = .*$,API_PORT = \"$api_port\",g" config/default_config.toml
sed -i "s,API_TAXHUB = .*$,API_TAXHUB = \"$api_taxhub\",g" config/default_config.toml
fi
sudo -u postgres psql -c 'CREATE SCHEMA taxonomie AUTHORIZATION dbuser' dbname
#Création d'un fichier de configuration pour le front
cd frontend
if [ ! -f src/conf/app.config.ts ]; then
echo 'Fichier de configuration frontend non existant, copie du template...'
cp src/conf/app.config.ts.template src/conf/app.config.ts
sed -i "s|API_ENDPOINT:.*$|API_ENDPOINT:\"$api_endpoint\",|g" src/conf/app.config.ts
sed -i "s|API_TAXHUB:.*$|API_TAXHUB:\"$api_taxhub\",|g" src/conf/app.config.ts
sed -i "s|URL_APPLICATION:.*$|URL_APPLICATION:\"$url_application\",|g" src/conf/app.config.ts
fi
if [ ! -f src/conf/map.config.ts ]; then
echo 'Fichier map non existant, copie du template...'
cp src/conf/map.config.ts.template src/conf/map.config.ts
fi
#Copie des fichiers custom
if [ ! -f src/custom/custom.css ]; then
echo 'Fichier custom.css non existant, copie du template...'
cp src/custom/custom.css.template src/custom/custom.css
fi
if [ ! -f src/custom/about/about.css ]; then
echo 'Fichiers about non existant, copie du template...'
cp src/custom/about/about.css.template src/custom/about/about.css
cp src/custom/about/about.html.template src/custom/about/about.html
fi
if [ ! -f src/custom/footer/footer.css ]; then
echo 'Fichiers footer non existant, copie du template...'
cp src/custom/footer/footer.css.template src/custom/footer/footer.css
cp src/custom/footer/footer.html.template src/custom/footer/footer.html
fi
if [ ! -f src/custom/home/home.css ]; then
echo 'Fichiers footer non existant, copie du template...'
cp src/custom/home/home.css.template src/custom/home/home.css
cp src/custom/home/home.html.template src/custom/home/home.html
fi
#Install and build
export NG_CLI_ANALYTICS=ci # Désactive le prompt pour angular metrics
URL=`echo $my_url |sed 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/'`
echo "L'application sera disponible à l'url $my_url"
nvm use
npm install
# Installation de la conf
sudo cp ../install/supervisor/gncitizen_frontssr-service.conf /etc/supervisor/conf.d/
sudo sed -i "s%APP_PATH%${DIR}%" /etc/supervisor/conf.d/gncitizen_frontssr-service.conf
sudo sed -i "s%SYSUSER%$(whoami)%" /etc/supervisor/conf.d/gncitizen_frontssr-service.conf
sudo cp ../install/apache/gncitizen.conf /etc/apache2/sites-available/gncitizen.conf
if [ ${backoffice_password:=MotDePasseAChanger} = MotDePasseAChanger ]; then
backoffice_password=$(date +%s | sha256sum | base64 | head -c 30 ; echo)
fi
echo "Backoffice password
===================
url: (${URL}/api/admin)
username: ${backoffice_username:=citizen}
password: ${backoffice_password}" > ${DIR}/config/backoffice_access
htpasswd -b -c ${DIR}/config/backoffice_htpasswd ${backoffice_username} ${backoffice_password}
sudo sed -i "s%APP_PATH%${DIR}%" /etc/apache2/sites-available/gncitizen.conf
sudo sed -i "s%mydomain.net%${URL}%" /etc/apache2/sites-available/gncitizen.conf
sudo sed -i "s%backoffice_username%${backoffice_username}%" /etc/apache2/sites-available/gncitizen.conf
if [ $server_side = "true" ]; then
echo "Build server side project"
npm run build:i18n-ssr
else
echo "Build initial du projet"
npm run build
fi
cd ..
# Création du venv
venv_path=$DIR/backend/${venv_dir:-"venv"}
if [ ! -f $venv_path/bin/activate ]; then
python3 -m virtualenv $venv_path
fi
source $venv_path/bin/activate
pip install --upgrade pip
pip install -r backend/requirements.txt
deactivate
# Copy main medias to media
mkdir -p $DIR/media
cp -r $DIR/frontend/src/assets/* $DIR/media
touch init_done
#Création de la conf supervisor
sudo cp install/supervisor/gncitizen_api-service.conf /etc/supervisor/conf.d/
sudo sed -i "s%APP_PATH%${DIR}%" /etc/supervisor/conf.d/gncitizen_api-service.conf
sudo sed -i "s%SYSUSER%$(whoami)%" /etc/supervisor/conf.d/gncitizen_api-service.conf
# Prise en compte de la nouvelle config Apache
sudo a2ensite gncitizen.conf
sudo apache2ctl restart
# Prise en compte de la nouvelle config Supervisor
sudo supervisorctl reread
sudo supervisorctl reload
echo "install municipalities"
./data/ref_geo.sh
echo "End of installation
You can now access to GeoNature-citizen at ${my_url}
Backoffice access informations are stored in ${DIR}/config/backoffice_access as follows:
"
cat ${DIR}/config/backoffice_access