2015-05-12 32 views
6

我在雲中的服務器中有兩個Odoo實例。如果我讓下面的步驟我收到「內部服務器錯誤」:爲什麼我會在同一瀏覽器中同時運行兩個Odoo v8實例以獲取「內部服務器錯誤」?

  1. 我做登錄一審(http://111.222.33.44:3333
  2. 我關閉會話
  3. 我加載二審地址在同樣的瀏覽器(http://111.222.33.44:4444

如果我想在第二個實例(在另一個端口)工作,我需要先刪除瀏覽器cookie,因爲錯誤。如果我刪除他們一切正常。

如果我同時在不同的瀏覽器(Firefox和Chromium)中加載它們,它們運行良好。

我認爲這是一個Odoo問題,但我不確定。我已安裝最新版本。

這不是一個NginX問題,因爲我嘗試過和沒有它。

什麼可能是錯的?

更新:

/etc/hosts發現了一個時間的解決方案通過建立在我的筆記本電腦一對夫婦域名:

111.222.33.44 cloud01 
111.222.33.44 cloud02 

然後cookies不會互相干擾了,但我不喜歡這種解決方法

更新2:

還有另一種解決方法。如果我使用這個擴展鉻,問題不會出現:MultiLogin

任何想法來解決這個永久?

+0

當您在沒有反向代理的情況下運行Odoo(也就是開箱即用)時,Odoo只能正常工作於一個數據庫。當您嘗試切換數據庫時,它無法區分不同的數據庫,例如要知道哪個網站屬於哪個數據庫。如果你想在生產環境中部署Odoo,我建議你爲數據庫使用反向代理和子域名(如db_name.host.com)。這是一個很好的指導:http://www.schenkels。nl/2014/12/reverse-proxy-with-odoo-8-nginx-ubuntu -14-04 -lts/ – Andrius

+0

是的,我已經在使用NginX了。但我認爲,如果Cookie配置正確,它應該可以很好地切換具有相同域的數據庫和端口 – ChesuCR

+0

你好,這個問題在github上仍處於打開狀態。 https://github.com/odoo/odoo/pull/6705。所以我想你會需要使用不同的瀏覽器或自己制定的解決方法一段時間。 –

回答

0

如果您有權訪問源代碼,您可以更改此文件,如下所示,並檢查問題是否得到解決。

附加元件/網絡/控制器/ main.py

if db != request.session.db: 
    request.session.logout() 
    request.session.db = db 
    abort_and_redirect(request.httprequest.url) 

和刪除 - > request.session.db =分貝

它低於這個IF語句。

+0

毫米不,它不工作,我仍然得到相同的「內部服務器錯誤」。也許是問題仍然存在的原因。你確定這個問題是爲什麼我得到這個錯誤? – ChesuCR

0

嘗試以下的變化:

的OpenERP /插件/鹼/ IR/ir_http。PY

在方法_handle_exception圍繞線140的地方,你會發現這段代碼:

attach = self._serve_attachment() 
if attach: 
    return attach 

將其替換爲:

if isinstance(exception, werkzeug.exceptions.HTTPException) and exception.code == 404: 
    attach = self._serve_attachment() 
    if attach: 
     return attach 
+0

謝謝!但是我已經在代碼中擁有該行了!並且它還沒有工作: – ChesuCR

0

你完全可以將在您的機器上使用一臺OpenERP服務器來提供所有數據庫。不幸的是你沒有提到你看到了什麼錯誤以及你所期望的結果 - 使得它有點困難,以幫助您根據您所提供的信息;-)

無論如何,這裏有一些隨機的想法:

  • 如果OpenERP沒有監聽所有接口時出現問題,請嘗試在配置文件中指定0.0.0.0作爲xmlrpc_interface,這應該讓OpenERP在8069上監聽所有IP。

  • 請注意,如果連接到例如Apache,則Apache不相關。 http://www.sample.com:8069/?db=openerp,因爲您直接連接到OpenERP。如果你想通過Apache,你需要在你的虛擬主機配置中設置ReverseProxy規則,然後OpenERP不需要收聽所有的公共IP地址。

  • OpenERP 6.1及更高版本可以根據虛擬主機名自動檢測數據庫名稱,並篩選可用數據庫的名稱:您需要使用--db-filter參數啓動它,該參數表示用於過濾可用數據庫的列表。 %h代表域名,%d是該域的第一個域組件。因此,例如使用--db-filter = ^%d $,如果我最終在服務器上使用http://test.example.com:8069,我將只能看到測試數據庫。如果只有一個數據庫匹配,則不會顯示該列表,並且用戶將直接進入正確的數據庫。如果確保OpenERP能夠看到外部主機名,即通過在Apache代理配置中設置X-Forwarded-Host頭並啓用OpenERP的--proxy模式,此功能甚至可以在Apache反向代理的後面工作。

    端口重用問題是因爲您試圖在同一接口/端口組合上啓動多個OpenERP服務器。這是不可能的,除非你小心地使用xmlrpc_interface參數中的IP設置每個IP啓動一臺服務器,我不認爲你需要這樣做。 Apache支持的基於命名的虛擬主機全部由單個主進程處理,該主進程在所有接口上的端口80上偵聽。如果您想要對OpenERP執行相同的操作,則只需爲所有域啓動一臺OpenERP服務器,並按照上面的解釋在0.0.0.0,端口8069上進行監聽。 最重要的是,不清楚你在不同的配置文件中設置了不同的設置。在同一臺機器上使用相同的代碼運行40個不同的OpenERP服務器聽起來像是很多的矯枉過正。 OpenERP旨在成爲多租戶,因此可以從同一臺服務器提供許多(讀取:數百個)數據庫。

+0

「內部服務器錯誤」只出現在客戶端,我認爲這是一個Odoo的cookies管理問題,它沒有考慮到我在每個端口使用不同的實例我需要使用多個實例,我不能只使用一個實例,因爲我想在每個實例中使用不同的模塊製作可見的不同數據庫 – ChesuCR

+0

您是否嘗試過在啓動服務器時使用--db-filter參數?如果不是的話,試試看。 –

相關問題