簡體   English   中英

-su: bundle: 啟動獨角獸時找不到命令

[英]-su: bundle: command not found when starting unicorn

我正在關注 DigitalOcean 的教程(僅供參考,這是教程, link1link2 ),使用 unicorn 和 nginx 安裝生產就緒的 rails 應用程序,以及當我開始安裝 unicorn 部分時。 當我嘗試在控制台中輸入以下內容時:

sudo service unicorn_appname start

我收到此錯誤:

Starting appname
-su: bundle: command not found

所有用戶都可以捆綁。 這條消息對我來說毫無意義。 有任何想法嗎?

我也遵循了相同的指南並遇到了同樣的問題。

init.d/unicorn_appname 中的啟動腳本被評估為:

su - deploy -c cd /home/deploy/appname && bundle exec unicorn -c config/unicorn.rb -E production -D

啟動時的 root 用戶將首先 su - 進入 rails 用戶(在本例中為“部署”),然后執行 bundle 以啟動 unicorn。 rbenv 是單用戶,只有 'deploy' 安裝了包。 如果您遵循了指南,則 bundle 的路徑可能存儲在您的 .bashrc 文件中。 但是 .bashrc 文件不是通過 su 登錄調用的,這導致了 bundle not installed 錯誤。

解決方案是在 .profile 中包含與 rbenv 相關的路徑。 這樣,當 root su - 進入“部署”時,路徑會被加載。

您可以通過將 rbenv shims 路徑添加到您的.profile來解決此問題

cd ~
vi .profile

查找以 PATH=" 開頭的行,在引號之后添加以下內容:$HOME/.rbenv/shims:

保存文件( ESC :wq )

像往常一樣啟動服務。

看起來您使用“系統范圍的 Ruby /usr/bin/ruby”啟動服務,該服務尚未安裝 gem“bundler”,而不是您希望在運行時使用的 Ruby 版本(通過 RVM 或 RBENV 安裝在用戶命名空間)。 在調用“bundle exec unicorn...”之前,確保所需的 Ruby 版本基礎設施位於路徑中。

我的 unicorn_service 腳本的一部分:

USER="ubuntu"
APP_NAME="my_app_name"
APP_ROOT="/home/$USER/$APP_NAME"
ENV="production"
# environment settings
PATH="/home/$USER/.rbenv/shims:/home/$USER/.rbenv/bin:$PATH"

當我運行sudo service unicorn start我遇到了同樣的錯誤,即bundle command not found

最初,路徑存在於我的.bashrc文件中。

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

.bash_profile添加路徑對我.bash_profile 我猜它是從.bash_profile而不是從.bashrc獲取$PATH

將此路徑復制到.bash_profile然后執行source .bash_profile對我source .bash_profile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM