zoukankan      html  css  js  c++  java
  • (01)odoo8.0_Ubuntu14.04源码安装

    作者:陈伟明
    联系 :  QQ 942923305 | 微信 toby942923305
    E-mail: toby2chen@hotmail.com
    ==================================
    服务器
    操作系统: Ubuntu trusty14.04

    建议生产采用 Ubuntu系统,官方开发时采用这个系统
    ==================================
    修订时间:
    21:10 2016-06-09 星期四  调整附件数据目录
    13:18 2016-01-15 星期五  加入--auto-reload启动方式
    12:25 2016-01-07 星期四  修订
    14:34 2015-12-10 星期四 去除centos部分,增加报表依赖的库
    10:02 2015-10-30 星期五 增加帮助文档编译
    14:27 2015-10-29 星期四 增加支持扫描仪的python 库
    14:28 2015-10-14 星期三 ubuntu下面 增加用服务形式 管理odoo
    12:21 2015-10-14 星期三 修订 更加合理化
    09:02 2015-10-13 星期二 增加多核启动odoo
    11:57 2015-09-28 星期一 修订
    15:49 2015-09-25 星期五 增加ubuntu下面的安装方法
    11:50 2015-09-02 星期三 修订
    17:09 2015-08-27 星期四

    ==================================

    http://mirrors.163.com/ubuntu-releases/14.04/ 
    到里面找一个 ubuntu-14.04.3-server-amd64.iso  下载下来安装


    =============================================ubuntu14.04 安装 odoo开始=====================================================


    备注,我采www用户运行,没有采用odoo用户运行,主要考虑前端我用nginx代理 ,采用的用户www 达到一致

    准备工作,
    python 本身是 2.7.6

    升级到 2.7.9
    -------------------------
    准备
    # apt-get -y install build-essential libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

    安装 python2.7.9
    # mkdir -p /opt/soft/python
    # cd /opt/soft/python
    # wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz

    # tar -xzvf Python-2.7.9.tgz
    # cd Python-2.7.9
    # ./configure
    # make
    # make install

    升级 python 完成
    -------------------------

    -------------------------
    设定python默认的编码为utf-8

    在python的Libsite-packages文件夹下新建一个sitecustomize.py,内容为:
    Python代码
    # -*- coding: utf-8 -*-
     
    import sys 
     
    reload(sys) 
    sys.setdefaultencoding('utf8')
    ---------------------------

    安装 nodejs

    # curl -sL https://deb.nodesource.com/setup | sudo bash -
    # apt-get install nodejs

    安装pip
    #curl -O https://bootstrap.pypa.io/get-pip.py
    # python get-pip.py

    安装 npm 工具
    #pip install npm

    ---------virtualenv 是可选开始----- 喜欢虚拟环境就安装,不喜欢的就不要装

    安装virtualenv
    # pip install virtualenv

    是一个建立在 virtualenv 上的工具,通过它可以方便的创建/激活/管理/销毁虚拟环境
    # pip install virtualenvwrapper

    创建目录用来存放虚拟环境

    # mkdir $HOME/.virtualenvs
    在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs

    在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh

    生效:
    # source ~/.bashrc


    列出虚拟环境列表

    # workon

    也可以使用
    # lsvirtualenv

    新建虚拟环境
    # mkvirtualenv [虚拟环境名称]

    启动/切换虚拟环境
    # workon [虚拟环境名称]

    删除虚拟环境
    # rmvirtualenv [虚拟环境名称]

    离开虚拟环境
    # deactivate

    # mkvirtualenv --distribute  --no-site-packages odoo8_venv    创建虚拟环境 ,会在root/.virtualenvs下面创建 odoo8_venv ,然后把相关包装在里面

    接下来安装环境就在 odoo8_venv 下面


    -----------virtualenv 是可选开始结束----------


    安装 postgresql----------------------------------------

    上面若开启了odoo8_venv 先退出来
    # deactivate

    http://www.postgresql.org/download/linux/ubuntu/
    加入源
    #vi /etc/apt/sources.list.d/pgdg.list  增加下面一行然后保存

    deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main

    :wq 保存

    导入key,下面一次性输入完回车,不要分三次

    #wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc |
      sudo apt-key add -
      sudo apt-get update

    可安装列表
    postgresql-client-9.4 - client libraries and client binaries
    postgresql-9.4 - core database server
    postgresql-contrib-9.4 - additional supplied modules
    libpq-dev - libraries and headers for C language frontend development
    postgresql-server-dev-9.4 - libraries and headers for C language backend development
    pgadmin3 - pgAdmin III graphical administration utility

    安装要用的 posotgresql
    # apt-get -y install postgresql-9.4   postgresql-client-9.4 postgresql-contrib-9.4  postgresql-server-dev-9.4 libpq-dev


    管理
    # service postgresql start|stop|restart  # 启动 停止  重启

    启用md5 密码访问(下面那个命令暂是不要用,到odoo备份没有采用md5来做而是采用peer来做)
    # sed -i "/^host/s/ident/md5/g" /etc/postgresql/9.4/main/pg_hba.conf  连接using MD5 hashed passwords

    配置文件 在 /etc/postgresql  目录下  /var/lib/postgresql  主要这两个下面, 
    /var/lib/postgresql 还是postgresql用户的家目录
    /etc/postgresql/9.4/main/postgresql.conf  主配置
    /var/lib/postgresql/9.4/main 数据库数据目录


    开启远程访问
    # vi /etc/postgresql/9.4/main/pg_hba.conf
    在后面加一条(要换成自己的ip)
    host  all    all    192.168.0.60/32    md5

    若要全面开放就是
    host  all    all    all    md5

    命令进入数据库
    # su - postgres
    -bash-4.1$ psql 进入数据库
    设置postgres用户密码
    postgres=# password postgres

    postgres=#  help 得到帮助
    退出
    ctrl +d   或 q退出

    开启远程管理
    # vi /etc/postgresql/9.4/main/postgresql.conf
    定位到#listen_addresses=’localhost’。PostgreSQL安装完成后,默认是只接受来在本机localhost的连接请 求。
    将行开头都#去掉,将行内容修改为listen_addresses=’*'来允许数据库服务器监听来自任何主机的连接请求

    #service postgresql restart

    Mysql忘记root密码后还是需要一点手脚的,发觉postgresql基本没啥特别之处
    修改pg_hba.conf中的host all all 127.0.0.1/32 md5 为host all all 127.0.0.1/32 trust然后sudo -u postgres psql直接就进去了


    给数据库加用户(odoo)
    #su - postgres
    -bash-4.1$ createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo
    输入密码,自己要记得哟 后面odoo配置文件 openerp-server.conf (db_password 的值) 要用到 我输入的密码是odoo

    安装 postgresql-------------------------------------------结束

    换到root权限
    -bash-4.1$ exit 

    安装odoo需要的 python 库

    安装odoo依赖:

    准备
    # apt-get -y install libjs-sphinxdoc libjs-underscore libfontconfig1 libjpeg-turbo8 xfonts-75dpi 
       fontconfig fonts-dejavu-core  ttf-bitstream-vera fonts-freefont-ttf gsfonts-x11 gsfonts fontconfig-config 
       libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk 
       libldap2-dev libxslt-dev libpq-dev libsasl2-dev libxml2
     
    # useradd www
    # mkdir -p /var/www/odoo
    # chown -R www.www /var/www

    用git 把源码放在 /var/www/odoo 下面
    安装git
    # apt-get -y intall git
    # su www
    $ cd /var/www/odoo

    注意后是空格 加 英文点  表示是远程源的当前目录,否则把目录都克隆下来了
    $ git clone https://www.github.com/odoo/odoo --branch 8.0 --single-branch .

    安装wkhtmltopdf 来输出 pdf
    # cd /opt/soft/python
    # curl -O  http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
    # dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb

    做一下软链接 odoo用的是/usr/bin 下面的命令
    # ln -s /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf

    # wkhtmltopdf -V 查一下版本
    wkhtmltopdf 0.12.2.1 (with patched qt)
    显示安装成功

    安装中文字体
    # apt-get -y install xfonts-base ttf-wqy-zenhei  ttf-wqy-microhei

    安装odoo的依赖
    #apt-get -y install  python-cups python-dev python-setuptools  python-dateutil python-docutils python-feedparser python-gdata
    python-jinja2 python-ldap python-libxslt1 python-lxml python-mako python-mock python-openid
    python-psycopg2 python-psutil python-pybabel python-pychart python-pydot python-pyparsing
    python-reportlab python-simplejson python-tz python-unittest2 python-vatnumber python-vobject
    python-webdav python-werkzeug python-xlwt python-yaml python-zsi python-pypdf python-requests
    python-pil python-imaging python-passlib python-decorator  python-bs4 python-bs4-doc libcups2-dev


    安装 python-ofxparse
    # cd /opt/soft/python
    # wget https://launchpad.net/~pythoneers/+archive/ubuntu/py35asdefault/+build/7558927/+files/python-ofxparse_0.14-1_all.deb

    # dpkg -i python-ofxparse_0.14-1_all.deb

    进入到/var/www/odoo 安装odoo8.0的依赖
    # pip  install -r requirements.txt

    安装支持扫描仪依赖库
    # pip install evdev

    支持自动备份,远程ftp
    # pip install pysftp

    支持base_report扩展
    # pip install pycups

    -------------开始调试要安装的依赖 start------------------
    注:若是生产环境就不要去装了。

    支持 --auto-reload 服务开启

    ----------------
    # pip install pyinotify

    问题引发:
    https://github.com/seb-m/pyinotify/pull/117

    安装完,要改一下文件
    参照:https://github.com/smarkets/pyinotify/commit/04fea85f0318050eff6a79be34f608d06be51e22

    # vi /usr/local/lib/python2.7/site-packages/pyinotify.py

    在这段
    class Notifier:
         """
         Read notifications, process events.

    前面加
    try:
        _poll_class = select.poll
    except AttributeError:
        class _Poll(object):
            """
            poll emulator implemented using select.

            This is used to make the client code happy in case of select.poll missing.
            select.poll is missing when Gevent monkey patching is applied, Eventlet
            will soon start doing the same.

            See https://github.com/seb-m/pyinotify/issues/78.
            """
            def __init__(self):
                self._fds = []

            def register(self, fd, eventmask):
                assert eventmask == select.POLLIN, 'Only POLLIN supported right now'
                self._fds.append(fd)

            def poll(self, timeout):
                timeout_in_seconds = timeout / 1000.0 if timeout is not None else None
                can_read, _, _ = select.select(self._fds, [], [], timeout_in_seconds)
                return [(fd, select.POLLIN) for fd in can_read]

            def unregister(self, fd):
                try:
                    self._fds.remove(fd)
                except ValueError:
                    # poll.unregister is supposed to raise KeyError in case of
                    # attempting to unregister a descriptor that's not registered.
                    raise KeyError(fd)

        _poll_class = _Poll

    然后找到
    self._pollobj = select.poll()
    换为
    self._pollobj = _poll_class()

    删除
    rm /usr/local/lib/python2.7/site-packages/pyinotify.pyc


    # pip install pudb
    # pip install ipdb
    支持excel
    # pip install xlrd

    # pip install pandas
    ---------------
    -------------开始调试要安装的依赖 start------------------

    碰到Bad md5 hash for package https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz

    ---------------
    解决
    # cd /tmp
    # curl -O https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz
    # md5sum pycrypto-2.6.1.tar.gz
    # pip install pycrypto-2.6.1.tar.gz
    最后 # pip install pysftp
    --------------

    安装多核启动
    # apt-get install -y git
    # pip install cython gevent

    # pip install PyPDF2

    根据ip得到地址名字
    # pip install geoip2


    安装aeroo报表支持

    安装 less ,9.0用到,8是没有用到,可以不装,我是没事多装了一下

    # npm install -g less less-plugin-clean-css

    注意
    如果无法以https模式访问 npm注册,切换为http模式
    npm config set registry http://registry.npmjs.org

    或者切换到 国内的npm 镜像站
    npm config set registry http://registry.cnpmjs.org

    建立odoo的工作目录(session、 addons、数据库缓存文件) 和 日志目录
    mkdir /var/lib/odoo   这个是附件,session,部分addons的目录 ,
    若运行的用户(我这里是www)有家目录(/home/www/) 就会用/home/www/.local/share/Odoo/这个目录取代
    mkdir /var/log/odoo
    chown www.www /var/lib/odoo
    chown www.www /var/log/odoo

    -----------------
    建立配置文件选项:
    切换到www
    # su - www
    $ cd /var/www/odoo
    $ python ./odoo.py --save --stop-after-init  
    $ more ~/.openerp_serverrc    查看可用的配置选项

    如下:
    [options]
    addons_path = /var/www/odoo/openerp/addons,/var/www/odoo/addons
    admin_passwd = admin
    auto_reload = False
    csv_internal_sep = ,
    data_dir = /home/www/.local/share/Odoo
    db_host = False
    db_maxconn = 64
    db_name = False
    db_password = False
    db_port = False
    db_template = template1
    db_user = www
    dbfilter = .*
    debug_mode = False
    demo = {}
    email_from = False
    geoip_database = /usr/share/GeoIP/GeoLiteCity.dat
    import_partial =
    limit_memory_hard = 2684354560
    limit_memory_soft = 2147483648
    limit_request = 8192
    limit_time_cpu = 60
    limit_time_real = 120
    list_db = True
    log_db = False
    log_db_level = warning
    log_handler = :INFO
    log_level = info
    logfile = None
    logrotate = False
    longpolling_port = 8072
    max_cron_threads = 2
    osv_memory_age_limit = 1.0
    osv_memory_count_limit = False
    pg_path = None
    pidfile = None
    proxy_mode = False
    reportgz = False
    secure_cert_file = server.cert
    secure_pkey_file = server.pkey
    server_wide_modules = None
    smtp_password = False
    smtp_port = 25
    smtp_server = localhost
    smtp_ssl = False
    smtp_user = False
    syslog = False
    test_commit = False
    test_enable = False
    test_file = False
    test_report_directory = False
    timezone = False
    translate_modules = ['all']
    unaccent = False
    without_demo = False
    workers = 0
    xmlrpc = True
    xmlrpc_interface =
    xmlrpc_port = 8069
    xmlrpcs = True
    xmlrpcs_interface =
    xmlrpcs_port = 8071

    -----------------


    在网站目录下建立配置文件 openerp-server.conf ,把上面自动生成的配置文件选择一些项来构建自己的配置文件
    db_user = www  这个是因为用www来开启的,从而用www来连数据库,但我们前面是用odoo用户创建的数据库用户
    这个要改成 odoo ,下面的值要按照自己当时安装时实际情况填写。
    [options]


    addons_path = /var/www/odoo/openerp/addons,/var/www/odoo/addons


    admin_passwd = admin


    auto_reload = False ;要开发调代码就改为True, 改为True 会影响开机开启服务 是ascii编码问题,一时还解决不了

    db_host = 127.0.0.1 
    db_password = odoo  这个是创建数据库我自己写的密码
    db_port = 5432
    db_user = odoo 创建数据库的一个用户,不能用www,因为www没有用到数据中
    dbfilter = .*

    ;SSL
    secure_cert_file = /etc/nginx/ssl/server.crt
    secure_pkey_file = /etc/nginx/ssl/server.key

    ;Ports to use

    xmlrpc_port = 8069

    longpolling_port = 8072

    limit_time_cpu = 3600
    limit_time_real = 3600
    workers =2


    ;LOG SETTINGS

    logfile = /var/log/odoo/odoo-server.log

    log_level = warn

    auto_reload = True

    运行一下
    # su www
    $ python openerp-server -c  openerp-server.conf

    $ python odoo.py -c  openerp-server.conf 

    odoo.py 一般习惯用于命令行


    浏览器访问
    http://IP:8069

    -------------------用supervisor 来管理 开始-----------------------
    在开发时 有对比和服务 两种方式,稳定性还是 服务的好,特别在用 auto_reload 时很明显

    安装supervisor
    # pip install supervisor

    生成配置文件
    # mkdir -p /etc/supervisor
    # echo_supervisord_conf > /etc/supervisor/supervisord.conf

    # vi /etc/supervisor/supervisord.conf 对应修改为下面的内容

    [unix_http_server]
    file=/var/run/supervisor.sock   ; (the path to the socket file)

    [supervisord]
    logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
    pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)

    [supervisorctl]
    serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

    [include]
    files = /etc/supervisor/conf.d/*.ini

    [inet_http_server]         ; inet (TCP) server disabled by default
    ;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)
    port=0.0.0.0:9001        ; (ip_address:port specifier, *:port for all iface)

    :wq 保存

    此处的/etc/supervisor/conf.d/用于存放各种program的supervisord启动脚本(后缀为ini)
    # mkdir /etc/supervisor/conf.d/

    # vi /etc/supervisor/conf.d/odoo.ini
    [program:odoo]
    process_name=%(program_name)s_%(process_num)02d
    directory= /var/www/odoo/
    command=python /var/www/odoo/openerp-server -c /var/www/odoo/openerp-server.conf

    autostart=true
    autorestart=true
    user=www
    numprocs=1
    redirect_stderr=true
    stdout_logfile=/var/www/odoo/openerp-server.log
    stdout_logfile_maxbytes = 500MB


    然后添加Supervisor的service控制命令:
    https://github.com/Supervisor/initscripts 可以查看到很多平台启动脚本

    # cd /etc/init.d/
    # wget https://raw.githubusercontent.com/Supervisor/initscripts/master/ubuntu
    # mv ubuntu supervisord
    # chmod +x supervisord

    改几个地方
    DAEMON=/usr/local/bin/supervisord
    SUPERVISORCTL=/usr/local/bin/supervisorctl
    PIDFILE=/var/run/$NAME.pid

    创建文件夹:

    # mkdir -p /var/run/supervisor
    # mkdir -p /var/log/supervisor


    加入随机器启动服务
    # update-rc.d supervisord defaults

    启动supervisord

    # /etc/init.d/supervisord start

    # service supervisord start

    后器可以用浏览器 输入 http://192.168.0.62:9001 来管理supervisord

    -------------------用supervisor 来管理 结束-----------------------

    -------------------用服务 来管理 结束-----------------------

    # cd /var/www/odoo
    # chmod +x openerp-server
    # su www
    $ ./openerp-server -c ./openerp-server.conf
    若运行成功进行下一步,我这里出问题了 报错
    No such file or directory
    想了一下原因,我是用了windows 同步到 unbuntu下面,导致这些文件都是dos格式,解析 不一样
    解决方法,转换到unix格式
    ----
    安装转换工具tofrodos
    $exit
    # apt-get install tofrodos
    转化openerp-server文件格式
    # cd /var/www/odoo
    # fromdos openerp-server
    ----
    再次测试
    # su www
    $ ./openerp-server -c ./openerp-server.conf
    一切正常
    写一个启动脚本如下
    $ exit
    # cd /etc/init.d/
    # vi odoo-server
    ---------------------- 内容如下
    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides: odoo-server
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Should-Start: $network
    # Should-Stop: $network
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Enterprise Resource Management software
    # Description: Open ERP is a complete ERP and CRM software.
    ### END INIT INFO

    PATH=/usr/local/sbin:/usr/local/bin:/bin:/sbin:/usr/bin:
    DAEMON=/var/www/odoo/openerp-server
    NAME=odoo-server
    DESC=odoo-server
     
    # Specify the user name (Default: openerp).
    USER=www
     
    # Specify an alternate config file (Default: /etc/openerp-server.conf).
    CONFIGFILE="/var/www/odoo/openerp-server.conf"
     
    # pidfile
    PIDFILE=/var/run/$NAME.pid
     
    # Additional options that are passed to the Daemon.
    DAEMON_OPTS="-c $CONFIGFILE"
     
    [ -x $DAEMON ] || exit 0
    [ -f $CONFIGFILE ] || exit 0
     
    checkpid() {
      [ -f $PIDFILE ] || return 1
      pid=`cat $PIDFILE` [ -d /proc/$pid ] && return 0 return 1
    }
     
    case "${1}" in
    start)
      echo -n "Starting ${DESC}: "
      start-stop-daemon --start --quiet --pidfile ${PIDFILE}
      --chuid ${USER} --background --make-pidfile
      --exec ${DAEMON} -- ${DAEMON_OPTS}
      echo "${NAME}."
      ;;
    stop)
      echo -n "Stopping ${DESC}: "
      start-stop-daemon --stop --quiet --pidfile ${PIDFILE}
      --oknodo echo "${NAME}."
      ;;
    restart|force-reload)
      echo -n "Restarting ${DESC}: "
      start-stop-daemon --stop --quiet --pidfile ${PIDFILE}
      --oknodo
      sleep 1
      start-stop-daemon --start --quiet --pidfile ${PIDFILE}
      --chuid ${USER} --background --make-pidfile
      --exec ${DAEMON} -- ${DAEMON_OPTS}
      echo "${NAME}."
      ;;
    *)
      N=/etc/init.d/${NAME}
      echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
      exit 1
      ;;
    esac
    exit 0

    :wq 保存退出
    ----------------------
    加到执行权权
    # chmod +x odoo-server
    启动
    # server odoo-server start
    ok 一切正常
    可操作如下
    server odoo-server start 启动
    server odoo-server stop 停止
    server odoo-server restart 重启
    server odoo-server force-reload 重启

    把服务放到随机器启动
    # update-rc.d odoo-server defaults

    -------------------用服务 来管理 结束-----------------------

    用 supervisord 和服务形式管理,选择一个就可以,不要两个一起用

    -------------文档编译 开始---------------
    # cd /var/www/odoo/doc

    # pip -y install sphinx sphinx-patchqueue mercurial
    # su www
    pip install -r requirements.txt
    $ cd /var/www/odoo/doc
    $ make latex
    -------------文档编译 结束---------------


    =============================================ubuntu14.04 安装 odoo结束=====================================================

    作者:陈伟明 | 联系 : QQ 942923305 | 微信 toby942923305 | E-mail: toby2chen@hotmail.com
  • 相关阅读:
    java SSM 框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码
    PHP5.5.13 + Apache2.4.7安装配置流程详解
    mybatis-generator 自动生成mapper以及实体类
    spring cloud之Feign的使用
    spring cloud 初体验
    redis 分布式锁
    Activiti 工作流之所学所感(基本配置) DAY1
    druid 连接池加密算法
    ssm+redis整合(通过aop自定义注解方式)
    aop (权限控制之功能权限)
  • 原文地址:https://www.cnblogs.com/toby2chen/p/5177062.html
Copyright © 2011-2022 走看看