Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

在Webfaction上安装Odoo


  • 管理员

    首先给必须给Webfaction 打个广告。

    Webfaction一直是我非常乐于使用的一个网络服务租用提供商。在5、6年前大多数VPS服务的价格还比较高的时候,他们就以非常出色的性价比和高水平的服务吸引了我。即使在今天遍地都是云服务商的情形下,Webfaction提供的产品的竞争力仍然是超群的。我们现在的这个nodebb的论坛也是部署在他们的服务器上的,另外我们也有内部测试Odoo服务器部署在它上面。对于开发者学习和小公司的内部使用都非常合适。

    喜欢他们的理由有几点:

    1. 价格超值,却很低调
      他们的最基本的套餐是:$10/month, 100GB SSD storage, 1GB RAM, 1TB bandwidth
      以这样的价格获得这样的配置看起来已经很不错了,但是相信仍然有不少云服务商能提供同样的offer。但是,Webfaction的低调在于这个1GRAM是指由你所启动的进程所占用的内存,对于诸如系统进程,公用的服务比如Apache, Nginx, 甚至数据库比如Mysql, PostgreSql等等占用的内存是不算在这1GRAM里的。我们公司内部部署的Odoo测试服务器尽然在他的服务器上只使用了不到200M的内存,因为巨消耗内存的数据库服务器消耗的内存算他的 ;-)。而如果你只是用它跑个PHP网页,那就是消耗:bangbang: 0内存 :bangbang:
    2. 服务超赞
      他们对ticket的反应重来没有超过1小时的,通常是1刻钟左右就有人在处理了。而且大多服务于你的人都是网络Geek,他们也很愿意跟你交流,跟他们还真能学几招。

    当然Webfaction 对于某些没有rootsudo 就完全不能生存的人来说是不适合的。因为Webfaction真的没有root权限,但是我们真的可以在没有root权限下做所有的事情,它也可以让你学会如何安全的部署软件。

    本文就来介绍一下Webfaction上使用其共享的数据库服务来部署Odoo需要注意的一些问题。

    使用Webfaction共享数据库服务来运行Odoo

    需要注意的是,用这种方式来直接运行Odoo会出错运行不起来。(假设你的数据库的用户是erp_db_user, 你就会看到下面的出错信息:)

    OperationalError: FATAL:  no pg_hba.conf entry for host "127.0.0.1", user "erp_db_user", database "postgres", SSL on 
    FATAL:  no pg_hba.conf entry for host "127.0.0.1", user "erp_db_user", database "postgres", SSL off
    

    原因是Odoo在系统中有两个地方需要访问系统数据库:postgres, 而在Webfaction中创建的数据库用户只能访问其所拥有的(own)的数据库。

    一个地方需要访问到postgres系统数据库的地方是, 当我们初次访问Odoo的时候,Odoo会检查是否已经有数据库了,需不需要创建一个新的,如果有多个数据库,需不需要将几个数据库显示出来。如果你安装Odoo只启用一个数据库,那就用下面小修改一下就可以了:

    diff --git a/odoo/service/db.py b/odoo/service/db.py
    index d6ff8d1..f0727f0 100644
    --- a/odoo/service/db.py
    +++ b/odoo/service/db.py
    @@ -75,6 +75,8 @@ def _initialize_db(id, db_name, demo, lang, user_password, login='admin', countr
             _logger.exception('CREATE DATABASE failed:')
    
     def _create_empty_database(name):
    +   # hack to run odoo with shared pgsql data service on webfaction
    +   raise DatabaseExists("database %r already exists!" % (name,))
         db = odoo.sql_db.db_connect('postgres')
         with closing(db.cursor()) as cr:
             chosen_template = odoo.tools.config['db_template']
    @@ -317,6 +319,8 @@ def exp_db_exist(db_name):
         return bool(odoo.sql_db.db_connect(db_name))
    
     def list_dbs(force=False):
    +   # hack to run odoo with shared pgsql data service on webfaction
    +   return ['Your_DB_NAME']
         if not odoo.tools.config['list_db'] and not force:
             raise odoo.exceptions.AccessDenied()
         chosen_template = odoo.tools.config['db_template']
    

    另一个地方需要访问到系统数据库postgres的地方是Odoo的bus模块, 这个模块是利用PostgreSQL的消息通知功能来实现Odoo内的实时消息通知的功能。如果我们并不常用这个功能,就可以做下面的修改:

    index 4665925..7efb723 100644
    --- a/addons/bus/models/bus.py
    +++ b/addons/bus/models/bus.py
    @@ -182,7 +182,9 @@ class ImDispatch(object):
                 # disabled in prefork mode
                 return
             else:
    -            # threaded mode
    +            # hack to run odoo with shared pgsql data service on webfaction
    +            return
                 self.Event = threading.Event
                 t = threading.Thread(name="%s.Bus" % __name__, target=self.run)
                 t.daemon = True
    

    经过这两处的小修改后,Odoo就可以使用Webfaction提供的共享数据库了。当然代价是:你不能使用Odoo的/database/manager 在前端的页面上对数据库进行管理(创建/删除/备份/恢复等,当然这些事情完全可以在服务器端完成), 你的消息通知不是实时的,刷新页面才能看得到。

    当然如果不想将就,完全可以在Webfaction通过其控制面板建立自己私有的PostgreSQL数据库即可。



  • 在坑边默默等校长回来。。。。。。


  • 管理员

    @wjfonhand 搞定,自带的口粮没吃完吧 ;-)


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待