在Ubuntu操作系统上部署Odoo ERP源代码

1、更新Ubuntu服务器软件源

sudo apt-get update  #更新软件源  
sudo apt-get dist-upgrade -y  #更新软件包,自动查找依赖关系  
sudo shutdown -r now  #重启服务器,以更新改变的内容

2、新建系统用户用于运行Odoo程序

cat /etc/passwd  #查看是否已经存在odoo用户
sudo adduser --system --home=/home/odoo --group odoo  #新建系统用户odoo,指定home目录为/home/odoo

系统用户不能用于登录并且没有shell,但当需要以它的身份进行特定操作时,可以用su命令切换用户:

sudo su - odoo -s /bin/bash  #将当前终端登录切换到odoo用户,并使用/bin/bash这个shell
exit  #退出

命令运行后会自动从当前目录切换到odoo用户的home目录/home/odoo。操作完毕后输入exit命令,离开odoo用户的shell,回到登录所用的用户。

3、下载最新版Odoo10源码

有两种方法
方法1,从官网下载源码:

cd /home/odoo  #切换到新建的odoo用户的目录下
sudo wget http://nightly.odoo.com/10.0/nightly/src/odoo_10.0.latest.tar.gz  #下载Odoo10源码
tar -zxvf odoo_10.0.latest.tar.gz  #解压
mv odoo-10.0-20161115 odoo10  #重命名文件夹名称为odoo10,odoo的文件夹名称中有日期,记得修改成当前下载的
sudo chown -R odoo: odoo10  #将odoo10文件夹及子文件的所有权赋予odoo用户和用户组
sudo chmod -R 744 odoo10  #赋予odoo用户拥有odoo10文件夹及子文件的读取、写入、执行权限

方法2,用git从github上拉取:

sudo apt-get install -y git  #安装git软件
sudo su - odoo -s /bin/bash #切换到odoo用户
git clone -b 10.0 https://github.com/odoo/odoo.git  #下载Odoo10代码
mv odoo odoo10  #修改文件夹名称为odoo10
exit #退出odoo用户  
sudo chmod -R 744 /home/odoo/odoo10 #修改读取、写入、执行权限

方法2的代码更新比较方便,只需执行下面的命令

sudo su - odoo -s /bin/bash #切换到odoo用户
cd odoo10  #进入odoo文件夹下
git pull  #拉取最新代码

4、安装和配置数据库服务器PostgreSQL

数据库默认用户名:postgres,没有密码

sudo apt-get install -y postgresql #安装PostgreSQL
sudo -u postgres createuser --createdb --no-createrole --no-superuser --pwprompt odoo #创建数据库用户odoo,输入两次密码odoo

5、安装Python运行库和wkhtmltopdf

odoo源码目录下的 requirements.txt 文件里面列出了 odoo10 依赖的所有 Python lib。
因为lxml ldap psycopg2 需要使用gcc进行编译,所以需要先安装开发相关的库 libxml2, libxslt, libpq-dev, libldap2-dev, libsasl2-dev。

sudo apt-get install -y python-dev libxml2-dev libxml2 libxslt-dev libpq-dev libldap2-dev libsasl2-dev libevent-dev  #安装开发相关的库
sudo apt-get install -y libjpeg8-dev libpng12-dev libfreetype6-dev zlib1g-dev libwebp-dev libtiff5-dev libopenjpeg-dev libzip-dev  #安装Pillow依赖包
sudo apt-get install -y python-babel python-dateutil python-decorator python-docutils python-feedparser python-imaging
sudo apt-get install -y python-jinja2 python-ldap python-libxslt1 python-lxml python-mako python-mock python-openid
sudo apt-get install -y python-passlib python-psutil python-psycopg2 python-pychart python-pydot python-pyparsing
sudo apt-get install -y python-pypdf python-reportlab python-requests python-suds python-tz python-vatnumber python-vobject
sudo apt-get install -y python-werkzeug python-xlsxwriter python-xlwt python-yaml python-gevent
sudo apt-get install -y python-pip #安装pip,如果系统未安装
sudo pip install -r /home/odoo/odoo10/requirements.txt #使用 pip 安装 odoo-10 依赖的 Python 库
sudo apt-get -f install  #强制安装依赖

下载安装wkhtmltopdf(Odoo使用wkhtmltopdf来输出pdf):

sudo wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb #下载wkhtmltopdf,注意根据操作系统选择相应版本
sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb  #安装wkhtmltopdf  
sudo apt-get -f install  #强制修复出现的依赖关系错误,清理上面安装过程中遇到的错误
sudo cp /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf  #安装完成后将可执行文件复制到usr/bin中
sudo chown root:root /usr/bin/wkhtmltopdf  #更改所有者为root用户
sudo chmod +x /usr/bin/wkhtmltopdf  #并增加可执行属性
sudo apt-get install -y ttf-wqy-zenhei ttf-wqy-microhei  #安装中文字体
wkhtmltopdf www.baidu.com baidu.pdf  #打印一个网页到当前目录,如果成功生成pdf则表明安装成功

备注:版本地址 https://wkhtmltopdf.org/downloads.html 针对你自己系统的安装适合的版本。选择好版本,在下载链接上“右击”——“复制链接地址”,替换到上面对应的版本即可!!!

备注2:如果您在使用odoo过程中不能使用PDF功能,后来才安装 wkhtmltopdf 时, 当您安装好 wkhtmltopdf 之后,你是否还会发现下图的报错?是因为您安装成功之后没有重新启动 odoo 。


Unable To Find Wkhtmltopdf On This System

重新启动odoo,代码如下:

sudo /etc/init.d/odoo stop
sudo /etc/init.d/odoo start

OR

sudo /etc/init.d/odoo restart
odoo代码运行

现在您会发现,你再登录odoo,使用它的PDF功能,是否可以正常显示呢?

odoo可以使用PDF功能了

备注3:从这一行到备注2的所有内容,是后期安装 Wkhtmltopdf 遇到问题的解决方法,如果你按照流程正常安装请忽略这部分内容。

6、安装nodejs、node-less

sudo apt-get install -y nodejs node-less npm  #安装node.js  NPM  less
sudo npm install -g less-plugin-clean-css  #使用 npm 安装 less-plugin-clean-css

7、配置Odoo的启动文件

用Ubuntu自带的nano编辑器在/etc/odoo/目录下创建odoo.conf文件。

mkdir /etc/odoo
sudo nano /etc/odoo/odoo.conf

复制下面的内容到nano编辑器内

[options]
; This is the password that allows database operations:
; admin_passwd = admin
db_host = False
db_port = False
db_user = odoo
db_password = odoo
addons_path = /home/odoo/odoo10/odoo/addons

:用git下载的odoo源码addons_path的参数需改成:
addons_path = /home/odoo/odoo10/addons

粘贴好后,按Ctrl+O,然后回车覆盖保存,然后Ctrl+X退出nano。
修改配置文件(/etc/odoo/odoo.conf)的权限

sudo chown odoo: /etc/odoo/odoo.conf  #将所有权赋予odoo用户和用户组  
sudo chmod 640 /etc/odoo/odoo.conf  #只允许odoo用户和root用户读取

复制启动文件到/usr/bin/目录下,并尝试启动Odoo服务:

cp /home/odoo/odoo10/setup/odoo /usr/bin/odoo  #复制启动文件到/usr/bin/目录下
sudo chown odoo: /usr/bin/odoo  #修改文件所有者
sudo chmod 755 /usr/bin/odoo  #增加执行权限
cd /home/odoo/odoo10
python setup.py install
sudo su - odoo -s /bin/bash  #切换到odoo用户
/usr/bin/odoo -c /etc/odoo/odoo.conf  #运行Odoo

在浏览器输入http://ip:8069


Odoo初始界面

如果一切正常,按 Ctrl+C停止odoo服务,然后用exit命令离开odoo用户,回到你自己登陆的shell。如果报错,则需要查看界面上显示的错误提示。

8、配置启动脚本

用Ubuntu自带的nano编辑器在/etc/init.d/目录下创建odoo启动脚本文件,然后把它改成可执行文件,赋给root用户。

sudo nano /etc/init.d/odoo

复制下面的内容到nano编辑器内

#!/bin/bash
### BEGIN INIT INFO
# Provides:          odoo
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start odoo daemon at boot time
# Description:       Enable service provided by daemon.
# X-Interactive:     true
### END INIT INFO
## more info: http://wiki.debian.org/LSBInitScripts

. /lib/lsb/init-functions

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DAEMON=/usr/bin/odoo
NAME=odoo
DESC=odoo
CONFIG=/etc/odoo/odoo.conf
LOGFILE=/var/log/odoo/odoo-server.log
PIDFILE=/var/run/${NAME}.pid
USER=odoo
export LOGNAME=$USER

test -x $DAEMON || exit 0
set -e

function _start() {
    start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE
}

function _stop() {
    start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
    rm -f $PIDFILE
}

function _status() {
    start-stop-daemon --status --quiet --pidfile $PIDFILE
    return $?
}


case "$1" in
        start)
                echo -n "Starting $DESC: "
                _start
                echo "ok"
                ;;
        stop)
                echo -n "Stopping $DESC: "
                _stop
                echo "ok"
                ;;
        restart|force-reload)
                echo -n "Restarting $DESC: "
                _stop
                sleep 1
                _start
                echo "ok"
                ;;
        status)
                echo -n "Status of $DESC: "
                _status && echo "running" || echo "stopped"
                ;;
        *)
                N=/etc/init.d/$NAME
                echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
                exit 1
                ;;
esac

exit 0

粘贴好后,按Ctrl+O,然后回车覆盖保存,然后Ctrl+X退出nano。
接下来修改odoo文件的权限。

sudo chown root: /etc/init.d/odoo  #修改odoo的所有者为root
sudo chmod 755 /etc/init.d/odoo  #修改odoo的权限

增加配置文件的参数,修改/etc/odoo/odoo.conf文件

sudo nano /etc/odoo/odoo.conf

复制下面的内容到odoo.conf文件内

data_dir = /var/lib/odoo
log_level = info
logfile = /var/log/odoo/odoo-server.log
logrotate = True

data_dir:附件的保存位置
logfile:日志文件名,比如opt/odoo-server.log。如果不设置,则默认为stdout,即输出到控制台;
logrotate:True/False。如果设置True,每天创建一个文件,并且保存30天的日志文件;
log_db:Ture/False。如果设置为True,日志会写入数据库中的“ir_logging”表中;
log_level:日志级别,可以为列表中的任意一项 [‘debug_rpc_answer’, ‘debug_rpc’, ‘debug’, ‘debug_sql’, ‘info’, ‘warn’, ‘error’, ‘critical’]。Odoo设置此日志级别选项的意义在于因为这些级别值被映射到了一个预先定义好的”module:log_level”键值对集合,即使这个选项没有被设置,Odoo则会使用预先定义的设置作为默认设置。具体内容参见下面的日志实现章节。

粘贴好后,按Ctrl+O,然后回车覆盖保存,然后Ctrl+X退出nano。
配置文件里指定了日志文件和附件的存储位置,因此要创建这个目录,同时还得让它能被odoo用户读写:

sudo mkdir /var/lib/odoo  #新建附件存储目录
sudo chown odoo: /var/lib/odoo  #修改所有者为odoo用户
sudo chmod 744 /var/lib/odoo  #修改为odoo用户读取和写入
sudo mkdir /var/log/odoo  #新建日志存储目录
sudo chown odoo:root /var/log/odoo  #修改所有者为odoo用户

启动odoo服务

sudo /etc/init.d/odoo start  #或者service odoo start

查看odoo的日志判断是否启动成功

less /var/log/odoo/odoo-server.log

要退出less命令的查看界面,只需按一下q键。如果启动过程中出现问题,可以依据日志文件的内容查找原因。
检查odoo服务器是否可以被正常停止:

sudo /etc/init.d/odoo stop  #或者service odoo stop

9、将Odoo设为开机自启动

让启动脚本随着Ubuntu服务器的开、关机而自动启动、关闭Odoo服务。

sudo update-rc.d odoo defaults

现在就可以重启你的服务器,当你再次登录服务器,Odoo应该已经在运行了。输入以下命令查看Odoo是否已在运行。

ps aux | grep odoo

备注:摘录这篇文章的原因有3点:1、基本所有命令都加了注释,方便理解;2、讲的会比较详细;3、内容比较完整。<后期我会按照作者的步骤部署一次,我部署的流程会在此篇文章进行填充!>

作者:itrojan
链接:https://www.jianshu.com/p/4a61afbedc11
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注