27

環境変数に秘密鍵を保存し、次のようにレールアプリからアクセスするherokuに似たシステムをセットアップしようとしていました:

secret = ENV['EMAIL_PASSWORD']

Heroku でできることは知っていますがheroku config:add EMAIL_PASSWORD=secret、nginx と Passenger を実行している自分の ubuntu ボックスでそのようなことをしたかったのです。

システムの再起動時にこれらの変数が自動的に設定されるよう に、これらの変数をexportsとして追加する必要があります.bashrcか?.bash_login

これらの各ファイルがいつ読み込まれるかはわかりません。

4

13 に答える 13

10

.env ファイルを環境変数としてロードするdotenv gemを使用できます。さまざまな環境用に .env ファイルを生成できますが、リポジトリにチェックインする必要はありません。

于 2013-05-20T17:54:26.890 に答える
8

nginxは現在と同じ環境で実行されていない可能性があることに注意してください。通常(「Apache」と発音)、SetEnvを介してサーバー構成ファイルにenv-varsを追加します。ただし、nginxにはそのような機能はありません...また、必要ない、と私は信じています。

sudo -E /usr/local/sbin/nginx

nginxを実行するときは、独自のユーザーenv変数を認識します。

または、envコマンドを確認してください(ここを参照):

env EMAIL_PASSWORD=secret

質問に答えるには、はい、exportシェル構成ファイルでステートメントを使用する必要があります。

于 2012-04-09T22:51:30.380 に答える
5

私はそれらをnginx構成、特にpassenger_env_varコマンドを使用してアプリのサーバー定義に入れました:

サーバー {
    server_name www.foo.com;
    ルート /webapps/foo/public;
    Passenger_enabled on;

    Passenger_env_var DATABASE_USERNAME foo_db;
    Passenger_env_var DATABASE_PASSWORD シークレット;
    Passenger_env_var SECRET_KEY_BASE the_secret_keybase;
}

これは私にとってはうまくいきます。詳細については、phusion パッセンジャードキュメントを参照してください。

于 2016-08-10T19:37:22.487 に答える
4

/usr/local/binいくつかの環境変数を設定してRubyを実行するスクリプトがフォルダーにあります。(Nginx ではなく Apache) conf ファイルで Ruby へのパスを .xml のそのファイルに定義します/usr/local/bin

例:

#!/bin/sh

# setup env vars here
export FOO=bar
export PATH_TO_FOO=/bar/bin
export PATH=$PATH:PATH_TO_FOO

# and execute Ruby with any arguments passed to this script
exec "/usr/bin/ruby" "$@"
于 2013-05-21T02:08:09.897 に答える
2

別の質問に対するこの回答を読む必要があります。

https://stackoverflow.com/a/11765775/1217298

于 2013-05-20T17:11:25.747 に答える
1

バージョン管理にはrbenvを使っています。プロジェクトの環境変数を保存する良い解決策は、rbenv-varsプラグインをインストールして.rbenv-varsファイルに入れることでした。

ここに役立つ投稿があります:
Rbenv、Passenger、および Capistrano を使用してアプリの ENV 変数をデプロイする

于 2015-04-14T16:23:43.030 に答える
1

編集済み:

申し訳ありませんが、速すぎて読んでしまいました。ここで ENV 変数を保存する方法を確認できます。

https://help.ubuntu.com/community/EnvironmentVariables

http://www.cyberciti.biz/faq/set-environment-variable-linux/

ローカル コンピューターで Nginx をサーバーとして使用する場合は、env 変数を nginx 構成ファイルに定義できます。

location / {
...
   fastcgi_param   EMAIL_PASSWORD  secret; #EMAIL_PASSWORD = secret
...
}
于 2013-05-14T12:14:16.580 に答える
0

誰かが私と同じタイプの質問をした場合に備えて、さまざまなファイルに関するちょっとした記事があり.bash*ます: http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html

要約すれば:

ほとんどの .bash_profile場合、コンピュータにログインしたときに.bashrc読み取られ、新しい端末を起動したときに読み取られます。Mac OSX.bash_profileの場合、起動するすべてのターミナル ウィンドウで読み込まれます。

したがって、推奨される手順は、コンピュータにログインしたときにすべての変数が設定されるように source.bashrcすることです。.bash_profileこれをに追加するだけ.bash_profileです:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi
于 2013-05-15T13:35:39.477 に答える
-1

ホームフォルダーの下の.profileファイルにエクスポート行を追加する必要があります...

ログイン時に環境変数が設定されています...

于 2012-04-09T22:45:42.920 に答える