- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在使用 Heroku 时,我发现他们使用环境变量进行服务器本地配置的方法非常棒。现在,在设置自己的应用程序服务器时,我发现自己想知道复制它有多难。
我正在部署一个 sinatra 应用程序,使用 Unicorn 和 Nginx。我知道 nginx 不喜欢玩弄环境,所以那个就出来了。我可能可以将 vars 放在 unicorn 配置文件中的某个位置,但由于它与应用程序的其余部分一起处于版本控制之下,所以它有点违背了让配置位于服务器环境中的目的。就我而言,没有理由不将我的应用特定配置文件与应用的其余部分放在一起。
第三个也是最后一个(据我所知)选项是将它们设置在产卵 shell 中。那就是我迷路的地方。我知道登录和非登录 shell 使用不同的 rc 文件,我不确定用 sudo -u http stuff
调用某些东西是否会生成登录 shell。我做了一些功课,问了谷歌和人,但我仍然不完全确定如何处理它。也许我只是太笨了……不管怎样,如果有人能对整个 shell 环境交易有所了解,我将不胜感激。
最佳答案
我认为您的第三种可能性是正确的。您缺少的是包装脚本的想法,其唯一功能是设置环境,然后使用所需的任何选项调用主程序。
要制作一个可以用作控制脚本的包装器脚本(如果 prodEnv 使用 DB=ProdDB 等),还有一个部分可以简化这个问题。 Bash/ksh 都支持称为源文件的功能。这是 shell 提供的一个操作,用于打开文件并执行文件中的内容,就好像它是内联在主脚本中一样。就像 C 和其他语言中的 #include
。
ksh 和 bash 将自动获取 /etc/profile
、/var/etc/profile.local
(有时)、$HOME/.profile
。还有其他文件名也会被拾取,但在这种情况下,您需要制作自己的 env 文件并显式加载它。
当我们谈论包装器脚本时,如果您想管理环境的设置方式,您将希望在包装器脚本中进行采购。
如何获取环境文件?
envFile=/path/to/my/envFile
. $envFile
其中 envFile 将填充如下语句
dbServer=DevDBServer
webServer=QAWebServer
....
您可能会发现您需要导出这些变量才能使它们可见
export dbServer webServer
支持备用分配/导出
export dbServer=DevDBServer
export webServer=QAWebServer
根据不同环境的不同程度,您可以让包装器脚本确定要加载的环境文件。
case $( /bin/hostame ) in
prodServerName )
envFile=/path/2/prod/envFile ;;
QASeverName )
envFile=/path/2/qa/envFile ;;
devSeverName )
envFile=/path/2/dev/envFile ;;
esac
. ${envFile}
#NOW call your program
myProgram -v -f inFile -o outFile ......
随着您在数据处理环境中开发越来越多的脚本,您始终可以在顶部source
您的envFile。当您最终更改服务器的物理位置(或其名称)时,您只有一个地方需要进行更改。
健康教育
关于Ruby、Unicorn 和环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5836887/
好的,所以我正在尝试使用 unicorn 设置生产服务。 当我尝试通过我编写的脚本启动 unicorn 服务器时,它会启动 2 个主实例。 这只发生在我用给定的“-E 生产”启动它时。 我开始 uni
我使用 'unicorn-worker-killer' gem 并从这里为 ruby GC 做了一些额外的修改 http://blog.newrelic.com/2013/05/28/unicor
我有点卡在工头设置中设置 unicorn worker 的数量 web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb 然后在运行时 fore
我已经在 unicorn 上部署了一个 rails 应用程序,并且正在使用 Capistrano 来管理部署。符号链接(symbolic link) tmp/sockets/unicorn.sock
我已按照 DigitalOcean 指南中的步骤进行操作 here和 here使用 nginx 和 Unicorn 设置 Sinatra 服务器。我在倒数第二步: start the Unicorn
我正在尝试通过 Nginx 和 Unicorn 运行我的 Rails 应用程序,当我尝试运行 service unicorn start 时它告诉我我失败了 master failed to star
有很多研究人员观察着世界上最后剩下的unicorns,即Easter Island。每天,研究人员记录他们发现的 unicorn ,发现日期,每个 unicorn 的婴儿数量以及发现时是否喝醉了。这些
unicorn 接受 listen允许设置 backlog 的配置以毫秒为单位,以防 worker 忙。减小此值允许路由器在忙碌时将请求发送给另一个工作人员。 彪马有类似的东西吗?我找不到这样的东西。
我正在尝试在 heroku 上部署我的 django 应用程序。按照官方文档的步骤操作后,我启动的dyno老是死机。然后我把整个过程都走一遍,我觉得问题可能出在gunicorn部分。按照说明,我将 P
我有这个文件 rails_env = ENV['RAILS_ENV'] || 'development' rails_root = ENV['RAILS_ROOT'] || "/home/luiz/r
在使用 Heroku 时,我发现他们使用环境变量进行服务器本地配置的方法非常棒。现在,在设置自己的应用程序服务器时,我发现自己想知道复制它有多难。 我正在部署一个 sinatra 应用程序,使用 Un
我正在使用 Capistrano 将 Ruby on Rails 应用程序部署到 Linode VPS。我使用 Unicorn 作为应用程序服务器,使用 Nginx 作为代理。我的问题是,由于明显的权
我正在调试我们应用程序中的一些 Posgtres 连接泄漏。几天前,我们突然超过了 100 个连接,这是不应该的 - 因为我们只有 8 个 unicorn worker 和一个 sidekiq 进程(
我正在运行堆栈 nginx+unicorn+rails 3.2 当我运行时 bundle exec unicorn_rails -c config/unicorn.rb -E development
我正在为 Django 项目(Ubuntu 14.04 机器)使用带有 nginx 反向代理的 gunicorn 19.7.1 appserver。 ps aux | grep gunicorn |
我不知道 unicorn 出了什么问题,它不想启动。任何帮助表示赞赏 ubuntu@ip-172-31-15-195:~/www/tf/current$ RAILS_ENV=production bu
我需要你的帮助! 我已经在 Ubuntu 12.04 中部署了我的 Rails 应用程序,使用 Nginx、MySQL、Solr 和 Unicorn。 每个提到的服务都已启动,而不是 unicorn,
我正在使用Rails 3.2 + unicorn + postgres DB,但我有一个问题-unicorn如何处理DB连接? 我的理解: unicorn 主进程 fork X子进程。 每个子进程设置
我有一个 RubyOnRails 项目,并在 Ubuntu 服务器上的 nginx 上使用 Unicorn 部署它。 如果我更改配置文件之一,我需要重新启动 Unicorn,但是当我杀死 Unicor
我正在使用 gunicorn 运行 flask 应用程序(rest api),我几乎每 30 秒就会看到一批 [CRITICAL] WORKER TIMEOUT (pid:14727) . 我的设置如
我是一名优秀的程序员,十分优秀!