質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1820閲覧

ファイルやディレクトリが見つからないとかで、Nginxが再起動できない。

Ko-program

総合スコア11

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/12/08 06:00

編集2021/12/08 07:15

https://senrenseyo.com/20210826/rails_deploy_3/

今回、こちらのサイトを参考にcloud9で開発したrailsアプリを
AWSサービスを連携してデプロイしようとしています。

こちらのサイトの「本番環境構築」の「Nginxのインストール」まで進めたのですが、

*以下設定ファイルの内容
log directory
error_log /var/www/rails/アプリ名/log/nginx.error.log;
access_log /var/www/rails/アプリ名/log/nginx.access.log;

max body size
client_max_body_size 2G;
upstream app_server {
for UNIX domain socket setups
server unix:/var/www/rails/アプリ名/run/sockets/unicorn.sock fail_timeout=0;
}
server {
listen 80;

server_name ; ElasticIP;

nginx so increasing this is generally safe...
keepalive_timeout 5;
path for static files
root /var/www/rails/アプリ名/public;

page cache loading
try_files $uri/index.html $uri.html $uri @app;

location @app {
HTTP headers
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}

Rails error pages
error_page 500 502 503 504 /500.html;
location = /500.html {
root /var/www/rails/アプリ名/public;
}
}

その中の設定ファイルの作成した後に、ファイルの設定内容をNginxに反映させて再起動しようとしたものの、

[ec2-user@ ~]$ sudo systemctl restart nginx
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

という結果になり、仕方なく systemctl status nginx.service と入力したものの、

[ec2-user@ ~]$ systemctl status nginx.service
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2021-12-08 05:44:48 UTC; 24s ago
Process: 8500 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE)
Process: 8498 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 8444 (code=exited, status=0/SUCCESS)

Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal systemd[1]: Starting The nginx HTTP and reverse proxy server...
Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal nginx[8500]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal nginx[8500]: nginx: [emerg] open() "/var/www/rails/アプリ名/log/nginx.error.log" failed (2: No su...ectory)Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal nginx[8500]: nginx: configuration file /etc/nginx/nginx.conf test failed
Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal systemd[1]: nginx.service: control process exited, code=exited status=1
Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal systemd[1]: Failed to start The nginx HTTP and reverse proxy server.
Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal systemd[1]: Unit nginx.service entered failed state.
Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal systemd[1]: nginx.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

という結果で、状態を確認するだけでした。

この中の

Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal nginx[8500]: nginx: [emerg] open() "/var/www/rails/アプリ名/log/nginx.error.log" failed (2: No such file or directory)Dec 08 05:44:48 ip-10-0-0-140.ap-northeast-1.compute.internal nginx[8500]: nginx: configuration file /etc/nginx/nginx.conf test failed

があやしいとにらんでいます。
というのも、設定ファイルを作る前に、sudo systemctl start nginx と打ったところ
上記の Active: failed のところが Active: active (running)  となっていて
正常に起動できていたからです。

調べてもこれといって解決できる方法が見つかりませんでした。
Nginxの設定ファイルはせいぜいアプリ名とElasticIPぐらいしか違うはずなのに、
どうしてこのようなエラーが発生するのかがわかりません。

解決できる方お待ちしております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

nginxの実行ユーザが/var/www/rails/アプリ名/log/nginx.error.logに書き込む権限がないのでは?
恐らくディレクトリ周りの権限をちゃんと設定してやれば解消します。

ただnginxのログ出力先は、よくわかっていないのであればアプリのディレクトリではなく素直にデフォルトの/var/log/nginx配下に設定しておくことをおすすめします。

個人的にはアプリのログも/var/log配下にディレクトリ切ってそこに置いたほうがスッキリしますが、それはまあ好みの問題でもあるので。

※追記
作ってないディレクトリにログを出力することはできません。書いてあるとおりNo Such Directoryです。

投稿2021/12/08 06:50

編集2021/12/08 07:16
yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ko-program

2021/12/08 07:00

権限を付与すればいいということでしょうか? また、その場合の具体的な手順も教えてくれると助かります。
yu_1985

2021/12/08 07:02

まずその前に、nginxの設定ファイルの中身を本文に追記する形で貼ってください。 それから、 ls -l /var/www/ ls- l /var/www/rails/ ls -l /var/www/rails/アプリ名 ls -l /var/www/rails/アプリ名/log ※アプリ名のところは実際の名前を入れてください の実行結果をそれぞれ貼ってください。
Ko-program

2021/12/08 07:03

nginxのログ出力先については、サイトの通りにやっていただけなので、詳しくはわかりません。
Ko-program

2021/12/08 07:07 編集

設定ファイルの中身を追記しました。
yu_1985

2021/12/08 07:11

設定ファイルの内容はちゃんと読んでやってください ところでコマンドの実行結果はどうですか? そもそも参考にしてるサイトには実際にRailsのアプリケーションを配置する手順がnginxを起動するまでに書かれてませんが、もしかしてまだアプリケーションのディレクトリを実際に作っていないのでは? それならログの配置先ディレクトリが存在しないのでそりゃエラーになるだろうと思います。
yu_1985

2021/12/08 07:11

設定ファイル等を貼るときはコードブロックで貼ってください。
Ko-program

2021/12/08 07:13

コマンドの結果は以下の通りでした。 [ec2-user@ ~]$ ls -l /var/www/ ls: cannot access /var/www/: No such file or directory [ec2-user@ ~]$ ls- l /var/www/rails/ -bash: ls-: command not found [ec2-user@ ~]$ ls -l /var/www/rails/アプリ名 ls: cannot access /var/www/rails/アプリ名: No such file or directory [ec2-user@ ~]$ ls -l /var/www/rails/アプリ名/log ls: cannot access /var/www/rails/アプリ名/log: No such file or directory これといって大した結果は出ませんでした。
Ko-program

2021/12/08 07:17 編集

「コードブロックで貼ってください」とありましたが、これでよろしいでしょうか。 #をつけたままだったせいか、先ほどのようになってしまいました。
yu_1985

2021/12/08 07:17

大した結果が出てるじゃないですか。 存在しないディレクトリにログを出力することはできないので、まずはディレクトリを切ってアプリを配置するところからやってください。 参考サイトはその手順が完全に飛んでいます。 nginxの起動云々はアプリを配置してからにしましょう。
yu_1985

2021/12/08 07:18

マークダウン形式に慣れましょう https://teratail.com/help#about-markdown コードブロックは ``` ``` のようにバッククォート(シングルクォートではない)3つで囲むとできます。
yu_1985

2021/12/08 07:20

それから、リンクを貼るときもきちんとマークダウン形式のリンクになるように貼りましょう。 Teratailの質問欄と解答欄では残念ながら自動でリンクになるようにしてくれません。 コメント欄はリンクにしてくれますが、その代わりコメント欄にマークダウンを書くことはできません。
Ko-program

2021/12/08 07:21

ディレクトリを切ってアプリを配置するには、どうすればいいですか?
Ko-program

2021/12/08 07:30

ディレクトリを切ってアプリを配置するには、どうするんですか?
yu_1985

2021/12/08 07:35

さすがにそれを一からここで教えてくれというのは無理筋です。 解説してるサイトは他にたくさんあるのでどれかを辿りながらまずは手動でのデプロイを自分でやってみてください。 例えばこことか。 https://pikawaka.com/rails/ec2_deploy 本文に貼っているサイトではこの後いきなりCodeDeployを使ったデプロイをやっていますが、普通にデプロイできない人がいきなり手を出すものではありません。
Ko-program

2021/12/08 07:38

これはローカルのパソコンからのデプロイですよね? 僕は冒頭で言ったように、cloud9で開発したrailsのアプリを AWSのEC2にデプロイしたいのです。
Ko-program

2021/12/08 07:43

cloud9からでも、これと同じように手動でEC2にデプロイできるんですか?
yu_1985

2021/12/08 07:53

git管理していればローカルだろうとどこだろうとソースはgitリポジトリ上にあり、手を動かすのはデプロイしたいEC2上なので関係ありません。 まさかgit管理していないということはないという想定ですが、もしSSHでやりたいならcapistranoを使ってデプロイしている例を試してください。 申し訳ないですがこのサイトにいる方々はあなたのメンターでも有償サポートでも、ましてや講師でもないので1から10まで教えてくれと言われても面倒は見きれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問