CouchDB 1.6 在 Ubuntu 15.10 上的安裝問題
在 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