2014-10-11 61 views
1

我已經安裝了Ubuntu服務器上OpenCPU - Ubuntu的LTS 14.04.1(GNU/Linux的3.13.0-32泛型x86_64的) - 和一切都工作正常,沒有任何問題。 在這裏我想說的是,我真的很喜歡這個API,我從人(我認爲主要的Jeroen奧姆斯)在其上工作的所有的努力非常感謝。 現在我再次安裝了它,但在另一個提供商處託管的服務器上。它也是一個Ubuntu服務器 - Ubuntu 14.04.1 LTS(GNU/Linux 3.13.0-042stab093.4 x86_64) - 因此我預計它會像以前一樣平穩運行。 但現在我有一個問題。安裝並啓動服務後,我想通過瀏覽器檢查一切是否正常。 因此,我只是打開http://xxx.xxx.xxx.xxx/ocpu就像它在我的其他服務器上工作。這一次,我的瀏覽器不顯示OpenCPU API瀏覽器,但以下消息:OpenCPU - 無法設置rlimit。 ENOSYS

Failed to set rlimit. ENOSYS 

In call: 
rlimit_wrapper("rlimit_as", hardlim, softlim, pid, verbose) 

服務器只擁有1GB物理內存,所以我想改變「rlimit.as」,而不是1E9的STANDRD的2e9會解決這個問題(我也試過750000000和500000000),但沒有任何幫助(當然,我在每次更改後都重新啓動了服務opencpu)。 我也認爲這不是問題,因爲我猜服務器會在一個操作使用多個GB時使用虛擬內存。 我認爲這個問題與RAppArmor有關。所以我試圖禁用它並重新啓動opencpu,但問題沒有消失:

$ sudo aa-disable usr.bin.r 禁用/etc/apparmor.d/usr.bin.r。 Traceback(最近調用最後一次): 文件「/ usr/sbin/aa-disable」,第30行,在 tool.cmd_disable() 文件「/ usr/lib/python3/dist-packages/apparmor/tools。 PY」,線路148,在cmd_disable 加註apparmor.AppArmorException(cmd_info [1]) apparmor.common.AppArmorException:「警告:?無法找到在/ proc /安裝一個合適的FS,它是安裝\ n使用--subdomainfs覆蓋。\ n」

因此,沒有人知道這裏的問題可能是或有任何建議在哪裏尋找一個解決方案(我想已經谷歌,但沒有發現任何有用的)?

我不認爲下面的東西是問題的原因,但因爲我不知道,我反正添加這些警告:

我的OpenCPU安裝過程中遇到的唯一奇怪的是這消息(出現4次):

iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) 
Perhaps iptables or your kernel needs to be upgraded. 

但後來它說:

* Reloading nginx configuration nginx   [ OK ] 
OK 
Setting up opencpu (1.4.4-trusty15) ... 

此外,當我試圖單獨安裝RAppArmor,我有以下w arning:

perl的:警告:請檢查您的區域設置: LANGUAGE =(未設置), LC_ALL =(未設置), LC_CTYPE = 「UTF-8」, LANG =(未設置) 的支持和安裝在你的系統上。 perl:警告:回退到標準區域設置(「C」)。 區域設置:不能設置LC_CTYPE爲默認的語言環境:沒有這樣的文件或目錄 區域設置:不能設置LC_ALL爲默認的語言環境:沒有這樣的文件或目錄 選擇先前未包裝上r-cran-rapparmor。

而且還這樣一條:

警告:?無法找到在/ proc /坐騎合適的FS,是安裝\ n使用--subdomainfs覆蓋\ n

提前感謝!

回答

0

它看起來像你的新託管服務提供商使用某種虛擬化系統,有一個共享內核,限制所有類型的Linux功能,包括rlimit,iptables和可能apparmor。是一個真正的雲主機,還是你自己設置的東西?

這將有助於在R(opencpu之外)進行調試。在您的服務器上,在控制檯中啓動R並鍵入:

library(RAppArmor, lib="/usr/lib/opencpu/library") 
rlimit_as(1e9) 
rlimit_fsize(1e9) 
rlimit_cpu(1e5) 
+0

Jeroen,感謝您的快速響應,您真棒! 您是對的,我們的託管服務提供商使用某種具有共享內核的虛擬化。 完全刪除AppArmor並重新安裝OpenCPU後,它現在正在工作。 但我不確定我們現在有什麼危險,我們有沒有AppArmor的情況下運行OpenCPU。 我們可以做些什麼來降低風險? 你能指點我的資源,我可以在這裏瞭解更多關於這個問題的信息嗎? – 2014-10-13 20:13:09

+0

你可能不應該暴露你的服務器沒有安全的世界。但內部使用也沒問題。你知道你的主機使用什麼樣的虛擬機環境嗎?現在幾乎所有現代託管服務提供商都使用kvm或xen或openstack,它們都不使用共享內核。 – Jeroen 2014-10-13 20:52:53