1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/monica_ynh.git synced 2024-09-03 19:46:23 +02:00
monica_ynh/scripts/install
2017-06-14 22:16:25 +02:00

125 lines
4.7 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 = monica
# - the second time the app is installed, YNH_APP_INSTANCE_NAME = monica__2
# - monica__{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, ...
app=$YNH_APP_INSTANCE_NAME
# Retrieve arguments
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
admin=$YNH_APP_ARG_ADMIN
is_public=$YNH_APP_ARG_IS_PUBLIC
language=$YNH_APP_ARG_LANGUAGE
# Source YunoHost helpers
source /usr/share/yunohost/helpers
source ./_common.sh
# Save app settings
ynh_app_setting_set "$app" admin "$admin"
ynh_app_setting_set "$app" is_public "$is_public"
ynh_app_setting_set "$app" language "$language"
# Check domain/path availability
sudo yunohost app checkurl "${domain}${path_url}" -a "$app" \
|| ynh_die "Path not available: ${domain}${path_url}"
# Copy source files
final_path=/var/www/$app
sudo mkdir -p $final_path
sudo chmod 775 $final_path
ynh_install_php7
### 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=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
ynh_app_setting_set "$app" mysqlpwd "$dbpass"
ynh_mysql_create_db "$dbname" "$dbuser" "$dbpass"
# install nodejs
ynh_install_nodejs 6.10.3
# extract monica into $final_path
extract_monica $final_path
#ynh_setup_source $final_path
# install composer
init_composer $final_path
# create a user
first_name=$(ynh_user_get_info $admin 'firstname')
last_name=$(ynh_user_get_info $admin 'lastname')
email=$(ynh_user_get_info $admin 'mail')
sudo sed -i "s/yuno_firstname/$first_name/g" ../conf/CreateUser.php
sudo sed -i "s/yuno_lastname/$last_name/g" ../conf/CreateUser.php
sudo sed -i "s/yuno_email/$email/g" ../conf/CreateUser.php
sudo cp ../conf/CreateUser.php $final_path/database/seeds/CreateUser.php
# Modify Nginx configuration file and copy it to Nginx conf directory
nginx_conf=../conf/nginx.conf
sudo sed -i "s@YNH_EXAMPLE_PATH@$path_url@g" ../conf/nginx.conf
sudo sed -i "s@YNH_WWW_PATH@$final_path\/public\/@g" $nginx_conf
sudo cp $nginx_conf /etc/nginx/conf.d/$domain.d/$app.conf
# setup application config
sudo cp ../conf/.env $final_path/.env
cd $final_path && /usr/bin/php7.0 artisan -n key:generate --force
cd $final_path && /usr/bin/php7.0 artisan config:clear
sudo sed -i "s/yunouser/$dbuser/g" $final_path/.env
sudo sed -i "s/yunopass/$dbpass/g" $final_path/.env
sudo sed -i "s/yunobase/$dbname/g" $final_path/.env
sudo sed -i "s/yunomail/$email/g" $final_path/.env
sudo sed -i "s/yunodomain/$domain/g" $final_path/.env
## uses commas because path url contains a slash
sudo sed -i "s,yunopath,${path_url},g" $final_path/.env
# Install nodejs packages
cd $final_path && sudo_path "$nodejs_path/npm" install -g npm@4 pnpm
cd $final_path && sudo_path "$nodejs_path/pnpm" install
cd $final_path && sudo_path "$nodejs_path/pnpm" install -g bower gulp
cd $final_path && sudo_path "$nodejs_path/bower" install -f --allow-root
# setup application config
cd $final_path && /usr/bin/php7.0 artisan -q migrate --force
cd $final_path && /usr/bin/php7.0 artisan -q storage:link
cd $final_path && /usr/bin/php7.0 artisan -q optimize
cd $final_path && /usr/bin/php7.0 artisan -q db:seed --class ActivityTypesTableSeeder --force
cd $final_path && /usr/bin/php7.0 artisan -q db:seed --class CountriesSeederTable --force
cd $final_path && /usr/bin/php7.0 artisan -q db:seed --class CreateUser --force
# create a cronjob to run the scheduler
echo "* * * * * www-data cd $final_path && /usr/bin/php7.0 $final_path/artisan schedule:run >/dev/null 2>&1" > /tmp/cron$app
sudo mv /tmp/cron$app /etc/cron.d/$app
sudo chown root /etc/cron.d/$app
# Install files and set permissions
sudo chown -R www-data: "$final_path"
# 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
# Reload services
sudo service nginx reload