1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/ihatemoney_ynh.git synced 2024-09-03 19:26:15 +02:00
ihatemoney_ynh/scripts/install
Jocelyn Delande 309e46013f Cleans after itself in case the install fails.
Refs #1 and #4 (and hopefuly fixes them)
2015-07-26 18:23:54 +02:00

106 lines
3.3 KiB
Bash
Executable file

#!/bin/bash
set -e
# Constants
# Retrieve arguments
domain=$1
path=$2
is_public=$3
app=ihatemoney
# Constant arguments
db_user=ihatemoney
secret_key=`openssl rand -base64 32`
mails_sender="no-reply@${domain}"
sudo yunohost app checkurl $domain$path -a ihatemoney
if [[ ! $? -eq 0 ]]; then
exit 1
fi
# Remove trailing "/" for next commands
path=${path%/}
# Configure database
db_pwd=`sudo yunohost app initdb $db_user`
sudo yunohost app setting $app mysqlpwd -v $db_pwd
# Delete db, user dirs and conf if exit with an error
# inspired from https://github.com/Kloadut/owncloud_ynh/blob/master/scripts/install#L37
function exit_properly
{
set +e
root_pwd=$(sudo cat /etc/yunohost/mysql)
mysql -u root -p$root_pwd -e "DROP DATABASE ihatemoney ; DROP USER $db_user ;"
sudo userdel ihatemoney
sudo rm -Rf /opt/yunohost/ihatemoney
sudo rm -Rf /etc/ihatemoney
sudo rm /etc/nginx/conf.d/$domain.d/ihatemoney.conf
sudo rm /etc/supervisor/conf.d/ihatemoney.conf
exit 1
}
trap exit_properly ERR
# Save app settings
sudo yunohost app setting $app domain -v $domain
sudo yunohost app setting $app is_public -v "$is_public"
# Install debian packages dependencies
sudo apt-get install -y -qq python-dev python-virtualenv supervisor libmysqlclient-dev
# Create the dedicated user
sudo useradd ihatemoney -d /opt/yunohost/ihatemoney/
# Prepare venv
sudo virtualenv /opt/yunohost/ihatemoney/venv
sudo /opt/yunohost/ihatemoney/venv/bin/pip install -r ../sources/budget/requirements.txt
sudo /opt/yunohost/ihatemoney/venv/bin/pip install gunicorn>=19.3.0 MySQL-python
# Install source
sudo cp -r ../sources/ /opt/yunohost/ihatemoney/src/
sudo find /opt/yunohost/ihatemoney/src/ -type f | while read LINE; do sudo chmod 640 "$LINE" ; done
sudo find /opt/yunohost/ihatemoney/src/ -type d | while read LINE; do sudo chmod 755 "$LINE" ; done
sudo chown -R ihatemoney:ihatemoney /opt/yunohost/ihatemoney/src
sudo chown -R www-data:www-data /opt/yunohost/ihatemoney/src/budget/static
# Create various dirs
sudo install -o ihatemoney -g ihatemoney -m 755 \
-d /var/log/ihatemoney /etc/ihatemoney
# Configure gunicorn
sudo install -o ihatemoney -g ihatemoney -m 644 \
../conf/gunicorn.conf.py /etc/ihatemoney/gunicorn.conf.py
# Configure supervisor
sudo install -o root -g root -m 644 \
../conf/supervisord.conf /etc/supervisor/conf.d/ihatemoney.conf
sudo yunohost service add supervisor
# Configure ihatemoney
sed -i "s@MY_SECRET_KEY@$secret_key@" ../conf/settings.py
sed -i "s/MY_EMAIL/$mails_sender/" ../conf/settings.py
sed -i "s@MY_MYSQL_PW@$db_pwd@" ../conf/settings.py
sed -i "s@MY_PATH@$path@" ../conf/settings.py
sudo install -o ihatemoney -g ihatemoney -m 640 \
../conf/settings.py /etc/ihatemoney/settings.py
# The settings have to be stored here (on python path)
sudo ln -s /etc/ihatemoney/settings.py /opt/yunohost/ihatemoney/src/budget/settings.py
# If app is public, add url to SSOWat conf as skipped_uris
if [ "$is_public" = "Yes" ];
then
sudo yunohost app setting $app unprotected_uris -v "/"
fi
# Configure Nginx and reload
sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf
sudo install -o root -g root -m644 \
../conf/nginx.conf /etc/nginx/conf.d/$domain.d/ihatemoney.conf
sudo service nginx reload
# Start backend
sudo service supervisor restart
# Reconfigure sso
sudo yunohost app ssowatconf