[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
|
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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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": {
|
"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",
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
# Upgrade official package
|
touch /var/log/$app.log
|
||||||
apt-get install odoo -y -qq
|
chown $app:$app /var/log/$app.log
|
||||||
|
|
||||||
|
|
||||||
|
install_dependencies
|
||||||
|
service $app restart
|
||||||
|
|
Loading…
Reference in a new issue