做者:陳偉明
聯繫 : 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結束=====================================================