1. 說明
Odoo是python語言開發的一個開源的ERP系統。
目前,我們工作中用到的也只有休假這一個模塊。
2. 原服務情況
- 服務
- Odoo v10.0_20170303
- postgresql v9.2
- 目錄
- /usr/lib/python2.7/site-packages/odoo #Odoo運行的所有服務端代碼存放位置
- /var/lib/odoo #Odoo的數據存儲位置
- /etc/odoo/odoo.conf #Odoo的服務端配置文件
- OS
- CentOS 7.2
3. 備份
大致了解了原服務器的大致信息后,我們就開始備份數據。有一點很重要,我們為了確保數據的完整,一定要先停掉服務,然后再做備份的操作。
- Odoo
/var/lib/odoo
目錄下有三個目錄addons
、filestore
、sessions
。addons目錄默認是空的,實際的文件都在/usr/lib/python2.7/site-package/odoo/addons
這個目錄下面的。filestore是Odoo用來存放附件的目錄,這個必須做一個備份才行。sessions是Odoo用來存放用戶會話信息的目錄,對于遷移后的新服務器來說沒什么用,所以不需要做備份。
~]# tar zcvf Odoo_install.tar.gz /usr/lib/python2.7/site-packages/odoo /usr/lib/python2.7/site-packages/odooodoo-10.0_20170303-py2.7.egg-info #備份python程序部分
~]# tar zcfv Odoo_alldata.tar.gz /var/lib/odoo/filestore/oadbadmin #備份Odoo數據部分的附件部分
- Postgresql
~]$ pg_dump -U postgres oadbdmin -f Odoo_postgres_data.sql #備份postgresql數據
4. Odoo及postgresql安裝
原來的數據都備份完成了,接下來我們就要開始新服務器的部署配置工作了。我們先列出來Odoo對硬件的要求。從官方文檔中沒找到,但是官方論壇里面有人貼出來了,鏈接地址:https://www.odoo.com/zh_CN/forum/help-1/question/server-requirements-121217,我把內容也貼出來吧。
Minimum Server Specification:
Processor = Intel (64 bit)
Number of Processors = 1
Processor Core available = 6
Memory = 8 Gigabyte
OS = Ubuntu 14.04 LTSRecommended server:
Processor = Intel (64 bit)
Number of Processors = 2
Processor core available = 8
Memory = 16 Gigabyte
OS = Ubuntu 14.04
HDD = Up to client本次我們使用的操作系統為
CentOS7.2
,主要是為了減少與原來系統的差異。
CentOS的自帶yum源中包含postgresql相關的軟件包,可以直接安裝。
$ sudo yum install -y postgresql-server #安裝postgresql的服務端 $ sudo postgresql-setup initdb #postgresql初始化,包括創建數據目錄、生成共享目錄表以及創建template1和postgresql數據庫,該操作不能使用root用戶 $ sudo systemctl enable postgresql #啟用開機啟動postgresql功能 $ sudo systemctl start postgresql #啟動postgresql服務
在CentOS系統上安裝Odoo,有很多的依賴是自帶的yum源所沒有的,所以我們還需要安裝EPEL的源,EPEL源中所沒有的依賴部分會在文末列出來。
官方的yum源每天都會有一個新的滾動版本發布,為了更貼近原有服務器的odoo版本,我們采用rpm包的方式安裝,官方倉庫中已經沒有20170303的版本了,所以這里我們使用20170401的版本。~]# wget http://nightly.odoo.com/10.0/nightly/rpm/odoo_10.0.20170401.noarch.rpm ~]# yum install odoo_10.0.20170401.noarch.rpm
官方步驟如下:
$ sudo yum install yum-utils #yum包管理工具 $ sudo yum-config-manager --add-repo=https://nightly.odoo.com/10.0/nightly/rpm/odoo.repo #添加odoo的yum源 $ sudo yum install -y odoo $ sudo systemctl enable odoo $ sudo systemctl start odoo
- 配置
本次主要是系統遷移,就不需要像新安裝Odoo的步驟一樣了。
(1). 我們需要把原系統的Odoo的配置文件放到新的服務器的
/etc/odoo/odoo.conf
目錄下,覆蓋安裝時自動生成的配置文件。
(2). 刪除現有的Odoo服務器端程序~]# rm -rf /usr/lib/python2.7/site-packages/odoo/*
(3). 將之前備份的
Odoo_install.tar.gz
和Odoo_alldata.tar.gz
上傳到新服務器上,然后解壓到對應的位置。~]# tar xvf Odoo_install.tar.gz -C / ~]# tar xvf Odoo_alldata.tar.gz -C /
(4). 重啟Odoo
~]#systemctl restart odoo
(5). 數據庫恢復
Odoo安裝時會自動創建odoo用戶,現在我們需要對數據庫進行一些操作了。操作數據庫我們需要切換用戶到postgres
,然后執行psql
就會進入數據庫。postgres=# CREATE DATABASE oadbadmin; #創建odoo要使用的數據庫 postgres=# ALTER DATABASE oadbadmin OWNER TO odoo; #修改oadbadmin數據庫的owner為odoo
數據庫的基本操作結束了,現在我們就要把之前備份的數據庫導入到新的數據庫中,與上面操作一樣需要使用postgres用戶來操作。
~]$ psql -U postgres -d oadbadmin -f Odoo_postgres_data.sql
5. 訪問
Odoo和postgresql都準備好了,這下我們就可以來訪問Odoo的頁面了。
訪問鏈接為: http://new_server's ip:8069,系統會自動跳轉到登錄頁面,我們使用管理員用戶登錄系統(和操作原有系統一模一樣)。
至此,Odoo基本OK了,但是還有一點點問題,在Odoo原來的配置中我們使用了OpenLDAP來做用戶統一認證。原有的OpenLDAP也做了遷移,所以我們需要把這個部分也做相應的修改,我們在設置
的通用設置
中進行LDAP認證的修改。
6. LDAP配置
10.0版本的ldap配置項如下圖所示。
openldap
- LDAP服務器地址
這個就是指的提供ldap信息驗證的服務所在服務器的IP地址,也可以是域名,但是需要在odoo服務端配置好dns服務器,否則無法解析域名。- LDAP服務器端口
與上面提供的ldap服務相關的服務端口號,openLDAP默認389端口。- LDAP綁定DN
這個賬號是用來和ldap服務進行數據交互使用的,一般使用管理員的賬號。- LDAP密碼
與上面的用戶對應的密碼- LDAP基節點
這個代表我們需要搜索的用戶所在的域,或者一個用戶組,如果不做限制就用dc=xx,dc=xx
這樣的,做限制的話,類似ou=xxx,dc=xx,dc=xx
。- LDAP篩選
這個選項代表的意思是我們使用ldap服務返回的那個字段來用作odoo用戶的用戶名(登錄名),我們這里使用uid,也有很多使用mail。- 創建用戶
這個選項代表,在ldap中創建用戶后,我們第一次在odoo中登錄時,odoo系統會去ldap系統查找是否存在該用戶,如果存在就會在odoo中創建該用戶,并登錄,但是這個版本會報500的服務器錯誤,服務器日志的打印是記錄不存在或者已刪除
,這種情況下odoo就會創建該系統用戶。- 模板用戶
該選項可以使用戶在odoo中第一次登錄的時候按照該用戶的信息模板進行新用戶的創建,包括郵件、手機號、權限等。這樣的話,在odoo用戶第二次登錄的時候就可以正常進入系統(必須授予訪問權限)。- 序號
默認值即可,也可以改下一些。- 使用TLS傳輸層套接字
如果服務端啟用的話,可以勾選。
附1
Odoo特殊依賴列表
- http://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/python-docutils-0.11-0.3.20130715svn7687.el7.noarch.rpm
- http://mirror.centos.org/centos/7/os/x86_64/Packages/http-parser-2.7.1-5.el7_4.x86_64.rpm
- ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/7/x86_64/debug/Packages/t/tcpflow-debuginfo-1.4.5-1.el7.x86_64.rpm
- http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/noarch/RPMS.classic//python-module-antlr-2.7.7-alt12_53jpp8.noarch.rpm
- http://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/python-jinja2-2.7.2-2.el7.noarch.rpm
- ftp://bo.mirror.garr.it/1/slc/centos/7.0.1406/extras/x86_64/Packages/python-werkzeug-0.9.1-2.el7.noarch.rpm
- http://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/libxslt-python-1.1.28-5.el7.x86_64.rpm