整理使用NGINX和gunicorn来运行Django的流程(仅用于个人备忘)

首先

由于努力学习后,在将Django部署到远程主机后,我对NGINX和gunicron的配置变得有些困惑,因此为了自己做个备忘录。

やりたいこと
必要な作業の流れ
1. NGINXがDjangoサイトを呼び出す用の設定ファイル作成
2. Djangoを呼び出す設定ファイルへのシンボリック・リンク作成
3. NGINXとgunicornを再起動

我想做的事情 (Wǒ zuò de

我想在云端部署使用Django开发的应用程序,并且希望通过Web服务器(NGINX)处理一些轻量级的任务,比如只是显示静态文件,而将一些动态的重量级任务交给AP服务器(gunicorn)来处理。

image.png
    • nginx

主に静的ファイルを表示するウェブサーバー
自分自身は重たい仕事はしない(ngninxにさせるのはHTMLの表示くらい)
ロードバランサー的に振る舞い、重い処理だけgunicornに振る

gunicorn

Djangoを動かすAPサーバー
静的ファイル(HTMLとか)のみ表示する場合には不要なので、Pythonが必要な場合だけ呼び出したい。

必要的工作流程

为了实现上述内容,需要进行以下工作(假设Django应用程序已经部署到服务器上)

    1. 准备一个配置文件来调用Django网站的NGINX。

配置文件应以随意的名称在“/etc/nginx/sites-available”文件夹中创建。

配置文件的内容可以是“使用此端口”。

在“/etc/nginx/sites-enabled”文件夹中,创建一个指向上述步骤1中所创建的文件的符号链接。

通过这样做,如果步骤1中的文件变为无效,只需断开符号链接即可。

如果不知道什么是符号链接的人,可以将其视为“快捷方式的链接”。重新启动NGINX和gunicorn,并进行访问。

1. 为NGINX创建配置文件,用于调用Django网站。

将网站(这里是Django应用程序)的配置文件添加到「/etc/nginx/sites-available」中,这样NGINX就可以调用该网站了。

cd /etc/nginx/sites-available
sudo vi djangapp

根据这个”djangapp”中的配置,NGINX将调用Django。
接下来,将信息写入所创建的配置文件。此次NGINX希望实现以下两个目标:
1. 显示静态文件
2. 将请求信息传递给”djangapp.sock”(与gunicorn连接的套接字文件)。

设置文件的内容类似这样

server {
     # 設定しているウェブサイトへのリクエストを通すポート
        listen 80;
        # ウェブサイトのIPもしくはドメイン名
        server_name xx.xx.xx.xxx;
        # ファビコンが見つからないというエラーを回避するおまじない
        location = /favicon.ico {access_log off; log_not_found off;}
        ### 以下、リクエストURLとNGINX上のパスとの対応を定義
        # Django静的ファイルへのパスを設定
        location /static/ {
                root /home/ubuntu/djangapp;
                }
        # 管理者用ページのCSSを表示するためのパスを設定
        location /static/admin {
                root /home/ubuntu/venv/lib/python3.6/site-packages/django/contrib/admin/static/admin;
        }
        # リクエストをウェブページに流すためにunixソケットへのパスを設定
        location / {
                # 「/etc/nginx/proxy_params」にプロキシの設定が記載してある
                include proxy_params;
                # djangapp.sockにリクエスト結果を流している
                proxy_pass http://unix:/home/ubuntu/djangapp/djangapp.sock;
        }
}

创建指向调用Django的配置文件的符号链接

只需要一个选项,用中文将以下内容改写成本地化的句子:
刚刚创建的“sites-available/djangapp”将创建一个符号链接到“site-enabled”,以表示“已启用”。
如果想临时中断连接,只需删除该符号链接即可。

sudo ln -s /etc/nginx/sites-available/djangapp /etc/nginx/sites-enaled

通过这样,创建了一个名为sites-enabled/djangapp到sites-available/djangapp的符号链接。进行了大致的确认。

(venv) ubuntu@ip-172-31-45-165:/etc/nginx/sites-available$ ls -la /etc/nginx/sites-enabled/
total 8
drwxr-xr-x 2 root root 4096 Apr 29 13:26 .
drwxr-xr-x 8 root root 4096 Apr 29 13:27 ..
lrwxrwxrwx 1 root root   34 Apr 29 06:54 default -> /etc/nginx/sites-available/default
# シンボリック・リンクになってる
lrwxrwxrwx 1 root root   36 Apr 29 13:26 djangapp -> /etc/nginx/sites-available/djangapp

3. 重新启动 NGINX 和 gunicorn。

首先尝试测试NGINX是否正常运行

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

确认一切正常运行。
接下来,重新启动各种事物。

sudo systemctl restart nginx
 sudo systemctl restart gunicorn

最后只需要连接到URL即可结束。

广告
将在 10 秒后关闭
bannerAds