セットアップ
環境変数が読まれない:手元では動くのにサーバーで動かない
2026年10月8日

レン
手で実行すると動くのに、サービスとして起動すると設定が読まれてない…

プロクラ
定期実行のときと同じ話だよ。キミがログインしたときに読み込まれる設定は、サービスの起動時には読み込まれない。だから、環境変数が空のまま動くことになる。
どこで読み込まれるのか
手元では読めていた設定が本番で読めないのは、読み込まれる場所が違うためです。ログイン時に読まれるファイルは、常駐させる仕組みから起動したときには読まれません。起動を定義する側で明示的に渡すのが、環境に依存しない確実な方法です。
- ログイン時: ユーザーの設定ファイルが読み込まれる
- サービス起動時: それらは読み込まれない
- 定期実行: これも読み込まれない
- つまり、手で試したときだけ環境が整っている

プロクラ
この違いを知らないと、「設定は書いたのに読まれない」という状況で延々と悩むことになる。原因は設定の中身ではなく、読み込まれる場所のほうなんだ。
確実に渡す方法
- サービスの定義ファイルに、直接記述する
- 環境変数をまとめたファイルを指定して読み込ませる
- アプリ側で、設定ファイルを明示的に読み込む
- 起動スクリプトの中で、先に読み込んでから実行する

プロクラ
2つめが扱いやすいよ。設定を1つのファイルにまとめておけば、手で実行するときも、サービスから起動するときも、同じファイルを使える。食い違いが起きにくい。
確認する

プロクラ
読まれているかどうかは、推測せずに確かめよう。実際に動いているプロセスの環境を、外から見ることができる。
- 起動しているプロセスの環境変数を確認する
- アプリの起動時に、読み込んだ設定を記録する(値そのものは出さない)
- 設定が空のときは、起動時に分かるようにする
- 「なぜか動かない」より「設定が無い」と出るほうが親切
認証情報の扱い

ウィルスン
…その環境変数の中身、動いているプロセスから読めるのだったな。同じサーバーに入り込めた者にとっては、探す手間が省ける話だ。
- 環境変数をまとめたファイルは、本人だけが読める権限にする
- バージョン管理に含めない
- ログに出力しない
- サービスの定義ファイルに直接書く場合、そのファイルの権限にも注意する

レン
ログイン時と起動時で環境が違う。まずそこを疑えばいいんだ。
手元と本番で値を変える

プロクラ
環境変数を使う本来の目的は、同じコードのまま設定だけを差し替えられることだよ。ここが揃っていれば、移行も検証環境の用意も楽になる。
- 接続先やキーは、コードに直接書かない
- 環境ごとに、値をまとめたファイルを用意する
- 見本となるファイルだけをバージョン管理に含める(値は空にする)
- 新しい環境を作るとき、その見本を写して埋めれば済む

プロクラ
3つめは実用的だよ。何を設定する必要があるかが一覧になっているので、設定漏れに気づける。値そのものは含めないので、公開しても安全だ。
VPSの料金を比較する
あわせて読みたい
- セットアップWindows Server VPSの初期設定:運用を始める前にやること契約直後の状態は安全ではありません。接続元の制限、アカウントの整理、更新の設定、そして戻せる状態の確保まで、順番に解説します。
- セットアップVPSの申し込みから公開まで:全体の流れと、各社の管理画面の違い申し込みから公開までを5段階で解説し、各社の管理画面で呼び名が違う部分を対応表にまとめました。締め出されたときの戻り方も扱います。
- セットアップVPSのOSはどれを選べばいいか:Ubuntu・Debian・Rocky・AlmaLinux系統の違いと、選ぶときに効いてくる差。情報の見つけやすさ・サポート期間・コマンドの違いを整理し、迷ったときの決め方まで解説します。
- セットアップSSHで接続できなくなったとき、どこから調べるか昨日まで入れたのに繋がらない、という状況の切り分け手順。どこで止まっているかを4段階で確認し、締め出されたときの最後の入り口までを解説します。
サーバーを触る前に押さえておきたいこと
姉妹サイトの、この記事と相性のいいページです。
- Linuxコマンド入門
ls / cd / grep などを疑似ターミナルで試しながら学べる — prodou.net
- シェルスクリプト入門
サーバー作業の自動化スクリプトを基礎から — prodou.net
- Password Generator
サーバー用に強いパスワードをその場で生成 — toolkitbox.net
- Cron Generator
定期実行のcron式を組み立てる — toolkitbox.net