mirror of
https://github.com/YunoHost-Apps/phpbb_ynh.git
synced 2024-09-03 19:56:36 +02:00
Update install
This commit is contained in:
parent
dc82651b33
commit
b6e3411f49
1 changed files with 177 additions and 221 deletions
398
scripts/install
398
scripts/install
|
@ -1,238 +1,194 @@
|
|||
#!/bin/bash
|
||||
|
||||
app=phpBB
|
||||
#=================================================
|
||||
# GENERIC START
|
||||
#=================================================
|
||||
# IMPORT GENERIC HELPERS
|
||||
#=================================================
|
||||
|
||||
# Retrieve argument
|
||||
domain=$1
|
||||
path=$2
|
||||
is_public=$3
|
||||
admin_login=$4
|
||||
admin_pwd=$5
|
||||
admin_email=$6
|
||||
lang=$7
|
||||
curl_inst=$8
|
||||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#sudo yunohost app setting $app domain -v $domain
|
||||
#=================================================
|
||||
# MANAGE SCRIPT FAILURE
|
||||
#=================================================
|
||||
|
||||
# Removal of trailing /
|
||||
path=${path%/}
|
||||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
# Check domain/path availability
|
||||
sudo yunohost app checkurl $domain$path -a $app
|
||||
if [[ ! $? -eq 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
#=================================================
|
||||
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
||||
#=================================================
|
||||
|
||||
db_user=$app
|
||||
#db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
|
||||
db_pwd=$admin_pwd
|
||||
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
|
||||
|
||||
# Initialize database and store mysql password for upgrade
|
||||
sudo yunohost app initdb $db_user -p $db_pwd
|
||||
sudo yunohost app setting $app mysqlpwd -v $db_pwd
|
||||
sudo yunohost app setting $app admin_login -v $admin_login
|
||||
sudo yunohost app setting $app admin_pwd -v $admin_pwd
|
||||
sudo yunohost app setting $app admin_email -v $admin_email
|
||||
# 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, ...
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
#=================================================
|
||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||||
#=================================================
|
||||
|
||||
# Copy files to the right place
|
||||
final_path=/var/www/$app
|
||||
sudo rm -rf $final_path
|
||||
sudo mkdir -p $final_path
|
||||
sudo cp -a ../sources/phpBB/* $final_path/
|
||||
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
||||
|
||||
# We add french language pack
|
||||
if [ "$lang" = "fr" ];
|
||||
then sudo cp -a ../sources/french_language/* $final_path/
|
||||
# Normalize the url path syntax
|
||||
path_url=$(ynh_normalize_url_path $path_url)
|
||||
|
||||
# Check web path availability
|
||||
ynh_webpath_available $domain $path_url
|
||||
# Register (book) web path
|
||||
ynh_webpath_register $app $domain $path_url
|
||||
|
||||
#=================================================
|
||||
# STORE SETTINGS FROM MANIFEST
|
||||
#=================================================
|
||||
|
||||
ynh_app_setting_set $app domain $domain
|
||||
ynh_app_setting_set $app path $path_url
|
||||
ynh_app_setting_set $app admin $admin
|
||||
ynh_app_setting_set $app is_public $is_public
|
||||
ynh_app_setting_set $app language $language
|
||||
|
||||
#=================================================
|
||||
# STANDARD MODIFICATIONS
|
||||
#=================================================
|
||||
|
||||
|
||||
#=================================================
|
||||
# INSTALL DEPENDENCIES
|
||||
#=================================================
|
||||
|
||||
ynh_install_app_dependencies deb1 deb2
|
||||
|
||||
#=================================================
|
||||
# CREATE A MYSQL DATABASE
|
||||
#=================================================
|
||||
# If your app uses a MySQL database, you can use these lines to bootstrap
|
||||
# a database, an associated user and save the password in app settings
|
||||
|
||||
db_name=$(ynh_sanitize_dbid $app)
|
||||
ynh_app_setting_set $app db_name $db_name
|
||||
ynh_mysql_setup_db $db_name $db_name
|
||||
|
||||
#=================================================
|
||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||
#=================================================
|
||||
|
||||
ynh_app_setting_set $app final_path $final_path
|
||||
# Download, check integrity, uncompress and patch the source from app.src
|
||||
ynh_setup_source "$final_path"
|
||||
|
||||
#=================================================
|
||||
# NGINX CONFIGURATION
|
||||
#=================================================
|
||||
|
||||
# Create a dedicated nginx config
|
||||
ynh_add_nginx_config
|
||||
|
||||
#=================================================
|
||||
# CREATE DEDICATED USER
|
||||
#=================================================
|
||||
|
||||
# Create a system user
|
||||
ynh_system_user_create $app
|
||||
|
||||
#=================================================
|
||||
# PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
|
||||
# Create a dedicated php-fpm config
|
||||
ynh_add_fpm_config
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC SETUP
|
||||
#=================================================
|
||||
# ...
|
||||
#=================================================
|
||||
|
||||
#=================================================
|
||||
# SETUP APPLICATION WITH CURL
|
||||
#=================================================
|
||||
|
||||
# Set right permissions for curl install
|
||||
chown -R $app: $final_path
|
||||
|
||||
# Set the app as temporarily public for curl call
|
||||
ynh_app_setting_set $app skipped_uris "/"
|
||||
# Reload SSOwat config
|
||||
yunohost app ssowatconf
|
||||
|
||||
# Reload Nginx
|
||||
systemctl reload nginx
|
||||
|
||||
# Installation with curl
|
||||
ynh_local_curl "/INSTALL_PATH" "key1=value1" "key2=value2" "key3=value3"
|
||||
|
||||
#=================================================
|
||||
# MODIFY A CONFIG FILE
|
||||
#=================================================
|
||||
|
||||
ynh_replace_string "match_string" "replace_string" "$final_path/CONFIG_FILE"
|
||||
|
||||
#=================================================
|
||||
# STORE THE CHECKSUM OF THE CONFIG FILE
|
||||
#=================================================
|
||||
|
||||
# Calculate and store the config file checksum into the app settings
|
||||
ynh_store_file_checksum "$final_path/CONFIG_FILE"
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
#=================================================
|
||||
# SECURE FILES AND DIRECTORIES
|
||||
#=================================================
|
||||
|
||||
# Set permissions to app files
|
||||
chown -R root: $final_path
|
||||
|
||||
#=================================================
|
||||
# SETUP LOGROTATE
|
||||
#=================================================
|
||||
|
||||
# Use logrotate to manage application logfile(s)
|
||||
ynh_use_logrotate
|
||||
|
||||
#=================================================
|
||||
# ADVERTISE SERVICE IN ADMIN PANEL
|
||||
#=================================================
|
||||
|
||||
yunohost service add NAME_INIT.D --log "/var/log/FILE.log"
|
||||
|
||||
#=================================================
|
||||
# SETUP SSOWAT
|
||||
#=================================================
|
||||
|
||||
if [ $is_public -eq 0 ]
|
||||
then # Remove the public access
|
||||
ynh_app_setting_delete $app skipped_uris
|
||||
fi
|
||||
|
||||
# Set permissions to working directory
|
||||
sudo chown -R www-data:www-data $final_path
|
||||
|
||||
# Special adjustements for phpBB BEFORE installation (according to documentation)
|
||||
sudo chmod 666 $final_path/config.php
|
||||
sudo chmod 777 $final_path/store
|
||||
sudo chmod 777 $final_path/cache
|
||||
sudo chmod 777 $final_path/files
|
||||
sudo chmod 777 $final_path/images/avatars/upload
|
||||
|
||||
# phpBB requires imagemagick to manipulate pictures
|
||||
sudo apt-get update -qq > /dev/null 2>&1
|
||||
sudo apt-get install -y imagemagick > /dev/null 2>&1
|
||||
|
||||
# Modify Nginx configuration file and copy it to Nginx conf directory
|
||||
sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf
|
||||
sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf
|
||||
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
|
||||
|
||||
sed -i "s@NAMETOCHANGE@$app@g" ../conf/php-fpm.conf
|
||||
finalphpconf=/etc/php5/fpm/pool.d/$domain\_$app.conf
|
||||
sudo cp ../conf/php-fpm.conf $finalphpconf
|
||||
sudo chown root: $finalphpconf
|
||||
sudo chmod 644 $finalphpconf
|
||||
|
||||
|
||||
# Make app public if necessary
|
||||
sudo yunohost app setting $app is_public -v "$is_public"
|
||||
if [ "$is_public" = "Yes" ];
|
||||
if [ $is_public -eq 1 ]
|
||||
then
|
||||
sudo yunohost app setting $app skipped_uris -v "/"
|
||||
# unprotected_uris allows SSO credentials to be passed anyway.
|
||||
ynh_app_setting_set $app unprotected_uris "/"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
|
||||
# Reload Nginx and regenerate SSOwat conf
|
||||
sudo service php5-fpm reload
|
||||
sudo service nginx reload
|
||||
sudo yunohost app ssowatconf
|
||||
|
||||
# Use cURL for automatic configuration [BROKEN - TO BE FIXED]
|
||||
if [ "$curl_inst" = "Yes" ];
|
||||
then
|
||||
|
||||
###### BEGINNING OF IF ########################
|
||||
|
||||
# Configuration of phpBB via cURL
|
||||
|
||||
#echo -e "\n 1 - Requirements";
|
||||
sudo curl -kL -H "Host: $domain" -X POST "https://127.0.0.1$path/install/index.php?mode=install&sub=requirements" \
|
||||
--data "img_imagick=/usr/bin" \
|
||||
--data "submit=Start install" \
|
||||
> /dev/null 2>&1
|
||||
|
||||
#echo -e "\n 2 - database";
|
||||
sudo curl -kL -H "Host: $domain" -X POST "https://127.0.0.1$path/install/index.php?mode=install&sub=database" \
|
||||
--data "img_imagick=/usr/bin" \
|
||||
--data "language=en" \
|
||||
--data "testdb=false" \
|
||||
--data "dbms=mysqli" \
|
||||
--data "dbhost=localhost" \
|
||||
--data "dbport=" \
|
||||
--data "dbname=$db_user" \
|
||||
--data "dbuser=$db_user" \
|
||||
--data "table_prefix=phpbb_" \
|
||||
--data "dbpasswd=$db_pwd" \
|
||||
--data "submit=Proceed to next step" \
|
||||
> /dev/null 2>&1
|
||||
|
||||
#echo -e "\n 3 - admin";
|
||||
sudo curl -kL -H "Host: $domain" -X POST "https://127.0.0.1$path/install/index.php?mode=install&sub=administrator" \
|
||||
--data "img_imagick=/usr/bin" \
|
||||
--data "default_lang=$lang" \
|
||||
--data "check=false" \
|
||||
--data "admin_name=$admin_login" \
|
||||
--data "admin_pass1=$admin_pwd" \
|
||||
--data "admin_pass2=$admin_pwd" \
|
||||
--data "board_email=$admin_email" \
|
||||
--data "img_imagick=/usr/bin" \
|
||||
--data "language=en" \
|
||||
--data "dbms=mysqli" \
|
||||
--data "dbhost=localhost" \
|
||||
--data "dbport=" \
|
||||
--data "dbname=$db_user" \
|
||||
--data "dbuser=$db_user" \
|
||||
--data "dbpasswd=$db_pwd" \
|
||||
--data "table_prefix=phpbb_" \
|
||||
--data "submit=Proceed to next step" \
|
||||
> /dev/null 2>&1
|
||||
|
||||
#echo -e "\n 4 - config_file";
|
||||
sudo curl -kL -H "Host: $domain" -X POST "https://127.0.0.1$path/install/index.php?mode=install&sub=config_file" \
|
||||
--data "img_imagick=/usr/bin" \
|
||||
--data "language=en" \
|
||||
--data "dbms=mysqli" \
|
||||
--data "dbhost=localhost" \
|
||||
--data "dbport=" \
|
||||
--data "dbname=$db_user" \
|
||||
--data "dbuser=$db_user" \
|
||||
--data "dbpasswd=$db_pwd" \
|
||||
--data "table_prefix=phpbb_" \
|
||||
--data "default_lang=$lang" \
|
||||
--data "admin_name=$admin_login" \
|
||||
--data "admin_pass1=$admin_pwd" \
|
||||
--data "admin_pass2=$admin_pwd" \
|
||||
--data "board_email=$admin_email" \
|
||||
--data "submit=Proceed to next step" \
|
||||
> /dev/null 2>&1
|
||||
|
||||
#echo -e "\n 5 - advanced";
|
||||
sudo curl -kL -H "Host: $domain" -X POST "https://127.0.0.1$path/install/index.php?mode=install&sub=advanced" \
|
||||
--data "email_enable=1" \
|
||||
--data "smtp_delivery=0" \
|
||||
--data "smtp_host=" \
|
||||
--data "smtp_auth=PLAIN" \
|
||||
--data "smtp_user=" \
|
||||
--data "smtp_pass=" \
|
||||
--data "cookie_secure=1" \
|
||||
--data "force_server_vars=0" \
|
||||
--data "server_protocol=https://" \
|
||||
--data "server_name=$domain" \
|
||||
--data "server_port=443" \
|
||||
--data "script_path=$path" \
|
||||
--data "img_imagick=/usr/bin" \
|
||||
--data "language=en" \
|
||||
--data "dbms=mysqli" \
|
||||
--data "dbhost=localhost" \
|
||||
--data "dbport=" \
|
||||
--data "dbname=$db_user" \
|
||||
--data "dbuser=$db_user" \
|
||||
--data "dbpasswd=$db_pwd" \
|
||||
--data "table_prefix=phpbb_" \
|
||||
--data "default_lang=$lang" \
|
||||
--data "admin_name=$admin_login" \
|
||||
--data "admin_pass1=$admin_pwd" \
|
||||
--data "admin_pass2=$admin_pwd" \
|
||||
--data "board_email=$admin_email" \
|
||||
--data "submit=Proceed to next step" \
|
||||
> /dev/null 2>&1
|
||||
|
||||
#echo -e "\n 6 - create database";
|
||||
sudo curl -kL -H "Host: $domain" -X POST "https://127.0.0.1$path/install/index.php?mode=install&sub=create_table" \
|
||||
--data "language=en" \
|
||||
--data "dbms=mysqli" \
|
||||
--data "dbhost=localhost" \
|
||||
--data "dbport=" \
|
||||
--data "dbuser=$db_user" \
|
||||
--data "dbpasswd=$db_pwd" \
|
||||
--data "dbname=$db_user" \
|
||||
--data "table_prefix=phpbb_" \
|
||||
--data "default_lang=$lang" \
|
||||
--data "admin_name=$admin_login" \
|
||||
--data "admin_pass1=$admin_pwd" \
|
||||
--data "admin_pass2=$admin_pwd" \
|
||||
--data "board_email=$admin_email" \
|
||||
--data "img_imagick=/usr/bin" \
|
||||
--data "ftp_path=" \
|
||||
--data "ftp_user=" \
|
||||
--data "ftp_pass=" \
|
||||
--data "email_enable=1" \
|
||||
--data "smtp_delivery=0" \
|
||||
--data "smtp_host=" \
|
||||
--data "smtp_auth=PLAIN" \
|
||||
--data "smtp_user=" \
|
||||
--data "smtp_pass=" \
|
||||
--data "cookie_secure=1" \
|
||||
--data "force_server_vars=0" \
|
||||
--data "server_protocol=https://" \
|
||||
--data "server_name=$domain" \
|
||||
--data "server_port=443" \
|
||||
--data "script_path=$path" \
|
||||
--data "submit=Proceed to next step" \
|
||||
> /dev/null 2>&1
|
||||
|
||||
# We need to rename the install folder
|
||||
sudo mv $final_path/install $final_path/install_old
|
||||
|
||||
###### END OF IF ########################
|
||||
|
||||
|
||||
fi;
|
||||
|
||||
|
||||
|
||||
|
||||
# Special adjustements of phpBB AFTER installation (according to documentation)
|
||||
sudo chmod 644 $final_path/config.php
|
||||
|
||||
sudo chmod 777 $final_path/store
|
||||
sudo chmod 777 $final_path/cache
|
||||
sudo chmod 777 $final_path/files
|
||||
sudo chmod 777 $final_path/images/avatars/upload
|
||||
systemctl reload nginx
|
||||
|
|
Loading…
Add table
Reference in a new issue