Lewati ke isi

Instalasi Multi Odoo Ubuntu 16.04 LTS

Persyaratan
- VPS Ubuntu 16.04 LTS
- private & public SSH key untuk otentikasi
- Lakukan hardening tahap awal dengan menggunakan skrip praUbuntu1604-do.sh
- Jika ingin gunakan skrip terminal-extras.sh untuk mempermudah interaksi dengah CLI/terminal

Hardening tahap awal

# dari mesin sendiri
ssh -v -i ~/.ssh/ssh-private-key [email protected]
# server
nano /tmp/pre.sh
# tempelkan praUbuntu1604-do.sh
bash /tmp/pre.sh
# yang perlu dimasukkan manual adalah:
# - sandi root
# - sandi pengguna
# - ssh-public-key
# Aktifkan firewall
sudo ufw enable

Setelah selesai tanpa menutup sesi pengguna root yang masih terbuka lakukan koneksi dengan pengguna biasa non-sudo yang baru dibuat ssh -v -i ~/.ssh/ssh-private-key [email protected].
Jika berhasil restart mesin dengan sudo shutdown -r now. Hardening tahap awal sudah selesai.

Persiapan instalasi Odoo

Alat tambahan dan basis data

#
sudo apt update && sudo apt -y upgrade
#
sudo apt install -y git wkhtmltopdf python-pip python-dev \
    python-virtualenv libevent-dev gcc libjpeg-dev libxml2-dev \
    libssl-dev libsasl2-dev node-less libldap2-dev libxslt-dev
# Instalasi PostgreSQL
sudo apt install -y postgresql-9.5 postgresql-server-dev-9.5
sudo systemctl enable postgresql.service
#
sudo systemctl start postgresql.service
# penentuan nama instalasi layanan
instalasi="smarthr"
# Membuat pengguna dan direktori bagi instalasi tiap Odoo
sudo adduser --system --group $instalasi --home /opt/$instalasi
# Membuat pengguna PostgreSQL untuk masing-masing Odoo
sudo su - postgres -c "createuser --createdb --username postgres --no-createrole --no-superuser $instalasi"
# su - postgres -c "createuser --createdb --username postgres --no-createrole --no-superuser odoo"

Install Odoo

Odoo versi 10

# proses untuk Odoo 10
sudo su - $instalasi -s /bin/bash
# penentuan nama instalasi layanan
instalasi="smarthr"
# Kloning dari repo
git clone https://www.github.com/odoo/odoo --depth 1 --branch 10.0 --single-branch /opt/$instalasi
# membuat direktori addons tambahan
mkdir -p /opt/$instalasi/custom-addons
# Gunakan virtual environment untuk instalasi
cd /opt/$instalasi
virtualenv ./venv
. venv/bin/activate
pip install -r requirements.txt
exit

Berkas konfigurasi Odoo 10

# membuat direktori konfigurasi odoo
sudo mkdir -p /etc/odoo
# membuat berkas konfigurasi odoo
sudo nano /etc/odoo/$instalasi.conf

[options]
# addons
addons_path = /opt/$instalasi/addons,/opt/$instalasi/custom-addons

# general
lang = en_US
timezone = Asia/Jakarta
;demo = {}
dev_mode = True
debug_mode = True
reportgz = True
server_wide_modules = web,web_kanban
csv_internal_sep = ,

# db
admin_passwd = sandi_acak_aman_anda
db_host = False
db_port = 5432
db_user = $instalasi
db_password = False
db_template = template1
;dbfilter = ^%h$
db_name = False
without_demo = True
list_db = True

# performance
auto_reload = True
db_maxconn = 64
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 120
limit_time_real = 240
limit_time_real_cron = -1
max_cron_threads = 2
workers = 3
osv_memory_age_limit = 1.0
osv_memory_count_limit = False

# logs
logfile = /var/log/odoo/$instalasi.log
syslog = False
logrotate = True
log_level = info
log_db = True
log_db_level = warning
log_handler = :INFO

# proxy and connectivity
;proxy_mode = True
xmlrpc = True
xmlrpc_interface = 127.0.0.1
xmlrpc_port = 8069
longpolling_port = 8072
xmlrpcs = True
xmlrpcs_interface = 127.0.0.1
xmlrpcs_port = 8072
netrpc_interface = 127.0.0.1

Skrip SystemD

# 
sudo -i
instalasi="smarthr"
# 
cat << EOF > /lib/systemd/system/$instalasi.service
[Unit]
Description=Odoo 10 - $instalasi
Requires=postgresql.service
After=postgresql.service

[Service]
Type=simple
PermissionsStartOnly=true
User=$instalasi
Group=$instalasi
SyslogIdentifier=$instalasi
ExecStart=/opt/$instalasi/venv/bin/python2 /opt/$instalasi/odoo-bin -c /etc/odoo/$instalasi.conf

[Install]
WantedBy=multi-user.target
EOF
# 
exit

Finalisasi Odoo 10

# membuka port layanan
portInstalasi="8079"
# 
sudo ufw allow $portInstalasi/tcp
sudo ufw reload
# menyiapkan direktori log pertama kali
sudo mkdir -p /var/log/odoo
sudo touch /var/log/odoo/$instalasi.log
sudo chown root:$instalasi /var/log/odoo/$instalasi.log
sudo chmod g+w /var/log/odoo/$instalasi.log
# Mengatur agar layanan odoo10 berjalan saat booting
sudo systemctl enable $instalasi.service
# Menjalankan layanan odoo10
sudo systemctl start $instalasi.service
sudo systemctl status $instalasi.service

Odoo versi 8

# login sebagai pengguna odoo8
sudo su - odoo8 -s /bin/bash
# Kloning dari repo
git clone https://www.github.com/odoo/odoo --depth 1 --branch 8.0 --single-branch /opt/odoo8
# Gunakan virtual environment untuk instalasi
cd /opt/odoo8
virtualenv ./venv
source ./venv/bin/activate
pip install -r requirements.txt
exit

Berkas konfigurasi Odoo 8

# sudo mkdir -p /etc/odoo
sudo nano /etc/odoo/odoo8.conf

[options]
# addons
addons_path = /opt/odoo8/addons
# db
admin_passwd = sandi_acak_aman_anda
db_host = False
db_port = False
db_user = odoo8
db_password = False
# performance
limit_time_real_cron = -1
max_cron_threads = 2
workers = 2
# logs
logfile = /var/log/odoo/odoo8.log
syslog = False
logrotate = True
log_level = info
log_db_level = warning
log_handler = :INFO
# proxy and connectivity
xmlrpc_port = 8008
longpolling_port = 8078

Skrip SystemD

sudo nano /lib/systemd/system/odoo8.service
[Unit]
Description=Odoo 8
Requires=postgresql.service
After=postgresql.service

[Service]
Type=simple
PermissionsStartOnly=true
User=odoo8
Group=odoo8
SyslogIdentifier=odoo8
ExecStart=/opt/odoo8/venv/bin/python2 /opt/odoo8/openerp-server -c /etc/odoo/odoo8.conf

[Install]
WantedBy=multi-user.target

Finalisasi Odoo 8

# membuka port
sudo ufw allow 8008/tcp
# menyiapkan direktori log
# sudo mkdir -p /var/log/odoo
sudo touch /var/log/odoo/odoo8.log
sudo chown root:odoo8 /var/log/odoo/odoo8.log
sudo chmod g+w /var/log/odoo/odoo8.log
# Mengatur agar layanan berjalan saat booting
sudo systemctl enable odoo8.service
# Menjalankan layanan
sudo systemctl start odoo8.service

Instalasi modul addons OCA

instalasi="smarthr"
sudo su - $instalasi -s /bin/bash
. venv/bin/activate
#
python -c "import openerp"
python -c "import odoo"
#
pip install -r requirements.txt
# pip install --upgrade -r requirements.txt
pip install --upgrade pip
pip install -e .
#
pip list | grep odoo
export PIP_FIND_LINKS="https://wheelhouse.odoo-community.org/oca-10.0"
pip install odoo-autodiscover 
# pip install odoo-addon-base_import_async --find-links=https://wheelhouse.odoo-community.org/oca-10.0

Rujukan:

Membuat DB baru untuk instance baru

#
createdb smartiso.synergysolusi.com
psql -c 'GRANT ALL PRIVILEGES ON DATABASE "smartiso.synergysolusi.com" TO odoo8'
psql -c 'ALTER DATABASE "smartiso.synergysolusi.com" OWNER TO odoo8'
#

Membuat configurasi nginx untuk subdomain pada instance Odoo

sudo -i
oldDomain="satas.smarterp.proxsisgroup.com"
newDomain="demo.smarthr.proxsisgroup.com"
cd /etc/nginx/sites-available
cp $oldDomain.conf $newDomain.conf
sed 's/$oldDomain/$newDomain/g' smartiso.synergysolusi.com.conf
touch /var/log/nginx/$newDomain.{access,error}.log
chmod -v 640 /var/log/nginx/newDomain.{access,error}.log
chown -v www-data:adm /var/log/nginx/$newDomain.{access,error}.log
ln -s /etc/nginx/sites-available/$newDomain.conf /etc/nginx/sites-enabled/$newDomain
#
systemctl restart postgresql $newDomain nginx
#

Memperbarui paket pip yang terinstall

pip install pip-upgrader
pip-upgrade

Rujukan