做者:陈伟明
联系 : QQ 942923305 | 微信 toby942923305
E-mail: toby2chen@hotmail.com
==================================
服务器
操做系统: Ubuntu trusty14.04css
建议生产采用 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 星期四html
==================================前端
http://mirrors.163.com/ubuntu-releases/14.04/
到里面找一个 ubuntu-14.04.3-server-amd64.iso 下载下来安装node
=============================================ubuntu14.04 安装 odoo开始=====================================================python
备注,我采www用户运行,没有采用odoo用户运行,主要考虑前端我用nginx代理 ,采用的用户www 达到一致linux
准备工做,
python 自己是 2.7.6nginx
升级到 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-devgit
安装 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.tgzgithub
# tar -xzvf Python-2.7.9.tgz
# cd Python-2.7.9
# ./configure
# make
# make installweb
升级 python 完成
-------------------------
-------------------------
设定python默认的编码为utf-8
在python的Lib\site-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格式,解析 \r\n 不同
解决方法,转换到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结束=====================================================