Ubuntu

CouchDB 1.6 在 Ubuntu 15.10 上的安裝問題

  • January 4, 2016

在 Ubuntu 14.04 上使用 CouchDB 1.4 之後,我最近嘗試從 15.10 和主 couchdb 包重新開始。它安裝了 couchdb 1.6,這是一個可喜的變化,但 couch 站點上的 ubuntu 安裝文件尚未更新。

我在啟動和執行它時遇到了很多問題。我執行了 apt-get install couchdb 軟體包安裝並創建了一個 couchdb 使用者和組。

似乎 Ubuntu 儲存庫可能沒有將東西安裝在與 ubuntu 的 couchdb 文件中所說的相同的位置(這不是什麼大問題),但它似乎也沒有創建所有需要的文件夾,也沒有設置正確的權限。

當我跑步時couchdb -b,我得到 Apache CouchDB needs write permission on the PID file: /var/run/couchdb/couchdb.pid

另外(作為更多資訊),/var/run/couchdb 文件夾不會在安裝時創建,但是如果我創建它(以及其他幾個)並將這些文件夾的權限也設置為 couchdb:couchdb,事情就開始了向上。然而,這並不會永久地做到這一點,因為 pid 文件在重新啟動後會被重置,我們又回到了原點。作為旁注,我也不知道是否在安裝時創建了所有必需的日誌或其他文件夾。如果你注意到那裡有什麼,請告訴我。

作為另一條資訊,當我嘗試執行時,sudo -i -u couchdb couchdb我得到:sudo: unable to change directory to /usr/local/var/lib/couchdb: No such file or directory

這個 (usr/local) 似乎是文件中的正確文件夾,但 Ubuntu 15 安裝似乎不使用 /usr/local 並且主要使用 /etc/couchdb。因此,嘗試跟隨所有文件有點令人困惑。

如果我跑步,sudo -i -u couchdb couchdb我會得到:

{"init terminating in do_boot",{{badmatch,{error,{bad_return,    
{{couch_app,start,[normal,  
["/etc/couchdb/default.ini","/etc/couchdb/local.ini"]]},{'EXIT',{{bad match,
{error,{error,enoent}}},[{couch_server_sup,start_server,1,
[{file,"couch_server_sup.erl"},{line,56}]},{application_master,start_it_old,4,
[{file,"application_master.erl"},{line,273}]}]}}}}}},[{couch,start,0,
[{file,"couch.erl"},{line,18}]},{init,start_it,1,[]},{init,start_em,1,[]}]}}

Crash dump is being written to: erl_crash.dump...done
init terminating in do_boot ()

這是一個enoent錯誤。我有時也會得到這個權限錯誤兄弟(eecees?不記得了)。這有什麼幫助嗎?

當我通過創建隨機文件夾和更改權限到處亂跑時,我可以接近,但我無法獲得最終的 pid 文件以保持正確的權限。這是唯一的問題還是我應該對一般的 15.10 安裝保持警惕?有人可以幫我解決 pid 權限錯誤嗎?我該如何執行它?謝謝!

答案在於預設 ubuntu 軟體包附帶的初始化腳本。

/etc/init.d/couchdb從 83 號線開始

start_couchdb () {
   # Start Apache CouchDB as a background process.

   mkdir -p "$RUN_DIR"
   if test -n "$COUCHDB_USER"; then
       chown $COUCHDB_USER "$RUN_DIR"
   fi
   command="$COUCHDB -b"
   if test -n "$COUCHDB_STDOUT_FILE"; then
       command="$command -o $COUCHDB_STDOUT_FILE"
   fi
   if test -n "$COUCHDB_STDERR_FILE"; then
       command="$command -e $COUCHDB_STDERR_FILE"
   fi
   if test -n "$COUCHDB_RESPAWN_TIMEOUT"; then
       command="$command -r $COUCHDB_RESPAWN_TIMEOUT"
   fi
   run_command "$command" > /dev/null
}

我得到了自己的官方 ubuntu 15.10 vagrant box 並安裝了 couchdb 包,然後編輯/etc/couchdb/local.ini將 httpd 綁定到不同的 IP 地址並通過重新啟動 couchdb 服務/etc/init.d/couchdb restart

一切對我來說都很好。

TL;DR使用 init 腳本/etc/init.d/couchdb啟動/停止和重新啟動 couchdb

引用自:https://serverfault.com/questions/734611