[enh] Install from sources

This commit is contained in:
ljf 2018-12-14 03:36:58 +01:00
parent 14965bd324
commit 4e8c709cf4
12 changed files with 140 additions and 445 deletions

View file

@ -2,7 +2,7 @@
auto_remove=1 auto_remove=1
; Manifest ; Manifest
domain="domain.tld" (DOMAIN) domain="domain.tld" (DOMAIN)
version="10.0" version="12"
oca=0 oca=0
admin_password="testpassw0rD" admin_password="testpassw0rD"
lang="en_US" lang="en_US"
@ -17,13 +17,13 @@
upgrade=1 upgrade=1
backup_restore=1 backup_restore=1
multi_instance=1 multi_instance=1
wrong_user=0 wrong_user=1
wrong_path=0 wrong_path=0
incorrect_path=0 incorrect_path=0
corrupt_source=1 corrupt_source=1
fail_download_source=1 fail_download_source=1
port_already_use=1 port_already_use=1
final_path_already_use=0 final_path_already_use=1
;;; Levels ;;; Levels
Level 1=auto Level 1=auto
Level 2=auto Level 2=auto
@ -35,3 +35,6 @@
Level 8=0 Level 8=0
Level 9=0 Level 9=0
Level 10=0 Level 10=0
;;; Options
Email=ljf+odoo_ynh@reflexlibre.net
Notification=down

View file

@ -14,6 +14,33 @@ location @{{ app }} {
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Forwarded-Host $host;
proxy_read_timeout 999999999; proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
}
location /longpolling {
proxy_pass http://127.0.0.1:8072;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
}
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://127.0.0.1:{{ port }};
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
} }

View file

@ -1,14 +0,0 @@
[Unit]
Description=Odoo
After=network.target
[Service]
Type=simple
User=odoo
Environment=PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
ExecStart={{ bin_file }} --config {{ conf_file }} --logfile /var/log/odoo/odoo-server.log
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

View file

@ -1,12 +0,0 @@
[options]
; This is the password that allows database operations:
without_demo = all
admin_passwd = {{ admin_password }}
db_host = localhost
db_port = 5432
db_user = odoo
db_password = {{ dbpass }}
addons_path = {{ source_path }}addons
proxy_mode = true
dbfilter = ^{{ database }}$
logfile = /var/log/odoo/odoo-server.log

View file

@ -8,16 +8,16 @@
}, },
"maintainer": { "maintainer": {
"name": "ljf", "name": "ljf",
"email": "ljf+ynh-odoo@reflexlibre.net" "email": "ljf+odoo_ynh@reflexlibre.net"
}, },
"previous_maintainers": { "previous_maintainers": {
"name": "scith" "name": "scith"
}, },
"version": "11.0-1", "version": "12.0-0",
"url": "https://www.odoo.com", "url": "https://www.odoo.com",
"license": "LGPL-3.0,AGPL-3.0", "license": "LGPL-3.0,AGPL-3.0",
"requirements": { "requirements": {
"yunohost": ">= 2.6.0" "yunohost": ">= 3.3.0"
}, },
"multi_instance": true, "multi_instance": true,
"services": [ "services": [
@ -38,8 +38,8 @@
"en": "Which version of Odoo do you want to install?", "en": "Which version of Odoo do you want to install?",
"fr": "Quelle version d'Odoo souhaitez-vous installer ?" "fr": "Quelle version d'Odoo souhaitez-vous installer ?"
}, },
"choices": ["8.0", "9.0", "10.0", "11.0", "12.0"], "choices": ["8", "9", "10", "11", "12"],
"default": "12.0" "default": "12"
}, { }, {
"name": "oca", "name": "oca",
"type": "boolean", "type": "boolean",

View file

@ -2,153 +2,49 @@
# Common variables # Common variables
# #
APPNAME="odoo" export APPNAME="odoo"
DEPENDENCIES="curl postgresql xfonts-75dpi xfonts-base wkhtmltopdf node-less python3-dev gcc libldap2-dev libssl-dev libsasl2-dev python3-pip python3-dev python3-venv python3-wheel libxslt-dev libzip-dev python3-setuptools python-virtualenv python-wheel python-setuptools libjpeg-dev zlib1g-dev"
function define_paths() {
command -v bc >/dev/null 2>&1 || ynh_package_install bc
# In odoo 10 some file change
if [ $(echo "$odoo_version >= 10" | bc) -ne 0 ]; then
if [ $(echo "$odoo_version >= 11" | bc) -ne 0 ]; then
export source_path=/usr/lib/python3/dist-packages/odoo/
else
export source_path=/usr/lib/python2.7/dist-packages/odoo/
fi
export conf_file=/etc/odoo/odoo.conf
export bin_file=/usr/bin/odoo
else
export source_path=/usr/lib/python2.7/dist-packages/openerp/
export conf_file=/etc/odoo/openerp-server.conf
export bin_file=/usr/bin/openerp-server
fi
}
function check_odoo_version () {
command -v bc >/dev/null 2>&1 || ynh_package_install bc
if [ $(echo "$odoo_version >= 10" | bc) -ne 0 ]; then
if [ -f /usr/bin/openerp-server ]; then
ynh_die "Another version of odoo is installed"
fi
else
if [ -f /usr/bin/odoo ]; then
ynh_die "Another version of odoo is installed"
fi
fi
}
function define_is_master() {
if [ -f $bin_file ]; then
export is_master=false
else
export is_master=true
fi
}
function define_port () {
if [ "$is_master" = true ]; then
export port=$(ynh_find_port 8069)
yunohost app checkport $port
if [[ ! $? -eq 0 ]]; then
ynh_die "Port 8069 unavailable" 1
fi
else
# FIXME find master port
export port="8069"
fi
}
function define_dbpass () {
# TODO set -x
if [ "$is_master" = true ]; then
# Generate random password
if [ "${1:-}" = "restore" ]; then
export dbpass=$(ynh_app_setting_get $app psqlpwd)
else
export dbpass=$(ynh_string_random)
fi
else
export dbpass=$(grep db_password /etc/odoo/odoo.conf | cut -d \= -f 2 | sed -e 's/^[ \t]*//')
fi
ynh_app_setting_set "$app" psqlpwd "$dbpass"
}
# Install dependencies # Install dependencies
function install_dependencies() { function install_dependencies() {
ynh_add_swap 1024 ynh_add_swap 1024
if [ ! -f /etc/apt/sources.list.d/odoo.list ]; then ynh_install_app_dependencies $DEPENDENCIES
# Install Odoo
# Prepare installation
# We nee to setup postgresql before to let the odoo package make some magic
# see red comment on https://nightly.odoo.com/
ynh_package_install curl bc postgresql
# Install Odoo
curl -sS https://nightly.odoo.com/odoo.key | sudo apt-key add -
sh -c "echo 'deb http://nightly.odoo.com/${odoo_version}/nightly/deb/ ./' > /etc/apt/sources.list.d/odoo.list"
# TODO if 8.0 install https://www.odoo.com/apps/modules/8.0/shell/
fi
if is_jessie ; then
sudo echo "deb http://http.debian.net/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/jessie-backport.list
apt-get update
ynh_install_app_dependencies curl postgresql odoo xfonts-75dpi xfonts-base wkhtmltopdf node-less python-xlrd python3-dev gcc libldap2-dev libssl-dev libsasl2-dev python3-pip
pip3 install pyldap
fi
if is_stretch ; then
sudo echo "deb http://http.debian.net/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/stretch-backport.list
if [ $(echo "$odoo_version <= 10" | bc) -ne 0 ]; then
cat > /tmp/python-pypdf_1.13_all.control << EOF # Make a control file for equivs-build
Section: python
Package: python-pypdf
Version: 1.13
Description: fake package to provide python-pypdf
EOF
ynh_package_install python3-pip
ynh_package_install_from_equivs /tmp/python-pypdf_1.13_all.control
rm /tmp/python-pypdf_1.13_all.control
pip install pyPdf
fi
apt update
ynh_install_app_dependencies curl postgresql odoo xfonts-75dpi xfonts-base wkhtmltopdf node-less python-xlrd python3-dev gcc libldap2-dev libssl-dev libsasl2-dev python3-pip python3-num2words python3-pyldap python3-phonenumbers
fi
if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then
# The debian package has a bug so we deploy a more recent version # The debian package has a bug so we deploy a more recent version
ynh_setup_source /usr/ ynh_setup_source /usr/
fi fi
} pushd $final_path
if grep "python3" $final_path/$APPNAME/$APPNAME-bin ; then
python3 -m venv venv
# Create db venv/bin/pip3 install wheel
function create_general_db() { venv/bin/pip3 install -r $APPNAME/requirements.txt
service postgresql reload else
if ! su -c "psql -lqt | cut -d \| -f 1 " - postgres | grep $APPNAME; then virtualenv venv
# Generate random password venv/bin/pip install wheel
ynh_psql_execute_as_root "ALTER USER $APPNAME WITH CREATEDB;" venv/bin/pip install -r $APPNAME/requirements.txt
ynh_psql_execute_as_root "ALTER USER $APPNAME WITH PASSWORD '$dbpass';"
su -c "createdb -O $APPNAME $APPNAME" - postgres
fi fi
popd
} }
# Add services # Add services
function add_services() { function add_services() {
if ! grep "^postgresql:$" /etc/yunohost/services.yml; then if ! grep "^postgresql:$" /etc/yunohost/services.yml; then
yunohost service add postgresql yunohost service add postgresql
fi fi
if ! grep "^odoo:$" /etc/yunohost/services.yml; then ynh_configure app.service /etc/systemd/system/$app.service
ynh_configure odoo.service /etc/systemd/system/odoo.service systemctl daemon-reload
rm /etc/init.d/odoo
systemctl daemon-reload
yunohost service add odoo --log /var/log/odoo/odoo-server.log yunohost service add $app --log /var/log/$app.log
yunohost service stop odoo yunohost service stop $app
yunohost service start odoo yunohost service start $app
yunohost service enable odoo yunohost service enable $app
fi
} }
function ssowat_and_restart() { function ssowat_and_restart() {
# Restart odoo service # Restart odoo service
service odoo restart service $app restart
# Configure SSOWat # Configure SSOWat
ynh_sso_access "/web/database/manager" ynh_sso_access "/web/database/manager"

View file

@ -1,53 +1,7 @@
log() {
echo "${1}"
}
info() {
log "[INFO] ${1}"
}
warn() {
log "[WARN] ${1}"
}
err() {
log "[ERR] ${1}"
}
ynh_check_var () { ynh_check_var () {
test -n "$1" || ynh_die "$2" test -n "$1" || ynh_die "$2"
} }
ynh_exit_properly () {
exit_code=$?
if [ "$exit_code" -eq 0 ]; then
exit 0
fi
trap '' EXIT
set +eu
echo -e "\e[91m \e[1m"
err "$app script has encountered an error."
if type -t CLEAN_SETUP > /dev/null; then
CLEAN_SETUP
fi
ynh_die
}
# Activate signal capture
# Exit if a command fail, and if a variable is used unset.
# Capturing exit signals on shell script
#
# example: CLEAN_SETUP () {
# # Clean residual file un remove by remove script
# }
# ynh_trap_on
ynh_trap_on () {
set -eu
trap ynh_exit_properly EXIT # Capturing exit signals on shell script
}
ynh_export () { ynh_export () {
local ynh_arg="" local ynh_arg=""
for var in $@; for var in $@;
@ -78,43 +32,13 @@ ynh_sso_access () {
ynh_configure () { ynh_configure () {
local TEMPLATE=$1 local TEMPLATE=$1
local DEST=$2 local DEST=$2
type j2 2>/dev/null || sudo pip install j2cli ynh_render_template "${YNH_CWD}/../conf/$TEMPLATE.j2" "$DEST"
j2 "${YNH_CWD}/../conf/$TEMPLATE.j2" > "${YNH_CWD}/../conf/$TEMPLATE"
sudo cp "${YNH_CWD}/../conf/$TEMPLATE" "$DEST"
} }
ynh_configure_nginx () { ynh_configure_nginx () {
ynh_configure nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf ynh_configure nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
sudo service nginx reload sudo service nginx reload
} }
# Find a free port and return it
#
# example: port=$(ynh_find_port 8080)
#
# usage: ynh_find_port begin_port
# | arg: begin_port - port to start to search
ynh_find_port () {
port=$1
test -n "$port" || ynh_die "The argument of ynh_find_port must be a valid port."
while netcat -z 127.0.0.1 $port # Check if the port is free
do
port=$((port+1)) # Else, pass to next port
done
echo $port
}
ynh_rm_nginx_conf () {
if [ -e "/etc/nginx/conf.d/$domain.d/$app.conf" ]; then
sudo rm "/etc/nginx/conf.d/$domain.d/$app.conf"
sudo service nginx reload
fi
}
ynh_secure_rm () {
[[ "/var/www /opt /home/yunohost.app" =~ $1 ]] \
|| (test -n "$1" && sudo rm -Rf $1 )
}
# Upgrade # Upgrade
ynh_read_json () { ynh_read_json () {
@ -136,80 +60,8 @@ ynh_exit_if_up_to_date () {
} }
# # Execute a command as root user
#
# usage: ynh_psql_execute_as_root sql [db]
# | arg: sql - the SQL command to execute
# | arg: db - the database to connect to
ynh_psql_execute_as_root () {
sudo su -c "psql" - postgres <<< ${1}
}
# Create a user
#
# usage: ynh_psql_create_user user pwd [host]
# | arg: user - the user name to create
# | arg: pwd - the password to identify user by
ynh_psql_create_user() {
ynh_psql_execute_as_root \
"CREATE USER ${1} WITH PASSWORD '${2}';"
}
# Create a database and grant optionnaly privilegies to a user
#
# usage: ynh_psql_create_db db [user [pwd]]
# | arg: db - the database name to create
# | arg: user - the user to grant privilegies
# | arg: pwd - the password to identify user by
ynh_psql_create_db() {
db=$1
# grant all privilegies to user
if [[ $# -gt 1 ]]; then
ynh_psql_create_user ${2} "${3}"
sudo su -c "createdb -O ${2} $db" - postgres
else
sudo su -c "createdb $db" - postgres
fi
}
# Drop a database
#
# usage: ynh_psql_drop_db db
# | arg: db - the database name to drop
ynh_psql_drop_db() {
sudo su -c "dropdb ${1}" - postgres
}
# Drop a user
#
# usage: ynh_psql_drop_user user
# | arg: user - the user name to drop
ynh_psql_drop_user() {
sudo su -c "dropuser ${1}" - postgres
}
# Execute a command as another user
# usage: exec_as USER COMMAND [ARG ...]
exec_as() {
local USER=$1
shift 1
if [[ $USER = $(whoami) ]]; then
eval "$@"
else
# use sudo twice to be root and be allowed to use another user
sudo sudo -u "$USER" "$@"
fi
}
ynh_debian_release () {
lsb_release --codename --short
}
is_stretch () { is_stretch () {
if [ "$(ynh_debian_release)" == "stretch" ] if [ "$(ynh_get_debian_release)" == "stretch" ]
then then
return 0 return 0
else else
@ -218,7 +70,7 @@ is_stretch () {
} }
is_jessie () { is_jessie () {
if [ "$(ynh_debian_release)" == "jessie" ] if [ "$(ynh_get_debian_release)" == "jessie" ]
then then
return 0 return 0
else else

View file

@ -9,27 +9,18 @@ source ../settings/scripts/_common.sh
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get "$app" domain) domain=$(ynh_app_setting_get "$app" domain)
odoo_version=$(ynh_app_setting_get "$app" odoo_version) final_path=$(ynh_app_setting_get "$app" final_path)
define_paths
# Backup sources & data # Backup sources & data
ynh_backup "${source_path}addons" "$1${source_path}addons" ynh_backup "${final_path}/$APPNAME"
mkdir -p /opt/odoo-oca-addons ynh_backup "${final_path}/custom-addons"
ynh_backup "/opt/odoo-oca-addons" "$1/opt/odoo-oca-addons" ynh_backup "${final_path}/.local"
# Backup configuration # Backup configuration
ynh_backup "$conf_file" "$1$conf_file" ynh_backup "$conf_file"
# Copy NGINX configuration # Copy NGINX configuration
ynh_backup "/etc/nginx/conf.d/${domain}.d/${app}.conf" "etc/nginx/conf.d/${domain}.d/${app}.conf" ynh_backup "/etc/nginx/conf.d/${domain}.d/${app}.conf"
# Save postgresql conf
if is_jessie ; then
ynh_backup "/etc/postgresql/9.4/main/pg_hba.conf" "etc/postgresql/9.4/main/pg_hba.conf"
else
ynh_backup "/etc/postgresql/9.6/main/pg_hba.conf" "etc/postgresql/9.6/main/pg_hba.conf"
fi
# Copy database # Copy database
database=${domain//./-} sudo su -c "pg_dump $app" postgres > ./dump.sql
sudo su -c "pg_dump $database" postgres > ./dump.sql

View file

@ -6,66 +6,65 @@ source /usr/share/yunohost/helpers
source _future.sh source _future.sh
source _common.sh source _common.sh
ynh_trap_on ynh_abort_if_errors
# Arguments from manifest # Arguments from manifest
export app=$YNH_APP_INSTANCE_NAME export app=$YNH_APP_INSTANCE_NAME
export domain=$YNH_APP_ARG_DOMAIN ynh_export domain oca admin_password lang tz
export odoo_version=$YNH_APP_ARG_VERSION export odoo_version=$YNH_APP_ARG_VERSION
export oca=$YNH_APP_ARG_OCA
export admin_password=$YNH_APP_ARG_ADMIN_PASSWORD
export lang=$YNH_APP_ARG_LANG
export tz=$YNH_APP_ARG_TZ
export is_public=0 export is_public=0
export final_path="/var/www/$app"
export conf_file=/etc/$app/main.conf
export bin_file="$final_path/venv/bin/python $final_path/$APPNAME/$APPNAME-bin"
if [ "$odoo_version" = "9" ]; then
bin_file="$final_path/venv/bin/python $final_path/$APPNAME/$APPNAME.py"
fi
if [ "$odoo_version" = "8" ]; then
bin_file="$final_path/venv/bin/python $final_path/$APPNAME/$APPNAME.py"
fi
export db_name=$(ynh_sanitize_dbid $app)
export port=$(ynh_find_port 8069)
export port_chat=$(ynh_find_port 8072)
#================================================= #=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THIS ARGS # CHECK IF THE APP CAN BE INSTALLED WITH THIS ARGS
#================================================= #=================================================
ynh_check_var "$app" "app name not set" test ! -e "$final_path" || ynh_die "This path already contains a folder"
ynh_webpath_available "$domain" "/" ynh_webpath_available $domain "/"
check_odoo_version ynh_webpath_register $app $domain "/"
define_paths
define_is_master
define_port
define_dbpass
#================================================= #=================================================
# SETUP THE APP BY MODIFYING THE SYSTEM # SETUP THE APP BY MODIFYING THE SYSTEM
#================================================= #=================================================
function setup_files() { function setup_files() {
# Set admin password
export database=${domain//./-} ynh_setup_source $final_path/$APPNAME $odoo_version
ynh_configure openerp-server.conf $conf_file mkdir -p $final_path/custom-addons
chown odoo:odoo $conf_file chown -R $app:$app $final_path
ynh_configure server.conf $conf_file
chown $app:$app $conf_file
# Autoinstall the LDAP auth module # Autoinstall the LDAP auth module
if [ $(echo "$odoo_version >= 10" | bc) -ne 0 ]; then if ls $final_path/$APPNAME/$APPNAME-bin > /dev/null ; then
ynh_replace_string "^{$" "{'auto_install': True," ${source_path}addons/auth_ldap/__manifest__.py ynh_replace_string "^{$" "{'auto_install': True," ${final_path}/$APPNAME/addons/auth_ldap/__manifest__.py
else else
ynh_replace_string "'auto_install': False" "'auto_install': True" ${source_path}addons/auth_ldap/__openerp__.py ynh_replace_string "'auto_install': False" "'auto_install': True" ${final_path}/$APPNAME/addons/auth_ldap/__openerp__.py
fi fi
# Fix peer authentification issue touch /var/log/$app.log
sed -i '/local\s*all\s*all\s*peer/i \ chown $app:$app /var/log/$app.log
local all odoo password' /etc/postgresql/9.*/main/pg_hba.conf
ynh_configure_nginx ynh_configure_nginx
} }
function setup_database() { function setup_database() {
# Setup database: not working
database=${domain//./-}
if [ $(echo "$odoo_version <= 8" | bc) -ne 0 ]; then
su -c "createdb -O $APPNAME $database" - postgres
fi
# Load translation # Load translation
sudo -u odoo $bin_file -c $conf_file --stop-after-init -i auth_ldap -d $database sudo -u $app $bin_file -c $conf_file --stop-after-init -i auth_ldap -d $app
sudo -u odoo $bin_file -c $conf_file --stop-after-init -d $database --load-language $lang sudo -u $app $bin_file -c $conf_file --stop-after-init -d $app --load-language $lang
# Configure language, timezone and ldap # Configure language, timezone and ldap
sudo -u odoo $bin_file shell -c $conf_file -d $database <<< \ sudo -u $app $bin_file shell -c $conf_file -d $app <<< \
" "
self.env['res.users'].search([['login', '=', 'admin']])[0].write({'password': '$admin_password'}) self.env['res.users'].search([['login', '=', 'admin']])[0].write({'password': '$admin_password'})
self.env.cr.commit() self.env.cr.commit()
@ -92,12 +91,13 @@ self.company_id.ldaps.create({
self.env.cr.commit() self.env.cr.commit()
" "
} }
ynh_save_args domain odoo_version oca lang tz final_path conf_file db_name port port_chat
ynh_webpath_register "$app" "$domain" "/" ynh_psql_test_if_first_run
ynh_save_args domain odoo_version oca lang tz is_master port ynh_psql_setup_db $db_name $db_name
install_dependencies export db_pass=$(ynh_app_setting_get $app psqlpwd)
ynh_system_user_create $app $final_path
setup_files setup_files
create_general_db install_dependencies
add_services add_services
setup_database setup_database
ssowat_and_restart ssowat_and_restart

View file

@ -10,47 +10,19 @@ app=$YNH_APP_INSTANCE_NAME
# Retrieve app settings # Retrieve app settings
domain=$(ynh_app_setting_get "$app" domain) domain=$(ynh_app_setting_get "$app" domain)
odoo_version=$(ynh_app_setting_get "$app" odoo_version) final_path=$(ynh_app_setting_get "$app" final_path)
if [ "$odoo_version" = "" ]; then
exit 0
fi
database=${domain//./-} database=${domain//./-}
is_master=$(ynh_app_setting_get "$app" is_master)
define_paths yunohost service stop $app
yunohost service remove $app
ynh_psql_remove_db $app $app
yunohost service stop odoo ynh_secure_remove "$final_path"
list=$(yunohost app list --installed | grep odoo)
# If removing master instance, remove Odoo.
if [ $(echo $list | wc -l) = 1 ]; then
rm -f /etc/apt/sources.list.d/odoo.list
apt-get update
yunohost service remove odoo
ynh_psql_drop_db $APPNAME
#ynh_psql_drop_user $APPNAME
else
# Set another app as master
if [ "$is_master" = "true" ]; then
for instance in $list; do
if [ "$instance" != "$app" ]; then
ynh_app_setting_set "$instance" is_master "true"
break
fi
done
is_master="false"
fi
fi
ynh_remove_app_dependencies ynh_remove_app_dependencies
# Remove database ynh_system_user_delete $app
ynh_psql_drop_db $database
if [ "$is_master" = "false" ]; then ynh_remove_nginx_config
yunohost service start odoo
fi
# Remove NGINX conf
ynh_rm_nginx_conf
ynh_del_swap ynh_del_swap

View file

@ -6,59 +6,44 @@ source /usr/share/yunohost/helpers
source ../settings/scripts/_future.sh source ../settings/scripts/_future.sh
source ../settings/scripts/_common.sh source ../settings/scripts/_common.sh
ynh_trap_on ynh_abort_if_errors
export app=$YNH_APP_INSTANCE_NAME export app=$YNH_APP_INSTANCE_NAME
export domain=$(ynh_app_setting_get $app domain) export domain=$(ynh_app_setting_get $app domain)
export odoo_version=$(ynh_app_setting_get $app odoo_version) export odoo_version=$(ynh_app_setting_get $app odoo_version)
export oca=$(ynh_app_setting_get $app oca) export oca=$(ynh_app_setting_get $app oca)
export port=$(ynh_app_setting_get $app port) export port=$(ynh_app_setting_get $app port)
export port_chat=$(ynh_app_setting_get $app port_chat)
export db_name=$(ynh_app_setting_get $app db_name)
export is_public=0 export is_public=0
#================================================= #=================================================
# CHECK IF THE APP CAN BE RESTORED # CHECK IF THE APP CAN BE RESTORED
#================================================= #=================================================
ynh_check_var "$app" "app name not set"
ynh_webpath_available "$domain" "/" ynh_webpath_available "$domain" "/"
check_odoo_version
define_paths
define_is_master
define_port
define_dbpass restore
#================================================= #=================================================
# RESTORE THE APP BY MODIFYING THE SYSTEM # RESTORE THE APP BY MODIFYING THE SYSTEM
#================================================= #=================================================
# Restore files # Restore files
function restore_files () { function restore_files () {
if [ "$is_master" = true ]; then ynh_restore
ynh_restore chown -R $app:$app $final_path
chown -R odoo:odoo /var/lib/odoo/ chown $app:$app $conf_file
chown postgres:postgres /etc/postgresql/9.*/main/pg_hba.conf touch /var/log/$app.log
else chown $app:$app /var/log/$app.log
# If odoo is already setup we just restore nginx and add some missing
# modules. Other files are already on system, and we don't want to
# erase it
# Configure Nginx and reload
ynh_restore_file "/etc/nginx/conf.d/${domain}.d/${app}.conf"
# TODO Restore plugin/addons
fi
} }
# Restore database # Restore database
function restore_database () { function restore_database () {
# Restore database su -c "psql $app" postgres < ./dump.sql
database=${domain//./-}
su -c "createdb -O $APPNAME $database" - postgres
su -c "psql $database" postgres < ./dump.sql
} }
ynh_save_args is_master port ynh_psql_test_if_first_run
install_dependencies ynh_psql_setup_db $db_name $db_name $db_pass
ynh_system_user_create $app $final_path
restore_files restore_files
create_general_db install_dependencies
add_services add_services
restore_database restore_database
ssowat_and_restart ssowat_and_restart

View file

@ -46,11 +46,6 @@ ynh_clean_setup () {
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
#=================================================
# CHECK THE PATH
#=================================================
path_url=$(ynh_normalize_url_path $path_url) # Vérifie et corrige la syntaxe du path.
#================================================= #=================================================
# STEP Migrations # STEP Migrations
@ -59,13 +54,6 @@ path_url=$(ynh_normalize_url_path $path_url) # Vérifie et corrige la syntaxe du
if ynh_version_le "9.0-0" ; then if ynh_version_le "9.0-0" ; then
# set new args # set new args
odoo_version=${odoo_version:-$(ynh_app_setting_get "$app" version)} odoo_version=${odoo_version:-$(ynh_app_setting_get "$app" version)}
if [ "$is_master" = "" ]; then
if [ "$(ynh_app_setting_get "$app" instance)" = "master" ];then
is_master="true"
else
is_master="false"
fi
fi
port=${port:-8069} port=${port:-8069}
oca=${oca:-false} oca=${oca:-false}
ynh_save_args odoo_version oca is_master port ynh_save_args odoo_version oca is_master port
@ -80,8 +68,15 @@ if ynh_version_le "11.0-1" ; then
ynh_save_args major_upgrade ynh_save_args major_upgrade
fi fi
ynh_system_user_create $app
ynh_setup_source "$final_path/$APPNAME" $odoo_version
mkdir -p $final_path/custom-addons
chown -R $app:$app $final_path
ynh_configure server.conf $conf_file
chown $app:$app $conf_file
touch /var/log/$app.log
chown $app:$app /var/log/$app.log
# Upgrade official package install_dependencies
apt-get install odoo -y -qq service $app restart