1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/webtrees_ynh.git synced 2024-09-03 18:26:37 +02:00
webtrees_ynh/scripts/install

121 lines
3.9 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
# Exit on command errors and treat unset variables as an error
set -eu
# This is a multi-instance app, meaning it can be installed several times independently
# The id of the app as stated in the manifest is available as $YNH_APP_ID
# The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...)
# The app instance name is available as $YNH_APP_INSTANCE_NAME
# - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample
# - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2
# - ynhexample__{N} for the subsequent installations, with N=3,4, ...
# The app instance name is probably what you are interested the most, since this is
# guaranteed to be unique. This is a good unique identifier to define installation path,
# db names, ...
source .fonctions # Loads the generic functions usually used in the script
# Source YunoHost helpers
source /usr/share/yunohost/helpers
TRAP_ON # Active trap for strop script if detect error
app=$YNH_APP_INSTANCE_NAME
# Retrieve arguments
domain=$YNH_APP_ARG_DOMAIN
path=$YNH_APP_ARG_PATH
is_public=$YNH_APP_ARG_IS_PUBLIC
admin_username=$YNH_APP_ARG_USERNAME
admin_name=$YNH_APP_ARG_NAME
admin_email=$YNH_APP_ARG_EMAIL
admin_password=$(openssl passwd -1 -salt xyz $YNH_APP_ARG_PASSWORD)
CHECK_VAR "$app" "app name not set"
CHECK_PATH
CHECK_DOMAINPATH
CHECK_FINALPATH
# Save app settings
ynh_app_setting_set "$app" is_public "$is_public"
ynh_app_setting_set $app domain $domain
ynh_app_setting_set $app path $path
# Check password strength
[[ ${#admin_password} -gt 6 ]] || ynh_die \
"The password is too weak, it must be longer than 6 characters"
# Copy files to the right place
sudo mkdir "$final_path"
ynh_app_setting_set $app final_path $final_path
# Get source
SETUP_SOURCE
# Set permissions to app files
# you may need to make some file and/or directory writeable by www-data (nginx user)
sudo chown -R root: $final_path
### MySQL (can be removed if not used) ###
# If your app use a MySQL database you can use these lines to bootstrap
# a database, an associated user and save the password in app settings.
#
# # Generate MySQL password and create database
dbuser=$app
dbname=$app
dbpass=$(ynh_string_random 12)
ynh_app_setting_set "$app" mysqlpwd "$dbpass"
ynh_mysql_create_db "$dbname" "$dbuser" "$dbpass"
# Adding the details of the database to the config file
sed -i "s@__dbuser__@$dbuser@g" ../conf/config.ini.php
sed -i "s@__dbpass__@$dbpass@g" ../conf/config.ini.php
sed -i "s@__dbname__@$dbname@g" ../conf/config.ini.php
# Copy the config file to the final path
sudo cp ../conf/config.ini.php $final_path/data/.
# # Load initial SQL into the new database
ynh_mysql_connect_as "$dbuser" "$dbpass" "$dbname" \
< "../conf/sql/webtrees.sql"
# Replace variables in sql scripts
ynh_replace_string "__USER_NAME__" "$admin_username" ../conf/sql/admin.sql
ynh_replace_string "__NAME__" "$admin_name" ../conf/sql/admin.sql
ynh_replace_string "__USER_EMAIL__" "$admin_email" ../conf/sql/admin.sql
ynh_replace_string "__PASSWORD__" "$admin_password" ../conf/sql/admin.sql
ynh_mysql_connect_as "$dbuser" "$dbpass" "$dbname" < "../conf/sql/admin.sql"
### MySQL end ###
# Modify Nginx configuration file and copy it to Nginx conf directory
nginx_conf=../conf/nginx.conf
sed -i "s@YNH_WWW_PATH@$path@g" $nginx_conf
sed -i "s@YNH_WWW_ALIAS@$final_path/@g" $nginx_conf
# If a dedicated php-fpm process is used:
# Don't forget to modify ../conf/nginx.conf accordingly or your app will not work!
# sed -i "s@YNH_WWW_APP@$app@g" $nginx_conf
sudo cp $nginx_conf /etc/nginx/conf.d/$domain.d/$app.conf
# If app is public, add url to SSOWat conf as skipped_uris
if [[ $is_public -eq 1 ]]; then
# unprotected_uris allows SSO credentials to be passed anyway.
ynh_app_setting_set "$app" unprotected_uris "/"
fi
sudo chmod -R 777 $final_path/data
# Reload services
sudo service nginx reload