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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

nginx

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

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

32399閲覧

systemctl restart nginx でのエラー(centos7)

ruuusaamarki

総合スコア468

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

nginx

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

AWS(Amazon Web Services)

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

0グッド

2クリップ

投稿2016/07/25 01:43

編集2016/07/25 14:08

EC2、RDS、centos7、nginx、php-fpmの構成を組み立てる途中で
nginxの再起動の際にエラーが出ています。

$ 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. $ sudo systemctl -l status nginx.service Process: 32757 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE) systemd[1]: Failed to start The nginx HTTP and reverse proxy server. $sudo journalctl -xe 結果は特にエラーなど見当たらなかったのですが注意してみるところなどありましたらお願いいたします。

エラーメッセージなどで検索してみましたが
解決には至らずこちらにまいりました。

情報も少なくわかりずらいと思いますが
なにか解決の糸口だけでもいただけましたらうれしく思います。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

nginx.confの設定にどこか間違いがあると同様のエラーが出ます。
次のようにシンタックスをチェックしたらエラーはでますか?

nginx -t

投稿2016/07/25 04:09

編集2016/07/25 04:20
coba-coba

総合スコア1409

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

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

ruuusaamarki

2016/07/25 05:23 編集

coba-cobaさんありがとうございます。 管理者権限で sudo nginx -tを実行すると nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful とでて nginx -tを実行すると nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) [warn] : /etc/nginx/nginx.conf:5 と出ます。 nginx.confの5行目はuser nginx; となっています。 なんとなく権限がわたっていない感じはしているのですが。 あと/var/log/nginx/error.logのパーミッションは -rw-r--r-- と現状なっています。 また sodo less /var/log/nginx/error.log で[emerg] open() failed (permission denied) というログも出ていました。 このような状況です。 何かお心あたりがありましたら引き続きお願いいたします。
coba-coba

2016/07/25 07:24

nginx.confは問題なさそうですね。 パーミッションの件は管理者権限で実行すれば問題ないみたいなので大丈夫です。 sudo systemctl start nginx を実行して、その直後のエラーログを教えてもらえますか? (/var/log/nginx/error.log ←このログ) -------------------- ちなみにエラーが [emerg] 8090#0: bind() to 0.0.0.0:80 failed (98: Address already in use) であった場合は sudo fuser -k 80/tcp を実行してから sudo systemctl start nginx を再度試してください。
ruuusaamarki

2016/07/25 07:34

度々ありがとうございます。後ほどまた結果をご連絡させていただきます。
ruuusaamarki

2016/07/25 13:45

度々失礼いたします。 sudo systemctl start nginx を実行すると Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details. とエラーが出ます。 エラーログを見ると 1422#0: open() "/usr/share/nginx/example.log" failed (13: Permission denied) と出ています。 このlogファイルのパーミッションもしくは管理者を 設定する必要があるのでしょうか。 設定するとすればどのように設定すればいいのか (nginx.confのユーザーで設定するのか、EC2で設定するのか パーミッションはどうすればいいのか) すみません、example.logのパーミッションを644→646に変えても同じエラーが出て 今だ解決に至っておりません。もしよろしければまた書き込みをお願いします。
coba-coba

2016/07/25 15:00

/usr/share/nginx/example.logのファイルのパーミッションを777、 /usr/share/nginx/のディレクトリのパーミッションを755にしたらどうでしょう? sudo chmod 777 /usr/share/nginx/example.log sudo chmod 755 /usr/share/nginx/
ruuusaamarki

2016/07/25 15:23

書き込みありがとうございます! パーミッションを変えてみましたが状況は変わりませんでした。 これらの通常のパーミッションは /usr/share/nginx/example.log 644 /usr/share/nginx 755 で設定することが一般的なのでしょうか。
ruuusaamarki

2016/07/25 15:38 編集

書き込みありがとうございます! 調べている途中どこかでSELinuxという単語は見ていましたが完全にスルーしていました。 SELinuxをpermissiveに設定したら再起動できました。 また /etc/nginx/conf.d/example.confファイルの設定も反映されるようになりました。 SELinuxについて検索をして少しページを見てみたのですが セキュリティに関するものとのこと。 EC2、RDS、centos7、nginx、php-fpmの構成の場合 SELinuxはpermissiveにしておく場合が多いのでしょうか。 自分でも改めて調べてみるつもりでおりますが これまでのご経験など伺えたらうれしく思います。
coba-coba

2016/07/25 19:32

TaichiYanagiyaさんコメントありがとうございます。 ruuusaamarkiさんすみません。SELinuxでしたね。 ログファイルもフォルダも誰にどこまで公開するか次第です。 パーミッションは、ログの場合は普通は所有者だけ書き込みできればよく、他は読めるだけでいいので644が多いのではないかと思います。 --------------------------------- 答えられなかった私が言うのもなんですが、ネット上ではSELinuxをPermissiveにする人が多い気がします。 理由は設定がややこしいからです。 ちなみに、SELinuxが有効の場合、ポリシーとコンテキストというものを設定します。 説明が長くなるので簡単に言いますが、要は、 ・ドメイン(グループ)ごとにファイルやフォルダのアクセス権限を設定する。 ・ファイルやフォルダにタイプという属性を割り当てて、その属性ごとにアクセス権限を設定する。 というものです。 今回のような場合は ・nginxのプロセスに対してアクセス許可を与える ・nginxがアクセスするファイルやフォルダに対して、nginxが利用できるタイプを設定する ことによってエラーを回避できます。 他にも、最も簡単なのは「論理パラメータ」というものを変更する方法もあります。 もしくは、SELinux全体を無効にするのではなく、「特定のプロセス(のコンテキスト)をPermissive」にしてもいいかもしれません。 なお、どのプロセスに対して設定するかは、SELinuxのルールに違反した場合に残されるログ(/var/log/audit/audit.log)などを確認します。 それからpsコマンド+オプションで稼働中のプロセスのコンテキストを確認したり、lsコマンド+オプションでファイルコンテキストを確認。 setoolsのパッケージに含まれるコマンドでコンテキストを変更します。 …… …… ……ということをやるのは大変なので、SELinuxをPermissiveにしてしまう人が多い気がします。 人によっては、 ・SELinuxは誰かがサーバーに侵入したときの被害を限定的なものにするものなので、侵入されないようにすればいい。 ・パーミッションと所有者によるアクセス制限で十分 と考えているのかもしれません。
ruuusaamarki

2016/07/26 00:04

coba-cobaさんありがとうございます! 重ねての質問、パーミッションからセキュリティ設定の ご経験談などとても参考になりました。 また具体的な設定方法も非常にわかりやすくイメージすることができました。 色々なパターンで制限をかける方法があるということだけでも非常に貴重な情報でした。 まずはサイトを通常通り、パフォーマンスよく表示させることから始め こちらについても並行して取り入れていきたいと思います。 色々ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問