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

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

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

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Q&A

1回答

4391閲覧

Gunicornが起動しない

cunwe

総合スコア65

Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

1グッド

0クリップ

投稿2021/11/03 11:28

編集2021/11/04 14:52

環境

Ubuntu 18.04.6

現状

$ sudo systemctl start gunicornを実行して、本当に動いてるのか確認するために$ ps aux | grep gunicornを実行してもhoge+ 13930 0.0 0.0 14860 1156 pts/0 S+ 08:05 0:00 grep --color=auto gunicorn という出力しか得られずどうやら起動できてなさそうです。

なお、gunicorn.serviceは以下のようになっています。

[Unit] Description=gunicorn daemon After=network.target [Service] User=hogehoge Group=hogehoge WorkingDirectory=/home/hogehoge/mysite ExecStart=/home/hogehoge/anaconda3/envs/blog-django/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/hogehoge/mysite/mysite.sock mysite.wsgi:application [Install] WantedBy=multi-user.target

やったこと

1.こちらの記事では、実行する際にgunicornの後ろに「.service」とついているのでつけて実行しましたが結果は変わりませんでした。
2.上記の記事でsystem.serviceを書いたらそれを反映させるために$ systemctl daemon-reloadを実行していたので、そのコマンドを実行してからstartして確認しましたが、結果は変わりまでした。

gunicorn.service以外に必要なファイルなどありますでしょうか?知見をお持ちの方、よろしくお願いいたします。

【追記】

参考にしたもの

僕は特にAIアプリは作っておらず、自分のブログを恒常的に稼働させるためにgunicornやnginxが必要そうだということでこちらの動画を参考にさせていただいております。
イメージ説明

sudo journalctl -u gunicornした結果

Nov 03 08:05:04 blog-django systemd[1]: Started gunicorn daemon. Nov 03 08:05:04 blog-django systemd[1]: gunicorn.service: Main process exited, code=exited, status=200/CHDIR Nov 03 08:05:04 blog-django systemd[1]: gunicorn.service: Failed with result 'exit-code'. Nov 03 11:02:38 blog-django systemd[1]: Started gunicorn daemon. Nov 03 11:02:38 blog-django systemd[14194]: gunicorn.service: Changing to the requested working directory failed: No such file or directory Nov 03 11:02:38 blog-django systemd[14194]: gunicorn.service: Failed at step CHDIR spawning /home/hogehoge/anaconda3/envs/blog-django/bin/gunicorn: No such file or directory Nov 03 11:02:38 blog-django systemd[1]: gunicorn.service: Main process exited, code=exited, status=200/CHDIR Nov 03 11:02:38 blog-django systemd[1]: gunicorn.service: Failed with result 'exit-code'. Nov 03 11:24:08 blog-django systemd[1]: Started gunicorn daemon. Nov 03 11:24:08 blog-django systemd[14279]: gunicorn.service: Changing to the requested working directory failed: No such file or directory Nov 03 11:24:08 blog-django systemd[14279]: gunicorn.service: Failed at step CHDIR spawning /home/hogehoge/anaconda3/envs/blog-django/bin/gunicorn: No such file or directory Nov 03 11:24:08 blog-django systemd[1]: gunicorn.service: Main process exited, code=exited, status=200/CHDIR Nov 03 11:24:08 blog-django systemd[1]: gunicorn.service: Failed with result 'exit-code'. Nov 03 11:24:50 blog-django systemd[1]: Started gunicorn daemon. Nov 03 11:24:50 blog-django systemd[14295]: gunicorn.service: Changing to the requested working directory failed: No such file or directory Nov 03 11:24:50 blog-django systemd[14295]: gunicorn.service: Failed at step CHDIR spawning /home/hogehoge/anaconda3/envs/blog-django/bin/gunicorn: No such file or directory Nov 03 11:24:50 blog-django systemd[1]: gunicorn.service: Main process exited, code=exited, status=200/CHDIR Nov 03 11:24:50 blog-django systemd[1]: gunicorn.service: Failed with result 'exit-code'.

nginxの設定ファイル

server { server_name {外部IP}; location / { include proxy_params; proxy_pass http://unix:/home/hogehoge/blog_django/blog_django.sock; } }
SEIM-CHAN👍を押しています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/11/04 10:54

sudo journalctl -u gunicornでログが見れると思いますので、どんなエラーが出ているのか貼ってもらえますか?
cunwe

2021/11/04 14:53

そのようなコマンドがあるのですね、ご助言くださりありがとうございます。ログを追記いたしました。
退会済みユーザー

退会済みユーザー

2021/11/04 15:37

systemdを使ってサービスの記述をする場合は必須のコマンドです。 ログなどを確認するときに使用します。 見れば分かるとおり、ディレクトリ /home/hogehoge/mysite と、実行ファイル /home/hogehoge/anaconda3/envs/blog-django/bin/gunicorn が見当たらないようです。 存在やパーミッションなどをご確認ください。
cunwe

2021/11/04 15:42

かしこまりました。 すいません、ひとつ質問がございましてDjangoプロジェクト直下に生成するsockファイルって中身は何も記述してなくて問題ないでしょうか? cf) https://view-s.co.jp/product/webapp/wsgi/
退会済みユーザー

退会済みユーザー

2021/11/04 15:52

ちょっと本家でないサイトを見るのは嫌なのでご容赦ください。 通常.sockファイルは、Unixドメインソケットと呼ばれるもので、所謂名前付きパイプと似たようなプロセス間通信で使うものです。このファイルを開いてアクセスするのですが、書き込めば通信相手に送信し、読み込めば受信することになるので、ファイルの中身は使いません。つまり記述は普通ありません。 とりあえずもう少し基礎からやって頂き、出来ることを組み合わせて動かすようにしてください。
cunwe

2021/11/04 16:53

かしこまりました。 一番最初に仰っていただいた`$ sudo journalctl -u gunicorn`ってもしかして.serviceファイルの名前がgunicornであることが前提でしょうか?だとしましたら下でお答えただいてる方のアドバイスを受けてmysite.serviceに変更しております。 また、system配下の.scoketファイル書いて`$ sudo systemctl daemon-reload`して`$ sudo systemctl start mysite`し`$ ps aux | grep mysite`すると以下のように表示されるので動いてはいそうです。しかし、下の回答者の方にもお聞きしたのですが`$ sudo systemctl enable `してもシンボリックリンクがうまく貼れません。以前誤って貼ってしまったのを消して今回正しいシンボリックリンク貼りたいのですがその方法をご存知だったりしますでしょうか? ``` hoge+ 15791 0.0 0.6 40888 23280 ? Ss Nov03 0:12 /home/hogehoge/anaconda3/envs/blog-django/bin/python /home/hogehoge/anaconda3/envs/blog-django/bin/gunicorn - -access-logfile - --workers 3 --bind unix:/home/hogehoge/blog_django/blog_django.sock mysite.wsgi:application hoge+ 15809 0.0 1.0 69084 38700 ? S Nov03 0:01 /home/hogehoge/anaconda3/envs/blog-django/bin/python /home/hogehoge/anaconda3/envs/blog-django/bin/gunicorn - -access-logfile - --workers 3 --bind unix:/home/hogehoge/blog_django/blog_django.sock mysite.wsgi:application hoge+ 15814 0.0 1.0 69084 38700 ? S Nov03 0:01 /home/hogehoge/anaconda3/envs/blog-django/bin/python /home/hogehoge/anaconda3/envs/blog-django/bin/gunicorn - -access-logfile - --workers 3 --bind unix:/home/hogehoge/blog_django/blog_django.sock mysite.wsgi:application hoge+ 15815 0.0 1.0 69084 38700 ? S Nov03 0:01 /home/hogehoge/anaconda3/envs/blog-django/bin/python /home/hogehoge/anaconda3/envs/blog-django/bin/gunicorn - -access-logfile - --workers 3 --bind unix:/home/hogehoge/blog_django/blog_django.sock mysite.wsgi:application hoge+ 18439 0.0 0.0 14860 1156 pts/0 S+ 16:26 0:00 grep --color=auto mysite ```
退会済みユーザー

退会済みユーザー

2021/11/04 17:06

そこはもう他人に聞くことではないので、ご自身で学習してください。 https://www.freedesktop.org/software/systemd/man/systemd.unit.html 全て読んだ上で不明点があればそれを1つの質問として別の質問で上げてください。何も読まずに適当にやってできなかったことを全て他人に聞いていたのでは、いつまで経っても自分でできるようになりません。
cunwe

2021/11/04 18:10

参考リンクご添付くださりありがとうございます。 こちら、なんと調べたら見つかりましたか?またページ内をsymbloicで検索して`A symbolic link is created in the .wants/ or .requires/ directory of each of the listed units when this unit is installed by systemctl enable. `という記述が見つかったのですがリスト化されたユニットとは何を指しているのでしょうか?mysiteの中身を見てみましたが見つかりませんでした。
退会済みユーザー

退会済みユーザー

2021/11/04 18:18

丁寧に話せば何でもいいわけではありません。 「存在やパーミッションなどをご確認ください」の返事もなく、「とりあえずもう少し基礎からやって頂き、出来ることを組み合わせて動かすようにしてください」にも従わず、「ご自身で学習してください」と言われても質問し続け、「全て読んだ上で不明点があればそれを1つの質問として別の質問で上げてください」を無視してまた質問とかひどすぎますよ。
退会済みユーザー

退会済みユーザー

2021/11/04 18:19

申し訳ありませんが、低評価させて頂きました。私はこれで失礼します。
cunwe

2021/11/04 18:47

あらら
guest

回答1

0

serviceファイルは特に間違っているわけではないですが、ファイル名がgunicorn.serviceに問題がある気がします。systemctlではシステム上でデフォルトで動いているものもあるので、普通自前でserviceファイルを作成するときにはシステムで使用しているソフトウェア名やコマンド名を使うことはあまり良くありません。
例えばrungunicornapp.serviceとかにしてユニークなファイル名に変更して試してみてはいかがでしょうか?

投稿2021/11/03 11:51

Supernove

総合スコア1154

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

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

cunwe

2021/11/03 14:14 編集

ご回答くださりありがとうございます。 僕が参考にしたものを追記いたしました。そこではgunicorn.serviceでやられてるみたいなのですが、それが原因なんですかね。socketファイルとか必要だったりしますか? 【追記】 socketファイルも下記のリンクに従って書いてみましたが、だめでした
cunwe

2021/11/03 13:57

https://view-s.co.jp/product/webapp/wsgi/ また、こちらの記事を見てみても確かにファイル名がgunicornなのはSupernoveさんのおっしゃるようにおかしいようでdjangoのプロジェクト名と同じに変えてみましたがダメでした。。
cunwe

2021/11/03 14:48

$ sudo systemctl start mysite.socketして$ sudo systemctl status mysite.socketすると ● mysite.socket - gunicorn socket Loaded: loaded (/etc/systemd/system/mysite.socket; disabled; vendor preset: enabled) Active: active (listening) since Wed 2021-11-03 14:12:48 UTC; 32min ago Listen: /home/hogehoge/blog_django/mysite/mysite.sock (Stream) Tasks: 0 (limit: 4364) CGroup: /system.slice/mysite.socket Nov 03 14:12:48 blog-django systemd[1]: Starting gunicorn socket. Nov 03 14:12:48 blog-django systemd[1]: Listening on gunicorn socket. と表示されたのですがこれってうまくいってますかね...?
Supernove

2021/11/03 14:51

エラーにはなっていないので多分動いているとしか言えませんね…
cunwe

2021/11/03 15:09

ブログにアクセスすると502 Bad Gatewayとなるのでやはりどこかおかしそうです...
cunwe

2021/11/03 15:24

ディレクトリ見てみたらアプリケーションと同じ階層にsockファイルができてしまっていました、やり直してみます。
Supernove

2021/11/03 15:30

階層間違いはあるあるですねw 念の為にNginxでサーバーを動かしていると思うので設定ファイルの中身を質問に追記してもらってもいいでしょうか?
cunwe

2021/11/03 15:53

はい、階層間違いは泣けますw Nginxの設定ファイルの中身、追記いたしました! serviceファイル書き換えてシンボリック貼り直そうと、さっき貼ったシンボリックリンクを特に気にせず$ sudo systemctl enable しましたらさっき表示されたCreated symlink /hoge/hoge.service -> /hoge/hoge.service.みたいなのが今回表示されず、作成されてなさそうなのですがシンボリックリンクの貼り直し方法について何かご存知だったりしますでしょうか?
Supernove

2021/11/03 16:14 編集

追記ありがとうございます! いつもserviceファイルは「/etc/systemd/system/」ディレクトリ上にやっているのでシンボリックリンクの貼りなおし方法は詳しくないですね… 例えば「systemctl daemon-reload」でデーモン読み込んで試すといかがでしょうか?
cunwe

2021/11/03 17:30

やってみましたがダメでした。。もう少し調べてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問