概要
リモートサーバのUbuntu22.04にインストールしたnginx1.22.0をgunicornと連携できるように設定します。さらに、Django+DRFのAPIサーバへの連携も行い、作業用PCのブラウザからアクセスできるようにします。nginx、gunicornはインストール済み、Django+DRFのAPIサーバは完成済みの状態です。
環境(開発環境)
Ubuntu22.04 IP 192.168.88.15
作業用PC Windows10 Pro IP 192.168.88.1
nginx 1.22.0 ポート80番
gunicorn 20.1.0
Python 3.10.6
Django 3.2.15 ポート8000番
DRF 3.13.1
設定するにあたって
ubuntu標準ではなくリポジトリ追加してnginxをインストールしたので、参考にさせてもらった情報とは/etc/nginx内のファイル・フォルダ構成が違いました。具体的には、sites-availableやsites-enabledフォルダがなく、proxy_paramsファイルがありませんでした。こちらのページを見させていただき、違うことに気づきました。
そこで、nginxのメインの設定ファイル(/etc/nginx/nginx.conf)を見ると、
include /etc/nginx/conf.d/*.conf;
と記述があり、デフォルトでは/etc/nginx/conf.dフォルダ内の.confファイルを読む設定になっていました。/etc/nginx/nginx.confにinclude /etc/nginx/sites-enabled/*;を追記して、sites-availableやsites-enabledフォルダなどをmkdirで作成する方法もありましたが、デフォルトの方法で進めようと思います。
/etc/nginx/conf.dフォルダ内に.confファイルを作成して、80番ポートへのアクセスをソケットに投げるの内容などを設定ファイルに書いていきます。もともとあった/etc/nginx/conf.d/default.confはバックアップを取って消しました。
設定
/etc/nginx/conf.dにnginxの設定ファイル(apitest.conf)を作成します。
$ sudo nano /etc/nginx/conf.d/apitest.conf
server {
listen 80;
server_name 192.168.88.15;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/lustm5/solution;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
nginxとgunicornを再起動します。
$ sudo systemctl restart nginx
$ sudo systemctl restart gunicorn
nginxがエラーで再起動できない場合は、以下のコマンドで原因を探ります。
$ sudo systemctl status nginx
ufwのポート80を開けます。
$ sudo ufw allow 80
確認
ブラウザで192.168.88.15と入力してアクセス。無事表示されました。
管理サイトの表示が崩れてしまっているので、今後設定ファイルを書き換えて直します。
さいごに
一旦連携して動かせるようになりました。次は、管理サイトとの表示の件もあるのでnginxの設定ファイルをもう少し書き換えて本番環境に近づけていきたいと思います。