前提
AWSのEC2でWebサイトを開発しています。
AMIはAmazon Linux2です。
Djangoを使っているため、サーバーとしてGunicornを使っています。
Gunicorn自体は、すでに動かすことはできております。
わからないこと
現在Gunicornを起動する際は、gunicorn project.wsgi
で起動しておりますが、
systemctl start gunicorn.socket
で起動できるようにしたいと考えております。
様々試してみたのですが、うまくいきませんでした。
試したこと
- gunicorn.serviceファイルを作成
/etc/systemd/system/gunicorn.service
[Unit] Description=gunicorn daemon Requires=gunicorn.socket After=network.target [Service] Type=notify User=ec2-user Group=ec2-user RuntimeDirectory=gunicorn WorkingDirectory=/home/ec2-user/PROJECT/backend ExecStart=/home/ec2-user/project-venv/bin/gunicorn project.wsgi:application [Install] WantedBy=multi-user.target
※ WorkingDirectoryの/home/ec2-user/PROJECT/backend
配下でgunicorn project.wsgi
を実行するとGunicornが起動します。
※ ExecStartの/home/ec2-user/project-venv/bin/gunicorn
はwhich gunicorn
の結果です。
- gunicorn.socketファイルを作成
sudo vim /etc/systemd/system/gunicorn.socket
[Unit] Description=gunicorn socket [Socket] ListenStream=/run/gunicorn/socket [Install] WantedBy=sockets.target
- Socketの起動
systemctl enable --now gunicorn.socket
- Gunicorn起動
systemctl start gunicorn.socket
参考サイト
下記サイトや、公式のドキュメントを参考にしております。
https://ai-can-fly.hateblo.jp/entry/gunicorn-install-and-settings
いろいろ試したのですがうまく動かなかったため、ご教授いただけますと幸いです。
あなたの回答
tips
プレビュー