Django启动11(Web应用三层结构构建篇)

创建Web应用程序的结构

ApplicationModel.png

nginx 是一种高性能的开源反向代理服务器,可以作为 Web 服务器的代理服务器使用。

网络服务器。旨在快速传送静态内容(存储在服务器上的文件)。

独角兽

WSGI服务器

WSGI(Web服务器网关接口)

连接Web服务器和Web应用程序的接口。它扮演着吸收Web服务器(如Nginx、Apache、CGI等)和Python制作的Web应用程序(如Django、Flask、Zope等)组合限制的角色,并提高Web应用程序速度的职责。

PostgreSQL是一种开源的关系型数据库管理系统。

在处理大规模数据库时,关系数据库服务器非常方便。

启动和配置Gunicorn

    • 仮想環境の起動

 

    gunicornがインストールされているか確認
which gunicorn

启动gunicorn(将项目目录设为当前目录)

gunicorn --bind 0.0.0.0:8000 (wsgi.pyが入っているディレクトリ名).wsgi

自动启动设定

在操作系统启动时自动配置gunicorn的启动设置。

解决问题的途径

编写服务文件gunicorn.service,并使用systemd使其始终运行。

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/(プロジェクトディレクトリ)
ExecStart=/home/ubuntu/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/(プロジェクトディレクトリ)/(プロジェクトディレクトリ).sock (プロジェクトのwsgi.pyがあるディレクトリ名).wsgi:application

[Install]
WantedBy=multi-user.target

启动gunicorn

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

A. 張設了符號連結可以帶來什麼好處?
通過建立符號連結,可以將/etc/配置文件獨立於應用程序之外進行管理,與項目一起進行管理。

Nginx配置和启动

由于gunicorn是执行Python的软件,因此其负载较高。因此可以通过将HTML、CSS、JavaScript等静态页面配置到Nginx上,仅在需要时才调用Python,以此构建系统。

创建用于Django应用的文件

server {
        listen 80;
        server_name (ドメイン名 or グローバルIP);

location = /favicon.ico {access_log off; log_not_found off;}

location /static/ {
root /home/ubuntu/(プロジェクトディレクトリ名);
}

location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/(プロジェクトディレクトリ名)/(プロジェクトディレクトリ名).sock;
}

创建符号链接

sudo ln -s /etc/nginx/sites-available/(プロジェクトディレクトリ名) /etc/nginx/sites-enabled/

确认所创建文件的内容是否正确。

sudo nginx -t

重新启动Nginx

sudo systemctl restart nginx

Ubuntu防火墙的设置

在防火墙上打开80端口。

(如果已经开放的话)关闭试验性地开放的8000端口。

sudo ufw delete allow 8000

允许访问Nginx

 sudo ufw allow ’Nginx  Full’

出现问题

download.png

查看/var/log/nginx/error.log文件。

unix:/home/ubuntu/(プロジェクトディレクトリ名)/(プロジェクトディレクトリ名).sock failed (13: Permission denied)

因为是这样的,所以

请将以下文件按以下方式进行编辑

- user www-data
+ user root

解决这个问题

AWS的配置和确认

在AWS上,为EC2实例的入站规则添加对端口80的开放。

请确认是否可以通过全球IP访问(http://(グローバルIP))。


以下是对「Nginx的sites-available,sites-enabled配置的解释」的一种中文本地化的释义:

补充:Nginx的sites-available,sites-enabled配置详解
链接:https://qiita.com/tomokon/items/e782636c1e5ec6b5dfdc

参考链接:
https://zh.wikipedia.org/wiki/Nginx
https://pala-ghe.com/aws-ec2-django-2-gunicorn-nginx/

广告
将在 10 秒后关闭
bannerAds