[enh] Install from sources
This commit is contained in:
parent
14965bd324
commit
4e8c709cf4
12 changed files with 140 additions and 445 deletions
|
@ -2,7 +2,7 @@
|
|||
auto_remove=1
|
||||
; Manifest
|
||||
domain="domain.tld" (DOMAIN)
|
||||
version="10.0"
|
||||
version="12"
|
||||
oca=0
|
||||
admin_password="testpassw0rD"
|
||||
lang="en_US"
|
||||
|
@ -17,13 +17,13 @@
|
|||
upgrade=1
|
||||
backup_restore=1
|
||||
multi_instance=1
|
||||
wrong_user=0
|
||||
wrong_user=1
|
||||
wrong_path=0
|
||||
incorrect_path=0
|
||||
corrupt_source=1
|
||||
fail_download_source=1
|
||||
port_already_use=1
|
||||
final_path_already_use=0
|
||||
final_path_already_use=1
|
||||
;;; Levels
|
||||
Level 1=auto
|
||||
Level 2=auto
|
||||
|
@ -35,3 +35,6 @@
|
|||
Level 8=0
|
||||
Level 9=0
|
||||
Level 10=0
|
||||
;;; Options
|
||||
Email=ljf+odoo_ynh@reflexlibre.net
|
||||
Notification=down
|
||||
|
|
|
@ -14,6 +14,33 @@ location @{{ app }} {
|
|||
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 $server_name;
|
||||
proxy_read_timeout 999999999;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -8,16 +8,16 @@
|
|||
},
|
||||
"maintainer": {
|
||||
"name": "ljf",
|
||||
"email": "ljf+ynh-odoo@reflexlibre.net"
|
||||
"email": "ljf+odoo_ynh@reflexlibre.net"
|
||||
},
|
||||
"previous_maintainers": {
|
||||
"name": "scith"
|
||||
},
|
||||
"version": "11.0-1",
|
||||
"version": "12.0-0",
|
||||
"url": "https://www.odoo.com",
|
||||
"license": "LGPL-3.0,AGPL-3.0",
|
||||
"requirements": {
|
||||
"yunohost": ">= 2.6.0"
|
||||
"yunohost": ">= 3.3.0"
|
||||
},
|
||||
"multi_instance": true,
|
||||
"services": [
|
||||
|
@ -38,8 +38,8 @@
|
|||
"en": "Which version of Odoo do you want to install?",
|
||||
"fr": "Quelle version d'Odoo souhaitez-vous installer ?"
|
||||
},
|
||||
"choices": ["8.0", "9.0", "10.0", "11.0", "12.0"],
|
||||
"default": "12.0"
|
||||
"choices": ["8", "9", "10", "11", "12"],
|
||||
"default": "12"
|
||||
}, {
|
||||
"name": "oca",
|
||||
"type": "boolean",
|
||||
|
|
|
@ -2,153 +2,49 @@
|
|||
# Common variables
|
||||
#
|
||||
|
||||
APPNAME="odoo"
|
||||
|
||||
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"
|
||||
}
|
||||
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"
|
||||
|
||||
# Install dependencies
|
||||
function install_dependencies() {
|
||||
ynh_add_swap 1024
|
||||
if [ ! -f /etc/apt/sources.list.d/odoo.list ]; then
|
||||
# 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
|
||||
ynh_install_app_dependencies $DEPENDENCIES
|
||||
|
||||
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
|
||||
ynh_setup_source /usr/
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Create db
|
||||
function create_general_db() {
|
||||
service postgresql reload
|
||||
if ! su -c "psql -lqt | cut -d \| -f 1 " - postgres | grep $APPNAME; then
|
||||
# Generate random password
|
||||
ynh_psql_execute_as_root "ALTER USER $APPNAME WITH CREATEDB;"
|
||||
ynh_psql_execute_as_root "ALTER USER $APPNAME WITH PASSWORD '$dbpass';"
|
||||
su -c "createdb -O $APPNAME $APPNAME" - postgres
|
||||
pushd $final_path
|
||||
if grep "python3" $final_path/$APPNAME/$APPNAME-bin ; then
|
||||
python3 -m venv venv
|
||||
venv/bin/pip3 install wheel
|
||||
venv/bin/pip3 install -r $APPNAME/requirements.txt
|
||||
else
|
||||
virtualenv venv
|
||||
venv/bin/pip install wheel
|
||||
venv/bin/pip install -r $APPNAME/requirements.txt
|
||||
fi
|
||||
popd
|
||||
}
|
||||
|
||||
|
||||
# Add services
|
||||
function add_services() {
|
||||
if ! grep "^postgresql:$" /etc/yunohost/services.yml; then
|
||||
yunohost service add postgresql
|
||||
fi
|
||||
if ! grep "^odoo:$" /etc/yunohost/services.yml; then
|
||||
ynh_configure odoo.service /etc/systemd/system/odoo.service
|
||||
rm /etc/init.d/odoo
|
||||
systemctl daemon-reload
|
||||
ynh_configure app.service /etc/systemd/system/$app.service
|
||||
systemctl daemon-reload
|
||||
|
||||
yunohost service add odoo --log /var/log/odoo/odoo-server.log
|
||||
yunohost service stop odoo
|
||||
yunohost service start odoo
|
||||
yunohost service enable odoo
|
||||
fi
|
||||
yunohost service add $app --log /var/log/$app.log
|
||||
yunohost service stop $app
|
||||
yunohost service start $app
|
||||
yunohost service enable $app
|
||||
}
|
||||
|
||||
function ssowat_and_restart() {
|
||||
# Restart odoo service
|
||||
service odoo restart
|
||||
service $app restart
|
||||
|
||||
# Configure SSOWat
|
||||
ynh_sso_access "/web/database/manager"
|
||||
|
|
|
@ -1,53 +1,7 @@
|
|||
|
||||
log() {
|
||||
echo "${1}"
|
||||
}
|
||||
|
||||
info() {
|
||||
log "[INFO] ${1}"
|
||||
}
|
||||
|
||||
warn() {
|
||||
log "[WARN] ${1}"
|
||||
}
|
||||
|
||||
err() {
|
||||
log "[ERR] ${1}"
|
||||
}
|
||||
ynh_check_var () {
|
||||
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 () {
|
||||
local ynh_arg=""
|
||||
for var in $@;
|
||||
|
@ -78,43 +32,13 @@ ynh_sso_access () {
|
|||
ynh_configure () {
|
||||
local TEMPLATE=$1
|
||||
local DEST=$2
|
||||
type j2 2>/dev/null || sudo pip install j2cli
|
||||
j2 "${YNH_CWD}/../conf/$TEMPLATE.j2" > "${YNH_CWD}/../conf/$TEMPLATE"
|
||||
sudo cp "${YNH_CWD}/../conf/$TEMPLATE" "$DEST"
|
||||
ynh_render_template "${YNH_CWD}/../conf/$TEMPLATE.j2" "$DEST"
|
||||
}
|
||||
|
||||
ynh_configure_nginx () {
|
||||
ynh_configure nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
|
||||
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
|
||||
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 () {
|
||||
if [ "$(ynh_debian_release)" == "stretch" ]
|
||||
if [ "$(ynh_get_debian_release)" == "stretch" ]
|
||||
then
|
||||
return 0
|
||||
else
|
||||
|
@ -218,7 +70,7 @@ is_stretch () {
|
|||
}
|
||||
|
||||
is_jessie () {
|
||||
if [ "$(ynh_debian_release)" == "jessie" ]
|
||||
if [ "$(ynh_get_debian_release)" == "jessie" ]
|
||||
then
|
||||
return 0
|
||||
else
|
||||
|
|
|
@ -9,27 +9,18 @@ source ../settings/scripts/_common.sh
|
|||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
domain=$(ynh_app_setting_get "$app" domain)
|
||||
odoo_version=$(ynh_app_setting_get "$app" odoo_version)
|
||||
|
||||
define_paths
|
||||
final_path=$(ynh_app_setting_get "$app" final_path)
|
||||
|
||||
# Backup sources & data
|
||||
ynh_backup "${source_path}addons" "$1${source_path}addons"
|
||||
mkdir -p /opt/odoo-oca-addons
|
||||
ynh_backup "/opt/odoo-oca-addons" "$1/opt/odoo-oca-addons"
|
||||
ynh_backup "${final_path}/$APPNAME"
|
||||
ynh_backup "${final_path}/custom-addons"
|
||||
ynh_backup "${final_path}/.local"
|
||||
|
||||
# Backup configuration
|
||||
ynh_backup "$conf_file" "$1$conf_file"
|
||||
ynh_backup "$conf_file"
|
||||
|
||||
# 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
|
||||
database=${domain//./-}
|
||||
sudo su -c "pg_dump $database" postgres > ./dump.sql
|
||||
sudo su -c "pg_dump $app" postgres > ./dump.sql
|
||||
|
|
|
@ -6,66 +6,65 @@ source /usr/share/yunohost/helpers
|
|||
source _future.sh
|
||||
source _common.sh
|
||||
|
||||
ynh_trap_on
|
||||
ynh_abort_if_errors
|
||||
|
||||
# Arguments from manifest
|
||||
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 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 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
|
||||
#=================================================
|
||||
ynh_check_var "$app" "app name not set"
|
||||
ynh_webpath_available "$domain" "/"
|
||||
check_odoo_version
|
||||
define_paths
|
||||
define_is_master
|
||||
define_port
|
||||
define_dbpass
|
||||
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
||||
ynh_webpath_available $domain "/"
|
||||
ynh_webpath_register $app $domain "/"
|
||||
|
||||
|
||||
#=================================================
|
||||
# SETUP THE APP BY MODIFYING THE SYSTEM
|
||||
#=================================================
|
||||
function setup_files() {
|
||||
# Set admin password
|
||||
export database=${domain//./-}
|
||||
ynh_configure openerp-server.conf $conf_file
|
||||
chown odoo:odoo $conf_file
|
||||
|
||||
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
|
||||
|
||||
# Autoinstall the LDAP auth module
|
||||
if [ $(echo "$odoo_version >= 10" | bc) -ne 0 ]; then
|
||||
ynh_replace_string "^{$" "{'auto_install': True," ${source_path}addons/auth_ldap/__manifest__.py
|
||||
if ls $final_path/$APPNAME/$APPNAME-bin > /dev/null ; then
|
||||
ynh_replace_string "^{$" "{'auto_install': True," ${final_path}/$APPNAME/addons/auth_ldap/__manifest__.py
|
||||
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
|
||||
|
||||
# Fix peer authentification issue
|
||||
sed -i '/local\s*all\s*all\s*peer/i \
|
||||
local all odoo password' /etc/postgresql/9.*/main/pg_hba.conf
|
||||
touch /var/log/$app.log
|
||||
chown $app:$app /var/log/$app.log
|
||||
|
||||
ynh_configure_nginx
|
||||
}
|
||||
|
||||
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
|
||||
sudo -u odoo $bin_file -c $conf_file --stop-after-init -i auth_ldap -d $database
|
||||
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 -i auth_ldap -d $app
|
||||
sudo -u $app $bin_file -c $conf_file --stop-after-init -d $app --load-language $lang
|
||||
# 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.cr.commit()
|
||||
|
@ -92,12 +91,13 @@ self.company_id.ldaps.create({
|
|||
self.env.cr.commit()
|
||||
"
|
||||
}
|
||||
|
||||
ynh_webpath_register "$app" "$domain" "/"
|
||||
ynh_save_args domain odoo_version oca lang tz is_master port
|
||||
install_dependencies
|
||||
ynh_save_args domain odoo_version oca lang tz final_path conf_file db_name port port_chat
|
||||
ynh_psql_test_if_first_run
|
||||
ynh_psql_setup_db $db_name $db_name
|
||||
export db_pass=$(ynh_app_setting_get $app psqlpwd)
|
||||
ynh_system_user_create $app $final_path
|
||||
setup_files
|
||||
create_general_db
|
||||
install_dependencies
|
||||
add_services
|
||||
setup_database
|
||||
ssowat_and_restart
|
||||
|
|
|
@ -10,47 +10,19 @@ app=$YNH_APP_INSTANCE_NAME
|
|||
|
||||
# Retrieve app settings
|
||||
domain=$(ynh_app_setting_get "$app" domain)
|
||||
odoo_version=$(ynh_app_setting_get "$app" odoo_version)
|
||||
if [ "$odoo_version" = "" ]; then
|
||||
exit 0
|
||||
fi
|
||||
final_path=$(ynh_app_setting_get "$app" final_path)
|
||||
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
|
||||
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_secure_remove "$final_path"
|
||||
|
||||
ynh_remove_app_dependencies
|
||||
|
||||
# Remove database
|
||||
ynh_psql_drop_db $database
|
||||
ynh_system_user_delete $app
|
||||
|
||||
if [ "$is_master" = "false" ]; then
|
||||
yunohost service start odoo
|
||||
fi
|
||||
|
||||
# Remove NGINX conf
|
||||
ynh_rm_nginx_conf
|
||||
ynh_remove_nginx_config
|
||||
|
||||
ynh_del_swap
|
||||
|
|
|
@ -6,59 +6,44 @@ source /usr/share/yunohost/helpers
|
|||
source ../settings/scripts/_future.sh
|
||||
source ../settings/scripts/_common.sh
|
||||
|
||||
ynh_trap_on
|
||||
ynh_abort_if_errors
|
||||
|
||||
export app=$YNH_APP_INSTANCE_NAME
|
||||
export domain=$(ynh_app_setting_get $app domain)
|
||||
export odoo_version=$(ynh_app_setting_get $app odoo_version)
|
||||
export oca=$(ynh_app_setting_get $app oca)
|
||||
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
|
||||
|
||||
#=================================================
|
||||
# CHECK IF THE APP CAN BE RESTORED
|
||||
#=================================================
|
||||
ynh_check_var "$app" "app name not set"
|
||||
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 files
|
||||
function restore_files () {
|
||||
if [ "$is_master" = true ]; then
|
||||
ynh_restore
|
||||
chown -R odoo:odoo /var/lib/odoo/
|
||||
chown postgres:postgres /etc/postgresql/9.*/main/pg_hba.conf
|
||||
else
|
||||
# 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
|
||||
ynh_restore
|
||||
chown -R $app:$app $final_path
|
||||
chown $app:$app $conf_file
|
||||
touch /var/log/$app.log
|
||||
chown $app:$app /var/log/$app.log
|
||||
}
|
||||
|
||||
# Restore database
|
||||
function restore_database () {
|
||||
# Restore database
|
||||
database=${domain//./-}
|
||||
su -c "createdb -O $APPNAME $database" - postgres
|
||||
su -c "psql $database" postgres < ./dump.sql
|
||||
su -c "psql $app" postgres < ./dump.sql
|
||||
}
|
||||
|
||||
ynh_save_args is_master port
|
||||
install_dependencies
|
||||
ynh_psql_test_if_first_run
|
||||
ynh_psql_setup_db $db_name $db_name $db_pass
|
||||
ynh_system_user_create $app $final_path
|
||||
restore_files
|
||||
create_general_db
|
||||
install_dependencies
|
||||
add_services
|
||||
restore_database
|
||||
ssowat_and_restart
|
||||
|
|
|
@ -46,11 +46,6 @@ ynh_clean_setup () {
|
|||
# Exit if an error occurs during the execution of the script
|
||||
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
|
||||
|
@ -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
|
||||
# set new args
|
||||
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}
|
||||
oca=${oca:-false}
|
||||
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
|
||||
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
|
||||
|
||||
# Upgrade official package
|
||||
apt-get install odoo -y -qq
|
||||
|
||||
touch /var/log/$app.log
|
||||
chown $app:$app /var/log/$app.log
|
||||
|
||||
install_dependencies
|
||||
service $app restart
|
||||
|
|
Loading…
Reference in a new issue