第一部分,安裝OE
說明:
CentOS版本為6.4版本,命令行采用bash,PostgreSQL為9.2版本,Nginx為1.4版本
1、CentOS 的安裝選項有最小化安裝、基本服務器安裝、虛擬主機安裝等等的,我這裡采用的是基本服務器安裝(帶的東西較少,其實我們也只需要網絡能聯通加上yum可用即可)
2、安裝postgresql9.2(默認的8.4版本我沒試過,我一般都是把默認的8.4給卸載掉,下文中pg就代表postgresql-9.2)
注意:#代表root用戶命令行狀態(不做特別說明了),中間會涉及到切換到其他用戶
#cd /tmp //進入tmp目錄,這是系統的臨時目錄,裡面的文件不重要,即使誤刪危害也不大,所以推薦在tmp目錄下做臨時性操作
#yum remove postgres //卸載原有的pg,如果pg默認沒有安裝這條命令則無視
#rpm -Uvh http://yum.pgrpms.org/9.2/redhat/rhel-6-x86_64/pgdg-centos92-9.2-6.noarch.rpm //RPM方式從網絡上安裝pg的RPM包
#yum -y install postgresql92 postgresql92-server postgresql92-libs postgresql92-contrib postgresql92-devel //使用yum安裝相關依賴包
#service postgresql-9.2 initdb //初始化pg
數據庫
#service postgresql-9.2 start //啟動pg服務
#chkconfig postgresql-9.2 on //將pg啟動服務加入CentOS的啟動列表,相當於windows裡面的啟動項
#su - postgres //切換到postgres用戶,該用戶為安裝pg時安裝包自動創建的,它是pg默認的超級用戶,在該用戶環境下有一些管理命令
-bash-4.1(postgres)$createuser --superuser openerp //創建一個叫openerp的超級用戶(此時創建的用戶只是數據庫的用戶,openerp在操作系統中並不存在,請注意其中的區別)
#rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm //從網絡上安裝epel包,我這裡的RPM鏈接是針對x86_64版本的,如果是其他版本請做對應
修改
#yum -y install python-psycopg2 python-lxml PyXML python-setuptools libxslt-python pytz python-matplotlib python-babel python-mako python-dateutil python-psycopg2 pychart pydot python-reportlab python-devel python-imaging python-vobject hippo-canvas-python mx python-gdata python-ldap python-openid python-werkzeug python-vatnumber pygtk2 glade3 pydot python-dateutil python-matplotlib pygtk2 glade3 pydot python-dateutil python-matplotlib python python-devel python-psutil python-docutils makeautomake gcc gcc-c++ kernel-devel byacc flashplugin-nonfree poppler-utils pywebdav //安裝OE依賴的庫,大部分都是python庫,也有一部分其他依賴庫
#wget http://gdata-python-client.googlecode.com/
files/gdata-2.0.17.zip //這東西起什麼作用我也不清楚,不過它很好安裝
#unzip gdata-2.0.17.zip
#cd gdata-2.0.17
#python setup.py install
#cd /tmp
#rm -rf openerp* //清理不用的舊的openerp開頭的所有文件(慎用)
#wget http://nightly.openerp.com/7.0/nightly/src/openerp-7.0-latest.tar.gz //下載OE源代碼包,准備安裝
#tar xvzf openerp-7.0-latest.tar.gz //解壓OE源代碼包
#mkdir /opt/oe7
#cp -R openerp*/{openerp,install/{openerp-server.init,openerp-server.conf},openerp-server,setup.py} /opt/oe7 //將我們需要的文件拷貝到安裝目錄
#adduser openerp //創建openerp用戶,它與postgres創建的openerp是關聯的
#
chown openerp:openerp /opt/oe7 -R //將OE安裝目錄下的所有文件所有者設定為openerp用戶
#cd /opt/oe7
#
chmod u+x openerp-server.init //.init文件是oe的一個啟動腳本,需要給它設置可執行權限
#mv openerp-server.init /etc/init.d/oe7server
#chkconfig oe7server on //將oe加入CentOS啟動列表
#cp openerp-server.conf /etc //將OE的配置文件拷貝到/etc目錄下,如果想自定義配置文件路徑可以通過給openerp-server設置選項或者修改openerp-server.init文件裡面的路徑來實現,這裡采用的方法不用做修改,較為簡單
到這裡OE基本上安裝完成了,但是啟動的時候會報錯,主要是仍舊缺少一些依賴包
我們可以采用兩種方式來解決這個問題
第一種:完全手工安裝依賴包
#yum install python-pip
#pip-python install mock
#pip-python install unittest2
第二種:使用剛才拷貝的setup.py
#cd /opt/oe7
#python setup.py install //這個安裝程序會自動從網上下載需要的依賴包,並且會創建一些目錄,我們只需要保留openerp.egg-info目錄,如果刪除該目錄,OE啟動會有警告信息
#adduser openerp
#chown openerp:openerp /opt/oe7 -R //將OE安裝目錄的所有者遞歸授予openerp
#service oe7server start //啟動OE,這時候應該可以通過浏覽器訪問OE了
第二部分,安裝Nginx
OE本身自帶的webserver效能較低,在前端采用nginx做代理
#yum install nginx //nginx安裝很簡單
配置/etc/nginx/nginx.conf文件,如果只是為OE服務,建議一個配置文件即可,步科的多文件配置方式是在ubuntu上測試的,在CentOS上缺少相關目錄(當然應該是我不熟)
/etc/nginx/nginx.conf配置文件
#設定http服務器,利用它的反向代理功能提供負載均衡支持
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
#設定mime類型,類型由mime.type文件定義
include /etc/nginx/mime.types;
default_type appli
cation/octet-stream;
#設定日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
#添加一個類型 application/javascript
gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;
upstream oe_server{
#這裡可以給出多個server,用來分擔OE服務器的負擔,並且還可以設定權重(具體請參考nginx配置)
server 127.0.0.1:8069; //這是OE提供服務的地址及端口,可以指定多個server,也就是可以使用多個OE服務器來均衡負載,但是後台數據庫還是要保證在邏輯上是一台
//我是因為nginx與OE在同一台機器,所以可以寫成127段地址
}
#第一個虛擬服務器
server {
#偵聽192.168.1.2的80端口
listen 80;
server_name 192.168.1.2;
location /{
root /opt/oe7/openerp/addons/; #定義服務器的默認網站根目錄位置
proxy_pass http://oe_server ;#請求轉向mysvr 定義的服務器列表
#以下是一些反向代理的配置可刪除.
proxy_redirect off;
#後端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允許客戶端請求的最大單文件字節數
client_body_buffer_size 128k; #緩沖區代理緩沖用戶端請求的最大字節數,
proxy_connect_timeout 90; #nginx跟後端服務器連接超時時間(代理連接超時)
proxy_send_timeout 90; #後端服務器數據回傳時間(代理發送超時)
proxy_read_timeout 90; #連接成功後,後端服務器響應時間(代理接收超時)
proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小
proxy_buffers 4 32k; #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置
proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
}
}
}
#service nginx start
現在可以通過nginx來訪問OE了
如果加上花生殼軟件,再配置路由器端口映射,外網就可以通過域名來訪問內網OE了