You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
381 lines
12 KiB
381 lines
12 KiB
#ao-oca-dev2 How to set up a clone of an existing OCA 9 server.
|
|
###############
|
|
# First, set up database server
|
|
# Install Debian Stretch
|
|
# Install postgres 9.6 from Debian repo
|
|
# Add fast disk for /var/lib/postgresql
|
|
|
|
apt-get install pbzip2
|
|
apt-get install \
|
|
postgresql-all
|
|
|
|
# XXX set up postgres config.
|
|
# XXX is superuser. OCA 9 import needs it, so don't mix with other DB.
|
|
sudo -u postgres createuser aooncedev2 -U postgres --createdb --superuser --pwprompt
|
|
|
|
# Create database:
|
|
sudo -u postgres createdb --owner aooncedev2 aooncedev2
|
|
|
|
# Set up Postgres IP:
|
|
auto ens18 ens19
|
|
iface ens19 inet static
|
|
address 10.53.1.81/24
|
|
|
|
# XXX edit /etc/postgresql/9.6/main/postgresql.conf and change to be
|
|
# like this (note single quotes ')
|
|
# ao-pg1
|
|
listen_addresses = '127.0.0.1,10.53.1.81' # what IP address(es) to listen on;
|
|
|
|
# Set up access permissions file as root:
|
|
cat > /etc/postgresql/9.6/main/pg_hba.conf <<EOF
|
|
# IPv4 local connections
|
|
host all all 127.0.0.1/32 md5
|
|
# Database administrative login by Unix domain socket
|
|
local all postgres peer
|
|
# "local" is for Unix domain socket connections only
|
|
local all all peer
|
|
|
|
# Allow ao-once-dev2 XXX use password hash
|
|
host all all 10.53.1.196/32 trust
|
|
host all odoo 10.53.1.196/32 trust
|
|
host all postgres 10.53.1.196/32 trust
|
|
EOF
|
|
|
|
# Set up firewall
|
|
vim /etc/iptables.test.rules
|
|
# add rule:
|
|
# Allow ao-once-dev2 to Postgres
|
|
-A INPUT -s 10.53.1.196/32 -d 10.53.1.81/32 -p tcp -m tcp --dport 5432 -j ACCEPT
|
|
|
|
/root/iptables-reload
|
|
|
|
|
|
# Now Set up Actual OCA server.
|
|
##############################################################################
|
|
|
|
# Set up Debian Stretch server.
|
|
|
|
# Add this to firewall:
|
|
|
|
#=============================================================================
|
|
# On development servers, add this to firewall rules to block
|
|
# sending/receiving of mails.
|
|
# Block outgoing traffic to email ports...
|
|
# SMTP, POP, IMAP, plus encrypted ports
|
|
# Be sure to put *before* this line in the firewall rules:
|
|
# -A OUTPUT -j ACCEPT
|
|
#
|
|
# Allow only communications to localhost on port 25 ( -s IP )
|
|
-A OUTPUT -p tcp --dport 25 -o lo -d 127.0.0.1 -j ACCEPT
|
|
# Allow only communications to localhost on IMAP port 993 ( -s IP )
|
|
-A OUTPUT -p tcp --dport 993 -o lo -d 127.0.0.1 -j ACCEPT
|
|
# Block SMTP
|
|
-A OUTPUT -p tcp --dport 25 -j REJECT
|
|
-A INPUT -p tcp --dport 25 -j REJECT
|
|
# Block POP
|
|
-A OUTPUT -p tcp --dport 110 -j REJECT
|
|
-A INPUT -p tcp --dport 110 -j REJECT
|
|
# Block IMAP
|
|
-A OUTPUT -p tcp --dport 143 -j REJECT
|
|
-A INPUT -p tcp --dport 143 -j REJECT
|
|
# Block Email Submission
|
|
-A OUTPUT -p tcp --dport 587 -j REJECT
|
|
-A INPUT -p tcp --dport 587 -j REJECT
|
|
# Block encrypted IMAPS
|
|
-A OUTPUT -p tcp --dport 993 -j REJECT
|
|
-A INPUT -p tcp --dport 993 -j REJECT
|
|
# Block encrypted POP
|
|
-A OUTPUT -p tcp --dport 995 -j REJECT
|
|
-A INPUT -p tcp --dport 995 -j REJECT
|
|
|
|
#=============================================================================
|
|
|
|
# Set up postgres IP
|
|
auto ens19
|
|
iface ens19 inet static
|
|
address 10.53.1.196/24
|
|
|
|
# install packages:
|
|
apt-get install \
|
|
python-pip \
|
|
libxml2-dev python-libxml2 \
|
|
libxslt1-dev \
|
|
cython \
|
|
libldap2-dev \
|
|
zlib1g-dev \
|
|
libgsasl7-dev libsasl2-dev \
|
|
libevent-dev \
|
|
python-babel python-decorator python-docutils python-feedparser python-gevent python-greenlet python-html2text python-jinja2 python-lxml python-mako python-markupsafe python-mock python-ofxparse python-passlib python-pil python-psutil python-psycopg2 python-pydot python-pyldap python-pyparsing python-pypdf2 python-serial python-dateutil python-arrow python-usb python-yaml python-qrcode python-reportlab python-requests python-six python-suds python-vatnumber python-vobject python-werkzeug python-xlsxwriter python-xlwt python-xlrd wkhtmltopdf python-pdfkit
|
|
|
|
apt install nodejs
|
|
|
|
# Meh, this runs the wrong version, needs /usr/loca/bin cruft
|
|
apt purge wkhtmltopdf
|
|
|
|
# meh install all packages from ao-once-dev1
|
|
/etc/init.d/exim4 stop
|
|
update-rc.d exim4 disable
|
|
update-rc.d fancontrol disable
|
|
update-rc.d lvm2-lvmetad disable
|
|
update-rc.d lvm2-lvmpolld disable
|
|
update-rc.d munin-node disable
|
|
update-rc.d mdadm disable
|
|
update-rc.d libvirtd disable
|
|
update-rc.d libvirt-guests disable
|
|
update-rc.d virtlogd disable
|
|
update-rc.d postgresql disable
|
|
update-rc.d cpufrequtils disable
|
|
update-rc.d loadcpufreq disable
|
|
update-rc.d snmpd disable
|
|
update-rc.d sysstat disable
|
|
update-rc.d xinetd disable
|
|
update-rc.d sysfsutils disable
|
|
|
|
# Add user odoo
|
|
adduser group odoo
|
|
|
|
mkdir /var/log/oca /var/log/odoo /etc/odoo
|
|
|
|
chown odoo:odoo /var/log/oca /var/log/odoo /etc/odoo /srv /opt
|
|
|
|
# Rsync over /opt from live (or staging) server:
|
|
# Run as user 'odoo' on new server (e.g. ao-once-dev2) and set up keys:
|
|
# odoo@once-dev2:~$ ssh-keygen -t ed25519
|
|
|
|
# Fast
|
|
rsync --dry-run \
|
|
-ulta \
|
|
odoo@ao-once-dev1:/opt/ \
|
|
/opt/
|
|
|
|
# 111 minutes
|
|
rsync --dry-run \
|
|
-ulta \
|
|
odoo@ao-once-dev1:/srv/ \
|
|
/srv/
|
|
|
|
# Fast
|
|
rsync --dry-run \
|
|
-ulta \
|
|
odoo@ao-once-dev1:/etc/odoo/ \
|
|
/etc/odoo/
|
|
|
|
|
|
chown root:root /srv /opt
|
|
|
|
# Set the database correct in /etc/odoo/odoo-server.conf
|
|
db_host = 10.53.1.81
|
|
db_name = ao_odoo
|
|
;db_password = XXX
|
|
db_password = False
|
|
db_user = odoo
|
|
admin_passwd = XXX
|
|
;log_level = debug
|
|
log_level = info
|
|
|
|
# Copy over cruft:
|
|
scp -rp ao-once-dev1:/usr/local .
|
|
sudo mv /usr/local /usr/local.orig
|
|
sudo mv local /usr/
|
|
sudo chown -R root:root /usr/local
|
|
|
|
# Copy over startup script:
|
|
scp -p ao-once-dev1:/etc/init.d/odoo .
|
|
sudo mv odoo /etc/init.d/
|
|
sudo chown root:root /etc/init.d/odoo
|
|
update-rc.d odoo defaults
|
|
|
|
# Install postgres:
|
|
apt install postgresql-client-9.6
|
|
|
|
# Load the database into Postgres. Run on ao-once-dev2, loads to ao-pg1:
|
|
|
|
cat /srv/oca-live/backup_ao_odoo_20180807.sql | psql --quiet --host 10.53.1.81 --user aooncedev2 aooncedev2
|
|
|
|
##############################################################################
|
|
# Copy database from live server to ao-once-dev1:
|
|
# On main oca server, add this to ~/.ssh/config
|
|
Host ao-once-dev1
|
|
Port 42563
|
|
Hostname 174.128.244.208
|
|
User jebba
|
|
|
|
# Add main jebba oca key to ao-once-dev1 (temporary).
|
|
# On main oca server, copy over the 4GB compressed database. Takes less than 2min or so at 60MB/s.
|
|
time scp -p postgres-2018-09-23-16-00.bz2 ao-once-dev1:
|
|
# Copy that over to whatever dev server...
|
|
# Set up ~/.ssh/config XXX note, different than remote:
|
|
Host ao-once-dev1
|
|
Port 22
|
|
Hostname 10.192.1.195
|
|
User jebba
|
|
|
|
##############################################################################
|
|
|
|
|
|
##############################################################################
|
|
# Benchmarks
|
|
#
|
|
|
|
##########
|
|
# Run 1: #
|
|
##########
|
|
# Default postgres settings.
|
|
# 23G: /srv/oca-live/backup_ao_odoo_20180807.sql
|
|
# Import from ao-once-dev2 to ao-pg1:
|
|
cat /srv/oca-live/backup_ao_odoo_20180807.sql | psql --quiet --host 10.53.1.81 --user aooncedev2 aooncedev2
|
|
# df -h /var/lib/postgresql: 25G
|
|
# Runtime: 23m41.270s
|
|
|
|
##########
|
|
# Run 2: #
|
|
##########
|
|
# Setting Changed:
|
|
max_connections = 512
|
|
shared_buffers = 8GB
|
|
work_mem = 27962kB
|
|
maintenance_work_mem = 2GB
|
|
max_wal_size = 8GB
|
|
wal_buffers = 16MB
|
|
effective_cache_size = 16GB
|
|
# Drop old DB on ao-pg1 and create new one:
|
|
# sudo -u postgres dropdb aooncedev2
|
|
# sudo -u postgres createdb --owner aooncedev2 aooncedev2
|
|
# 23G: /srv/oca-live/backup_ao_odoo_20180807.sql
|
|
# Import from ao-once-dev2 to ao-pg1:
|
|
cat /srv/oca-live/backup_ao_odoo_20180807.sql | psql --quiet --host 10.53.1.81 --user aooncedev2 aooncedev2
|
|
# start: df -h /var/lib/postgresql: 1.1G
|
|
# end: df -h /var/lib/postgresql: 32G
|
|
# Runtime: 20m12.831s
|
|
|
|
##########
|
|
# Run 3: #
|
|
##########
|
|
sudo mkdir /srv/db
|
|
sudo chown jebba:jebba /srv/db
|
|
mv postgres-2018-09-23-16-00.bz2 /srv/db
|
|
pbzip2 -m2000 --keep --decompress /srv/db/postgres-2018-09-23-16-00.bz2
|
|
# Compressed size: 4.2G
|
|
# Uncompressed size: 24G
|
|
# Runtime: 1m20s
|
|
# sudo -u postgres dropdb aooncedev2
|
|
# sudo -u postgres dropdb ao_odoo
|
|
pbzip2 --stdout -p16 -m2000 --keep --decompress /srv/db/postgres-2018-09-23-16-00.bz2 | psql --quiet --host 10.53.1.81 --user postgres
|
|
# start: df -h /var/lib/postgresql: 7.6G
|
|
# end: df -h /var/lib/postgresql: 33G
|
|
# Runtime: 20m34.922s
|
|
|
|
|
|
##########
|
|
# Run 4: #
|
|
##########
|
|
# Host pg2
|
|
# sudo -u postgres dropdb ao_odoo
|
|
pbzip2 --stdout -p16 -m2000 --keep --decompress /srv/db/postgres-2018-09-23-16-00.bz2 | psql --quiet --host 10.53.1.82 --user postgres
|
|
# start: df -h /var/lib/postgresql: 91M
|
|
# end: df -h /var/lib/postgresql: 26G
|
|
# Runtime: 24m2.173s
|
|
|
|
|
|
##########
|
|
# Run 5: #
|
|
##########
|
|
# Host pg2
|
|
# Setting Changed:
|
|
max_connections = 512
|
|
shared_buffers = 8GB
|
|
work_mem = 27962kB
|
|
maintenance_work_mem = 2GB
|
|
max_wal_size = 8GB
|
|
wal_buffers = 16MB
|
|
effective_cache_size = 16GB
|
|
# sudo -u postgres dropdb ao_odoo
|
|
pbzip2 --stdout -p16 -m2000 --keep --decompress /srv/db/postgres-2018-09-23-16-00.bz2 | psql --quiet --host 10.53.1.82 --user postgres
|
|
# start: df -h /var/lib/postgresql:
|
|
# end: df -h /var/lib/postgresql:
|
|
# Runtime:
|
|
|
|
##########
|
|
# Run X: #
|
|
##########
|
|
# Disable SSL
|
|
cat /srv/oca-live/backup_ao_odoo_20180807.sql | psql "sslmode=disable" --quiet --host 10.53.1.81 --user aooncedev2 aooncedev2
|
|
# Runtime:
|
|
|
|
|
|
##############################################################################
|
|
# Start it...
|
|
# Reboot or
|
|
#/etc/init.d/odoo start
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
##############################################################################
|
|
# USAGE #
|
|
#########
|
|
|
|
# Create a tunnel to the server (must have ssh keys set up):
|
|
# In ~/.ssh/config:
|
|
Host ao-once-dev2
|
|
Port 57525
|
|
Hostname 174.128.244.208
|
|
User jebba
|
|
|
|
# Run to create an encrypted tunnel:
|
|
ssh -N -C -L 58269:localhost:8069 ao-once-dev2
|
|
|
|
# Then in the browser go to:
|
|
http://127.0.0.1:58269
|
|
|
|
##############################################################################
|
|
# XXX
|
|
# TODO: Use apache SSL, if not ssh tunnels.
|
|
#
|
|
# XXX One server is running and you can log in as admin,
|
|
# disable all email checks!
|
|
# Firewall should prevent this, but still double stop it.
|
|
|
|
# Technical --> Email --> Incoming Mail Servers
|
|
# Technical --> Email --> Outgoing Mail Servers
|
|
|
|
# Technical --> Automation --> Schedule Actions
|
|
# Disable: Email Queue Manager, Cycle Count Planner Computation,
|
|
# Marketing Campaign: Campaign workitems processing,
|
|
# Run Event Reminder,
|
|
# DDMRP Buffer ADU calculation
|
|
# Reordering Rule DDMRP calculation
|
|
##############################################################################
|
|
##############################################################################
|
|
# pg2, upgrade to Postgres 10
|
|
|
|
apt remove postgresql-9.6 postgresql-client-9.6 postgresql-client-common postgresql-common postgresql-server-dev-9.6 postgresql-server-dev-all
|
|
|
|
# rm -rf /var/lib/postgresql/9.6/
|
|
|
|
echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgdg.list
|
|
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
|
|
apt update
|
|
apt dist-upgrade
|
|
apt autoremove
|
|
apt install postgresql-10
|
|
|
|
|
|
# XXX edit /etc/postgresql/10/main/postgresql.conf and change to be
|
|
# like this (note single quotes ')
|
|
# ao-pg2
|
|
listen_addresses = '127.0.0.1,10.53.1.82' # what IP address(es) to listen on;
|
|
|
|
cat > /etc/postgresql/10/main/pg_hba.conf <<EOF
|
|
host all all 127.0.0.1/32 md5
|
|
host all odoo 10.53.1.196/32 trust
|
|
host all postgres 10.53.1.196/32 trust
|
|
host aooncedev2 aooncedev2 10.53.1.196/32 trust
|
|
local all all peer
|
|
local all postgres peer
|
|
EOF
|
|
|
|
|
|
##############################################################################
|