Ubuntu
誰應該擁有上帝程序?
我在 ubuntu 上執行了一個堆棧,該堆棧由一個用 Sinatra 和 GrapeAPI 編寫的 Rack 應用程序組成。應用程序棧包括 Redis、Postgres、Nginx 和 unicorn。我想用god來處理程序監控。
目前部署是通過 git 在部署使用者下進行的。此部署使用者不是 sudoer。我的問題:誰應該擁有上帝程序?最好以 sudoer 或 deploy 使用者身份執行該程序?
以 deploy 使用者身份執行將載入 rbenv 允許 unicorn 啟動,但是 deploy 使用者沒有 sudo 訪問權限,因此將無法執行 init.d 腳本。
另一方面,當我以其他使用者身份執行時,部署使用者然後上帝無權訪問 rbenv 提供的 bundle exec 並且如果它們出現故障則無法啟動獨角獸程序。
上帝程序應該由新貴腳本控制,因此以 sudo 使用者身份執行。這是通過 binstubs 實現的。binstub 是 gem 安裝的執行檔的墊片。Binstubs 由 bundler 提供。它們允許從系統上的任何位置執行 bin 文件。在你的新貴腳本中添加 rbenv 路徑來做到這一點是非常必要的。
export PATH=/home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:$PATH eval "$(rbenv init -)" export BUNDLE_GEMFILE=$APPLICATION_ROOT/Gemfile
在此之後,對 binstubs 的任何直接呼叫都將載入您的包並正確執行。使用這種模式,可以使用 upstart 來執行 unicorn 和 resque。這使得你的整個堆棧可以與 upstart 一起執行,並且你的上帝配置很容易,因為你所要做的就是呼叫你的 upstart 腳本。HTH。