เขียน shell Script ไว้อัพเดดโมดูล Odoo ในฐานข้อมูลที่กำหนด รองรับหลายๆ ฐานข้อมูล

แชร์ความรู้ Linux Ubuntu Web Server บทความ การ config server Linux FreeBSD Apache
การติดตั้ง XAMPP Mysql PHP ใครต้องการแชร์ความรู้เรื่องต่างๆ เหล่านี้ให้ ท่านหรืออื่น โพสที่หมวดนี้ได้

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 48124
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

เขียน shell Script ไว้อัพเดดโมดูล Odoo ในฐานข้อมูลที่กำหนด รองรับหลายๆ ฐานข้อมูล

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

เขียน shell Script ไว้อัพเดดโมดูล Odoo ในฐานข้อมูลที่กำหนด รองรับหลายๆ ฐานข้อมูล
รองรับการอัพเดด แบบชื่อโมดูลที่ต้องการอัพเดด หรือ ถ้าไม่ระบุจะอัพเดดให้ทุกโมดูล

ระบบจะ stop Service หลัก แล้วทำงาน เมื่ออัพเดดเรียบร้อย จะ start service odoo หลักกลับขึ้นมาให้ใหม่
รองรับการเก็บ logs ข้อมุลในการทำงานไว้ตรวจสอบภายหลังได้
ตัวอย่างโค้ด

โค้ด: เลือกทั้งหมด

upgrade_modules.sh 

โค้ด: เลือกทั้งหมด

#!/bin/bash

# รายชื่อฐานข้อมูลที่ต้องการอัปเดต
databases=("db1" "db2" "db3") # เพิ่มชื่อฐานข้อมูลทั้งหมดที่ต้องการอัปเดต

# ไดเรกทอรี Odoo และไฟล์การตั้งค่า
config_file="/etc/odoo-server.conf"
odoo_bin="/odoo/odoo-server/odoo-bin"
log_dir="/tmp"

# ตรวจสอบว่ามีการระบุชื่อโมดูลหรือไม่
if [ -z "$1" ]; then
    module_option="-u all"
    echo "Updating all modules for all databases"
else
    module_option="-u $1"
    echo "Updating module $1 for all databases"
fi

# หยุดบริการ Odoo ก่อนอัปเดตโมดูล
echo "Stopping Odoo service..."
sudo service odoo-server stop

# วนลูปผ่านแต่ละฐานข้อมูลและอัปเดตโมดูล
for db in "${databases[@]}"
do
    echo "Updating for database $db"
    log_file="$log_dir/update_$db.log"
    sudo -u odoo python3 $odoo_bin -c $config_file -d $db $module_option --log-level=debug &> $log_file &
    pid=$!
    echo "Started process $pid for database $db"

    # รอให้กระบวนการเสร็จสิ้นโดยการตรวจสอบ log
    while kill -0 $pid 2> /dev/null; do
        if grep -q "INFO ? odoo.modules.loading: loading 1 modules..." $log_file; then
            echo "Update for database $db completed successfully."
            sudo kill -9 $pid
            break
        fi
        sleep 5
    done

    # ตรวจสอบสถานะการอัปเดต
    if grep -q "INFO ? odoo.modules.loading: loading 1 modules..." $log_file; then
        echo "Update for database $db completed successfully."
    else
        echo "Update for database $db failed." >&2
        sudo service odoo-server start
        exit 1
    fi

    # ค้นหาและฆ่ากระบวนการที่ยังค้างอยู่
    pids=$(pgrep -f "python3 $odoo_bin -c $config_file -d $db")
    if [ ! -z "$pids" ]; then
        echo "Killing processes: $pids"
        sudo kill -9 $pids
    fi
done

# เริ่มบริการ Odoo หลังอัปเดตโมดูลเสร็จสิ้น
echo "Starting Odoo service..."
sudo service odoo-server start

echo "Update completed for all databases."
ยังมีความรู้เกี่ยวกับการพัฒนาโมดูล Odoo อีกมากหมาย
viewforum.php?f=238
สำหรับสมาชิกพิเศษของ mindphp.com เท่านั้น
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 1