|
|
@@ -7,6 +7,7 @@
|
|
|
# - wkhtmltopdf (нативная сборка для Bookworm/Trixie)
|
|
|
# - venv, systemd, конфиг в /etc/odoo/
|
|
|
# - обновление только баз, принадлежащих пользователю odoo
|
|
|
+# - автоматическая ежедневная ротация логов через logrotate
|
|
|
#-------------------------------------------------------------------------------
|
|
|
# Сделайте скрипт исполняемым: chmod +x odoo19_install_debian13.sh
|
|
|
# Использование: sudo ./odoo19_install_debian13.sh {install|update|uninstall}
|
|
|
@@ -26,7 +27,7 @@ OE_VERSION="19.0"
|
|
|
OE_PORT="8069"
|
|
|
OE_SUPERADMIN="admin"
|
|
|
GENERATE_RANDOM_PASSWORD="True"
|
|
|
-UPDATE_MODE="False" # флаг для режима обновления
|
|
|
+UPDATE_MODE="False"
|
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
ODOO_ARCHIVE=$(ls -t "$SCRIPT_DIR"/odoo_19.0+e.*.tar.gz 2>/dev/null | head -n1)
|
|
|
@@ -90,14 +91,12 @@ extract_odoo() {
|
|
|
|
|
|
extract_custom() {
|
|
|
if [[ -n "$CUSTOM_ARCHIVE" && -f "$CUSTOM_ARCHIVE" ]]; then
|
|
|
- # Если это обновление и папка уже существует, спрашиваем
|
|
|
if [[ "$UPDATE_MODE" == "True" ]] && [[ -d "$OE_HOME/custom-addons/clean_enterprise" ]]; then
|
|
|
read -p "Обновить кастомные модули (папка clean_enterprise уже существует)? (y/N): " confirm
|
|
|
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
|
|
|
log_info "Пропускаем обновление кастомных модулей."
|
|
|
return
|
|
|
fi
|
|
|
- # Если подтвердили, удаляем папку
|
|
|
rm -rf "$OE_HOME/custom-addons/clean_enterprise"
|
|
|
fi
|
|
|
|
|
|
@@ -177,9 +176,27 @@ EOF
|
|
|
sleep 3
|
|
|
}
|
|
|
|
|
|
+# Настройка logrotate для ежедневной ротации логов Odoo
|
|
|
+setup_logrotate() {
|
|
|
+ log_info "Настройка logrotate для /var/log/${OE_USER}/${OE_SERVER}.log"
|
|
|
+ cat > /etc/logrotate.d/${OE_SERVER} <<EOF
|
|
|
+/var/log/${OE_USER}/${OE_SERVER}.log {
|
|
|
+ daily
|
|
|
+ rotate 7
|
|
|
+ compress
|
|
|
+ missingok
|
|
|
+ notifempty
|
|
|
+ create 0640 ${OE_USER} ${OE_USER}
|
|
|
+ postrotate
|
|
|
+ systemctl reload ${OE_SERVER} > /dev/null 2>&1 || true
|
|
|
+ endscript
|
|
|
+}
|
|
|
+EOF
|
|
|
+ log_info "logrotate настроен: ежедневная ротация, хранение 7 дней, сжатие."
|
|
|
+}
|
|
|
+
|
|
|
update_databases() {
|
|
|
log_info "Обновление модулей во всех базах данных пользователя $OE_USER"
|
|
|
- # Выбираем только те базы, владельцем которых является пользователь odoo
|
|
|
OE_DBS=$(sudo -Hiu postgres psql -tAc "SELECT datname FROM pg_database WHERE datdba = (SELECT oid FROM pg_roles WHERE rolname='$OE_USER')")
|
|
|
if [[ -n "$OE_DBS" ]]; then
|
|
|
for db in $OE_DBS; do
|
|
|
@@ -217,11 +234,10 @@ do_install() {
|
|
|
libssl-dev libffi-dev libxml2-dev libxslt1-dev \
|
|
|
libzip-dev libldap2-dev libsasl2-dev libpq-dev \
|
|
|
libjpeg-dev zlib1g-dev libpng-dev \
|
|
|
- nodejs npm gdebi-core curl unzip
|
|
|
+ nodejs npm gdebi-core curl unzip logrotate
|
|
|
|
|
|
- # 3. PostgreSQL 16 (установка, кластер уже не требует добавления репозитория)
|
|
|
+ # 3. PostgreSQL 16
|
|
|
log_info "Установка PostgreSQL 16"
|
|
|
- # Убедимся, что системный пользователь postgres существует
|
|
|
if ! id "postgres" &>/dev/null; then
|
|
|
log_info "Создание системного пользователя postgres"
|
|
|
adduser --system --quiet --shell=/bin/bash --home=/var/lib/postgresql --group postgres
|
|
|
@@ -275,12 +291,15 @@ do_install() {
|
|
|
create_config
|
|
|
create_service
|
|
|
|
|
|
+ # 11. Настройка logrotate
|
|
|
+ setup_logrotate
|
|
|
+
|
|
|
echo "-----------------------------------------------------------"
|
|
|
echo "УСТАНОВКА ЗАВЕРШЕНА"
|
|
|
echo "Веб-интерфейс: http://$(hostname -I | awk '{print $1}'):$OE_PORT"
|
|
|
echo "Мастер-пароль: $OE_SUPERADMIN"
|
|
|
echo "Конфиг: $OE_CONFIG_FILE"
|
|
|
- echo "Логи: /var/log/${OE_USER}/${OE_SERVER}.log"
|
|
|
+ echo "Логи: /var/log/${OE_USER}/${OE_SERVER}.log (ротация ежедневная, 7 дней)"
|
|
|
echo "Управление: systemctl {start|stop|restart|status} ${OE_SERVER}"
|
|
|
echo "-----------------------------------------------------------"
|
|
|
}
|
|
|
@@ -347,10 +366,14 @@ do_uninstall() {
|
|
|
rm -f /usr/bin/wkhtmltopdf /usr/bin/wkhtmltoimage
|
|
|
log_info "wkhtmltopdf и симлинки удалены"
|
|
|
|
|
|
- # 6. (Опционально) Удаление глобальных npm-пакетов
|
|
|
+ # 6. Удаление настройки logrotate
|
|
|
+ rm -f /etc/logrotate.d/${OE_SERVER}
|
|
|
+ log_info "Настройка logrotate удалена"
|
|
|
+
|
|
|
+ # 7. (Опционально) Удаление глобальных npm-пакетов
|
|
|
# npm uninstall -g less less-plugin-clean-css rtlcss
|
|
|
|
|
|
- # 7. Удаление пользователя PostgreSQL и баз
|
|
|
+ # 8. Удаление пользователя PostgreSQL и баз
|
|
|
read -p "Удалить пользователя PostgreSQL 'odoo' и его базы? (y/N): " del_pg
|
|
|
if [[ "$del_pg" =~ ^[Yy]$ ]]; then
|
|
|
if id "postgres" &>/dev/null; then
|
|
|
@@ -363,7 +386,7 @@ do_uninstall() {
|
|
|
fi
|
|
|
fi
|
|
|
|
|
|
- # 8. Удаление PostgreSQL полностью (опционально)
|
|
|
+ # 9. Удаление PostgreSQL полностью (опционально)
|
|
|
read -p "Удалить PostgreSQL полностью? (y/N): " del_pg_all
|
|
|
if [[ "$del_pg_all" =~ ^[Yy]$ ]]; then
|
|
|
apt-get purge -y postgresql-16 postgresql-client-16 postgresql-server-dev-16
|