被围观了 12,770 次

目录

1.      概述

2.      安装ubuntu操作系统

3.      安装jdk

4.      安装odoo

5.      安装pgAdmin

6.      准备odoo源代码

7.      安装pycharm

8.      调试odoo后端python代码

§8.1  进入odoo.py的shell命令模式(odoo v9才有)

§8.2 服务启动过程跟踪

§8.3 跟踪后端网页动作

§8.4 调试模块

9.       调试odoo前端js代码

§9.1 安装和配置chrome浏览器

§9.2 配置goagent翻墙工具

§9.3 调试前端js脚本

10.       防火墙配置

 

 

1.     概述

Pycharm是一个全功的的python和Web开发集成工具,支持Django、Flask、Google App Engine、Pyramid、web2py框架和JavaScript、CoffeeScript、TypeScript、CSS、Cython和模板语言等,以及数据库和SQL, UML & SQLAlchemy Diagrams。而且能实现远程开发和调试。本人曾经尝试在windows搭建,但是安装python的各种软件包时问题很多,最后在Linux操作系统上成功完成。

本文件讲述如何在ubuntu 14.04操作系统上搭建odoo的调试开发环境,我们采用如下的软件:

⑴、VMware-workstation-full-11,                             可从http://www.vmware.com/products/workstation/workstation-evaluation下载使用版,然后去网上搜索密钥产生器,或者采用个序列号:VA7HH-44W0Q-0818Y-RYZEV-WVRGA

⑵、ubuntu-14.10-desktop-i386,      可从http://mirrors.aliyun.com/ubuntu-releases/14.10/ubuntu-14.10-desktop-i386.iso下载。

⑶、jdk-8u40-linux-i586.tar.gz,采用命令下载:wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u40-b25/jdk-8u40-linux-i586.tar.gz

⑷、chrome最新版浏览器,可从https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb下载。

⑸、开发调试工具pycharm-professional,                     可从https://www.jetbrains.com/pycharm/download/下载Linux版本的。

⑹、翻墙工具goagent,可从https://github.com/goagent/goagent下载,此网站上有详细的安装配置文档。

⑺、odoo最新源代码,可从https://github.com/odoo/odoo/archive/8.0.zip下载。

⑻、odoo_8.0.latest_all.deb,可从https://www.odoo.com/page/download下载最新版。

 

2.     安装ubuntu操作系统

 

首先在windows上安装VMWare workstation 11,然后再创建虚拟机,给2GB内存,桥接网卡,20GB硬盘即可。

安装ubuntu 32位的桌面版,版本号是11.10,选择中文语言、重庆时区,并创建普通用户moodisk,机器取名为OdooDev。安装完后重启进入图形桌面,打开终端窗口,输入命令做如下配置:

⑴、切换到超级用户:

moodisk@OdooDev:~$ sudo -s

⑵、把系统升级到最新:

root@OdooDev:~# sed -i ‘s|cn.archive.ubuntu.com|mirrors.aliyun.com|g’ /etc/apt/sources.list

root@OdooDev:~# apt-get update -y && apt-get upgrade -y

⑶、允许root登陆:

root@OdooDev:~# passwd root

root@OdooDev:~# echo “greeter-show-manual-login=true” >> /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

root@OdooDev:~# reboot

重启之后采用root用户登陆图形桌面,打开一个终端窗口。

⑷、安装vmware tools:

点击VMware虚拟机管理软件的菜单“虚拟机à安装VMware Tools(T)…”,这样就在虚拟机里挂载了虚拟光盘,在终端里输入如下命令安装VMware Tools:

root@OdooDev:~# tar -zxf /media/root/VMware\ Tools/VMwareTools-9.9.2-2496486.tar.gz -C /tmp

root@OdooDev:~# cd /tmp/vmware-tools-distrib

root@OdooDev:~# ./ vmware-install.pl

此后一路按回车键即可,安装完了再次重启,此后的图形桌面充满整个屏幕。

⑸、安装一些必要的软件:

root@OdooDev:~# apt-get -y install vim openssh-server

root@OdooDev:~# vim /etc/ssh/sshd_config

把PermitRootLogin参数的值改成yes

⑹、配置网卡:

root@OdooDev:~# vim /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.0.12

netmask 255.255.252.0

gateway 192.168.0.1

dns-nameservers 8.8.8.8 8.8.4.4

root@OdooDev:~# reboot

Ubuntu 14.04自带的图形桌面不好看且不好用,建议更换成经典的gnome桌面,采用如下命令安装:

root@OdooDev:~# apt-get -y install gnome-session-fallback

重启系统后在图形登陆画面参见如下图操作:

 

把上面提到的软件下载到目录/root/install_softwares下,为以下各步做好准备。不过建议采用如下的命令直接安装gnome桌面:

tasksel -y install ubuntu-gnome-desktop

 

3.     安装jdk

root@OdooDev:~# cd install_softwares

root@OdooDev:~/install_softwares# tar -zxf jdk-8u40-linux-i586.tar.gz -C /opt/

root@OdooDev:~/install_softwares# cd /opt/jdk1.8.0_40/

root@OdooDev:/opt/jdk1.8.0_40# ln -s /usr/bin/update-alternatives /usr/sbin/alternatives

由于后续的一些软件安装时要用到命令alternatives,在ubuntu下此命令被命名为update-alternatives。

root@OdooDev:/opt/jdk1.8.0_40# alternatives --install /usr/bin/java java /opt/jdk1.8.0_40/bin/java 2

root@OdooDev:/opt/jdk1.8.0_40# alternatives --config java

There are 3 programs which provide 'java'.

Selection    Command

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

*  1           /opt/jdk1.8.0/bin/java

+ 2           /opt/jdk1.8.0_25/bin/java

3           /opt/jdk1.8.0_40/bin/java

 

Enter to keep the current selection[+], or type selection number: 3

 

root@OdooDev:/opt/jdk1.8.0_40# alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_40/bin/jar 2

root@OdooDev:/opt/jdk1.8.0_40# alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_40/bin/javac 2

root@OdooDev:/opt/jdk1.8.0_40# alternatives --set jar /opt/jdk1.8.0_40/bin/jar

root@OdooDev:/opt/jdk1.8.0_40# alternatives --set javac /opt/jdk1.8.0_40/bin/javac

root@OdooDev:/opt/jdk1.8.0_40# cd

root@OdooDev:~# java -version

java version "1.8.0_40"

Java(TM) SE Runtime Environment (build 1.8.0_40-b25)

Java HotSpot(TM) Server VM (build 25.40-b25, mixed mode)

验证版本。

root@OdooDev:~# cat >$HOME/.bash_profile <<E”O”F

export JAVA_HOME=/opt/jdk1.8.0_40

export JRE_HOME=/opt/jdk1.8.0_40/jre

export PATH=$PATH:/opt/jdk1.8.0_40/bin:/opt/jdk1.8.0_40/jre/bin

EOF

这个命令就是设置三个环境变量JAVA_HOME、JRE_HOME、PATH。重启系统。

 

4.     安装odoo

安装一个生产环境的odoo,以便与调试环境的odoo做比较。先安装postgresql 9.4。

root@OdooDev:~# sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

root@OdooDev:~# wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | apt-key add -

root@OdooDev:~# apt-get update

root@OdooDev:~# apt-get install -y postgresql-contrib-9.4 postgresql-9.4

root@OdooDev:~# cd $HOME/install_softwares

root@OdooDev:~/install_softwares# dpkg -i odoo_8.0.latest_all.deb

会报错,因为缺少很多依赖软件包,别怕,我们再执行下面的命令安装这些软件包。

root@OdooDev:~/install_softwares# apt-get -f install

下面安装最新版的wkhtmltopdf,这是odoo 8打印报表时要求的。

root@OdooDev:~/install_softwares# wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-i386.deb

如果是64位操作系统,那么下载wkhtmltox-0.12.2.1_linux-trusty-amd64.deb

root@OdooDev:~/install_softwares# dpkg -i wkhtmltox-0.12.2.1_linux-trusty-i386.deb

会报缺少依赖的文件包,再执行下面的命令即可安装这些包:

root@OdooDev:~/install_softwares# apt-get -f install

root@OdooDev:~/install_softwares# wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-i386.deb

root@OdooDev:~/install_softwares# update-rc.d odoo disable

odoo的主要文件被安装在目录/usr/lib/python2.7/dist-packages/openerp/下,启动脚本文件/etc/init.d/odoo,配置文件/etc/odoo/openerp-server.conf,创建的数据库用户和操作系统用户都是odoo。操作系统用户odoo用于启动odoo服务,所以为了加快网站前段的访问速度,需要把/usr/lib/python2.7/dist-packages/openerp的主人改为odoo,这样第一次访问的*.py文件就会编译成*.pyc程序,此后访问时速度就会明显加快,使用如下命令修改:

root@OdooDev:~/install_softwares# chown -R odoo: /usr/lib/python2.7/dist-packages/openerp

为了支持在线通信,还需要安装额外一些软件:

root@OdooDev:~/install_softwares# apt-get -y install python-pip python-gevent python-coverage python-coverage-dbg ttf-wqy-microhei ttf-wqy-zenhei

root@OdooDev:~/install_softwares# pip install psycogreen

为了支持我购买的功能强大的odoo website在线开发主题包theme_clean(可以在这里购买:https://www.odoo.com/apps/themes),还需要安装另外一些软件:

root@OdooDev:~/install_softwares# wget -qO- https://deb.nodesource.com/setup | bash -

root@OdooDev:~/install_softwares# apt-get install -y nodejs

root@OdooDev:~/install_softwares# npm install -g less less-plugin-clean-css

把theme_clean主题包拷贝到odoo的addons目录:

root@OdooDev:~/install_softwares# tar -xjf theme_clean.tar.bz2

root@OdooDev:~/install_softwares# cp -r theme/* /usr/lib/python2.7/dist-packages/openerp/addons/

root@OdooDev:~/install_softwares# chown -R odoo: /usr/lib/python2.7/dist-packages/openerp

通过下面命令修改数据库用户odoo的密码为123456:

root@OdooDev:~/install_softwares# su - postgres

postgres@OdooDev:~$ psql -c “alter user odoo with password ‘123456’;”

postgres@OdooDev:~$ exit

修改odoo的配置文件

root@OdooDev:~# vim /etc/odoo/openerp-server.conf

[options]

addons_path = /usr/lib/python2.7/dist-packages/openerp/addons

admin_passwd = A1B2C3

data_dir = /var/lib/odoo/.local/share/odoo

db_host = localhost

db_template = template1

db_user = odoo

db_password = 123456

dbfilter = %d_db

lang = zh_CN

list_db = False

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

timezone = Asia/Shanghai

workers = 2

xmlrpc_interface = 192.168.0.12

xmlrpc_port = 8069

 

以上一些重要参数说明如下:

⑴  admin_passwd = A1B2C3:odoo超级管理员的密码修改为A1B2C3,安装完的默认密码是admin。

⑵  db_user = odoo,db_password = 123456:odoo后端连接数据库的用户名和密码。

⑶  dbfilter = %d_db:根据前段访问odoo的域名来自动选择套帐,其中%d代表域名,比如用户通过www.weisuan.com访问odoo,那么选择的套帐就是weisuan_db,同理通过www.moodisk.com访问,那么选择的套帐就是moodisk_db了。此参数配合list_db = False,在odoo的登陆界面不会出现选择套帐的列表,这样就能轻松实现SaaS部署odoo了。当然也可以通过http://www.moodisk.com:8069/web/database/selector和http://www.moodisk.com:8069/web/database/manager来手工选择套帐或管理套帐。

⑷  workers = 2:odoo服务在启动的时候产生多个服务子进程,子进程的个数是这样计算的:4+n,假如参数定义workers=n。其中有一个子进程执行/usr/bin/openerp-gevent程序,专门用于实现在线聊天的功能,其他的子进程都是执行/usr/bin/odoo.py。如果屏蔽了workers参数,那么就只有与一个odoo服务进程,没有openerp-gevent进程,所以不能在线聊天了,除非直接启动openerp-gevent服务进程,此进程同时也支持ERP业务操作。注意:odoo8如果要打印报表,workers的值必须大于或等于2。

⑸  xmlrpc_port = 8069:定义端口,由于启动odoo服务的用户是普通odoo用户,所以端口不能改成小于1024的端口号,1~1024的端口只有超级用户权限才允许监听。那么到底如何让odoo监听80端口呢?方法有两种:

①  利用iptables做端口转发,具体参见后面的防火墙部分,或者在/etc/rc.local的exit 0之前加入下面一行。

/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8069

②  以root用户运行odoo服务:修改odoo配置文件/etc/odoo/openerp-server.conf,加入参数定义“xmlrpc_port = 80”;修改文件/usr/lib/python2.7/dist-packages/openerp/cli/server.py,在def check_root_user():行之下加入return;修改/etc/init.d/odoo,把里面的“USER=odoo”改为“USER=root”。

⑹  的

 

5.     安装pgAdmin

pgAdmin是图形化的postgresql数据库管理工具,为了便于操作数据库,建议安装它。

root@OdooDev:~# apt-get -y install pgadmin3

点击操作系统的菜单“应用程序à编程àpgAdmin III”启动pgAdmin,见下图:

 

6.     准备odoo源代码

root@OdooDev:~# unzip odoo-8.0.zip

root@OdooDev:~# cd odoo-8.0

root@OdooDev:~/odoo-8.0# cp /etc/odoo/openerp-server.conf ./

然后修改openerp-server.conf成如下所示的内容:

[options]

;addons_path = /usr/lib/python2.7/dist-packages/openerp/addons

admin_passwd = A1B2C3

;data_dir = /var/lib/odoo/.local/share/odoo

db_host = localhost

db_template = template1

db_user = odoo

db_password = 123456

dbfilter = %d_db

lang = zh_CN

list_db = False

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

timezone = Asia/Shanghai

;workers = 2

xmlrpc_interface = 192.168.0.12

xmlrpc_port = 8069

 

行首是“;”的为注释。修改openerp/cli/server.py,在def check_root_user():行之下加入return,这样root用户也能运行odoo服务了。参照之前的内容把theme_clean主题拷贝到$HOME/odoo-8.0/addons下。

源码根目录下有一个文件requirements.txt,里面包含了所依赖的软件包,采用下面的命令安装这些依赖包:

root@OdooDev:~/odoo-8.0# pip install -r requirements.txt

 

7.     安装pycharm

登陆Linux图形桌面并且打开一个终端窗口:

执行如下命令:

root@OdooDev:~/odoo-8.0# cd $HOME/install_softwares

root@OdooDev:~/install_softwares# tar -zxf pycharm-professional-4.0.5.tar.gz -C ../

root@OdooDev:~/install_softwares# cd ../pycharm-4.0.5/bin/

root@OdooDev:~/pycharm-4.0.5/bin# ./pycharm.sh

 

 

下面开始导入odoo的源代码,指定其目录即可。

 

点击上图中右上角的“Configure Python Interpreter”,配置python解释器为python2.7,然后pycharm根据python2.7建立索引,几分钟后出现如下的界面:

点击右上角的“Install requirements”安装依赖的python插件,安装过程很可能报错。配置openerp-server的启动参数,见下图:

 

 

如下图所示定义数据源:

      

下面的图直接点击“OK”。

 

到此,pycharm安装完毕,并且导入了odoo工程项目,以后启动pycharm的方法是:操作系统菜单“应用程序à编程àPycharm”。

最后我们来汉化pycharm,从这里http://yunpan.cn/cZML53YDGHskx(访问密码 03a4)下载,汉化的官方网站是https://github.com/Jythoner/pycharm。解压之后把resources_zh_CN.jar拷贝到pycharm安装目录下的lib目录下,重启pycharm即可。

 

快捷键:

 

8.     调试odoo后端python代码

在调试odoo8之前,不要单独启动odoo8服务。

§8.1 进入odoo.py的shell命令模式(odoo 9才有)

./odoo.py shell -d odoo9_db -r odoo -w pass123 --db_host=127.0.0.1  -c openerp-server.conf

>>> dir()        ----返回当前脚本的所有名字,其中openerp和self,可以进一步列,如dir(openerp)、dir(self)

>>> print self       ----查看当前模块,默认是res.users。

>>> dir(openerp)         -----查看模块openerp定义的名字和函数。

>>> help()                     ----进入帮助界面。

>>> help(openerp.osv.orm.Model.browse)                 ----获取browse()函数的帮助

>>> self.search_read([('id','=',1)],['name'])      ----查看表res_users中id为1的用户的名字。

>>> self.pool.get('neon.asset').browse([1,2])

 

§8.2  服务启动过程跟踪

Odoo.py定一了一系列的函数,最后两条语句是执行总路口,我们在main()处设置断点,然后开始跟踪调试,结果如下:

odoo.py>main():导入openerp,然后执行openerp/cli/__init__.py>main(),然后执行openerp/cli/server.py>main(args),>check_root_user()检查是否是根用户,如果是,则退出。由于我们是用root用户登录linux并做调试工作的,所以openerp/cli/server.py有一条语句改为 “if pwd.getpwuid(os.getuid())[0] == 'root1' :”,这样root用户也能运行odoo服务了。

openerp/tools/config.py>parse_config(args)分析配置文件(--config=/opt/dev/odoo8/odoo-config/openerp-server.conf)。

check_postgres_user()检查是否是postgres数据库用户,如果是则退出。

report_configuration()打印OpenERP版本信息,addons路径,数据库登录信息。

openerp/service/server.py>start(preload=None,stop=False):

装载全局模块(模块由--load命令行参数或server_wide_modules指定,默认模块是web,web_kanban),执行run(),执行start(),再执行http_spawn(self),开始监听80或者8069端口了,在执行run()时传递了application函数(在openerp/service/wsgi_server.py中定义)。服务器有三种(默认是ThreadedServer),在windows下只有ThreadedServer支持:

GeventServer if sys.modules.get("gevent").

PreforkServer if workers is defined in configuration.

ThreadedServer if none of the above are true.

 

文件openerp/service/server.py中定义了ThreadedServer服务器对应的类,类中方法run()完成:调用start()产生一个http线程和2个cron线程。http线程调用http_thread产生Werkzeug wsgi 守护服务进程,所有的web请求被传递给application函数(在openerp/service/wsgi_server.py中定义)。cron线程为每个数据库(套帐)每隔60秒钟调用_acquire_job(db_name)方法(方法的类ir_cron定义在openerp/addons/base/ir/ir_cron.py中)来处理后台任务。启动大概流程见下面的图。

 

§8.3  跟踪后端网页动作

在用pycharm 4调试odoo8时,odoo服务程序监听8072端口,而不是80,但当在pycharm里运行odoo8时又是监听80端口。我们都知道8072端口是支持在线聊天的。既然监听8072,那么我们就干脆访问http://<ip>:8072,但是网页长时间打不开。我们在/root/odoo-8.0/openerp/service/wsgi_server.py的application()函数内第一条语句处设置断点,然后debug运行odoo服务,并且在浏览器打开网页,可以开始跟踪了。有外国朋友说修改文件/root/odoo-8.0/openerp/__init__.py,参照下图注释掉两行:

然后调试odoo就是监听80端口了,而且浏览网页也正常,跟踪也顺利。但是又产生了一个新的问题:在pycharm中运行odoo,监听8072端口了。下图供参考。

 

§8.4 调试模块

模块名就是模块文件所在的目录名,当调试模块时,需要不断地修改代码,并在odoo中升级模块,才能看到修改后的效果。升级模块有两种方式,一种是在odoo的“设置”菜单中完成,一种可在启动odoo服务时升级,后一种方法比较快捷,带参数 -u 模块名 启动Odoo服务即可,比如:

./odoo.py -c openerp-server.conf -u neon_asset

其中neon_asset是我开发的资产管理模块。

 

9.     调试odoo前端js代码

前端调试要结合chrome和其插件,同时最好配置goagent翻墙软件,因为后续的js调试插件JetBrains IDE Support需要翻墙才能下载。

§9.1  安装和配置chrome浏览器

root@OdooDev:~/install_softwares# dpkg -i google-chrome-stable_current_i386.deb

如果此时直接启动chrome浏览器,那么就会报错:

我们的解决办法是:

root@OdooDev:~/install_softwares# mkdir $HOME/.chrome

root@OdooDev:~/install_softwares# vim /usr/bin/google-chrome

这样就可以正常启动chrome浏览器了。

 

§9.2  配置goagent翻墙工具

从这里http://t.cn/RwuUMo2下载(密码29b9),然后解压到/opt/GoAgent-323/目录下。参照里面的操作说明配置,对于Linux系统,注意以下几点:

root@OdooDev:~# apt-get -y install python-vte

root@OdooDev:~# python2.7 /opt/GoAgent-323/local/addto-startup.py

这一步是添加开机自动启动翻墙软件,也可以手工启动,采用命令python2.7 /opt/GoAgent-323/local/goagent-gtk.py或者python2.7 /opt/GoAgent-323/local/proxy.py

下面还要手工导入证书:

打开 Chrome 浏览器 >设置 > 显示高级设置… > HTTPS/SSL > 管理证书… > 授权中心> 导入… > 导入/opt/GoAgent-323/local目录下的 CA.crt 证书 > Edit trust settings 全部选中 > 重启浏览器

PS: goagent目前不稳定,我直接采用蓝灯(lantern)翻墙工具,速度快,还比较稳定,本博客的第一篇文章中有下载链接。

 

§9.3  调试前端js脚本

参照下图增加js调试配置:

点击“OK”后会提示需要在chrome浏览器中安装插件JetBrains IDE Support。调试时在pycharm中正常运行或者调试运行odoo8或者在系统命令窗口运行odoo8服务(root@OdooDev:~/odoo-8.0# ./odoo.py -c openerp-server.conf),然后在pycharm中调试运行js debug:

pycharm会自动启动chrome浏览器,如下图所示:

对于网站的前端调试,我还是喜欢使用chrome开发者工具或者与firefox集成的FireBug,后者有中文版,使用更人性化一些。下面简单介绍下安装和使用FireBug。先从http://download.firefox.com.cn/releases/stub/official/zh-CN/Firefox-latest.exe下载Firefox下载浏览器并安装它,安装完之后启动firefox浏览器,点击右上角的菜单(那个“三”的小图标),然后点击“添加组件”,再然后搜索firebug,搜到之后直接安装这个组件即可。最后在firefox浏览器的靠近右上角的地方出现一个小虫子的图标就是FireBug了,见下图:


现在进入odoo的商城下单,直到如下付款的界面:

选择不同的付款方法,那个“现在支付”按钮下的信息就会改变,那么现在我们来找找改变这些信息的代码在哪里。

第一种方法:点击那个小虫子打开firebug界面,然后依次参照图中的1、2、3操作:

 

上图中已经告诉我们执行的js函数,我们双击这个函数打开包含这个函数的那个js文件,并定位到目标函数。js文件一般是经过压缩的,可读性极差,点击“{}”整理代码,如下图所示:

第二种方法:参见下图操作。

 

然后再点击“PayPal”前的那个点,这样就触发了事件了,见下图:

 

10、防火墙设置

如果服务器放在公网上,等于就暴露在不安全的外部世界,合理设置防火墙规则就显得至关重要了。

安装需要的软件包:
root@OdooDev:~# apt-get -y install iptables iptables-persistent

root@OdooDev:~# update-rc.d iptables-persistent defaults

root@OdooDev:~# cat >/etc/iptables/rules.v4 <<E"O"F

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
-A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 22,80,443,8069,8072 -j ACCEPT
-A OUTPUT -p udp --sport 53 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 22,80,443,5432 -j ACCEPT
COMMIT
# Completed on Fri Mar 27 00:30:59 2015
*nat
:PREROUTING ACCEPT [2:467]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [15:1045]
:POSTROUTING ACCEPT [15:1045]
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8069

EOF

对于这个配置,说明如下:

(1)、放行进来的端口22,80,443,8069,8072,22号端口是ssh登陆的端口,不能禁止,否则没法远程登陆管理机器;80和443是网站服务端口,分别对应http和https协议,如果禁用了没法登陆odoo;8069是odoo的服务端口,尽管做了端口转发,还是要开启的;8072是在线聊天端口。

(2)、放行出去的端口22,80,443,5432,因为在登陆服务器后当然还希望再登陆到其他电脑,所以出去的22不能封;同时安装软件需要访问外部的80和443端口;5432是本机上的postgresql数据库,本机的odoo服务要访问数据库,对它来说当然是要出去了。

(3)、80端口转向到8069端口,采用nat技术。这样外面的人访问odoo时不用指定8069端口,直接访问域名如www.duse.com就行啦。

重启系统。
#COMMIT

 

10、模块开发

注意,如果用vim编辑,建议在文件末尾放上下面一行:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

一些提醒:

1)、继承:首先继承一个旧类以增加字段或方法,然后添加视图内容,如:

class pet_Animal(osv.Model):
_name = 'pet.animal'
_columns = {
……
'res_partner_id':fields.many2one('res.partner','Owner'),
}

class pets_res_Partner(osv.Model):
_inherit = "res.partner"
_columns = {
'animal_ids':fields.one2many('pet.animal','res_partner_id',string="Pets"),
} #继承res.partner类,增加字段animal_ids。在写本类时考虑的角度与res.partner一样。

如果重载了方法,那么一般首先会调用super()函数。下面再来集成并修改视图:

<record id="base_view_partner_form" model="ir.ui.view">
<field name="name">res.partner.form.inherit.pet_animal</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<!--Adds a new page (tab) to the view after the tab Information -->
<xpath expr="//page[@string='Information']" position="after">
<page name="pets" string="Animal Pets">
<group>
<field name="animal_ids"/>
</group>
</page>
</xpath>
</field>
</record>

关于xpath expr更详细的参见Xpath expressions in Odoo 8

 
目前有0条回应
Comment
Trackback
你目前的身份是游客,请输入昵称和电邮!

Verify Code   If you cannot see the CheckCode image,please refresh the page again!