Django启动11(Web应用三层结构构建篇)
创建Web应用程序的结构
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’
出现问题
查看/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/