Home > Backend Development > Python Tutorial > Detailed explanation of website deployment based on Django framework

Detailed explanation of website deployment based on Django framework

高洛峰
Release: 2017-03-09 09:56:49
Original
1703 people have browsed it

                 

对于刚入门的同学,当完成了项目代码,在本地localhost的调试没问题后,会遇到如何让项目上线的问题。
网上的资料过于繁杂,因此希望这篇能简单地为刚入门的同学解惑。
Copy after login

1.Domain name

First, when we enter a URL http://www.example.com/, we first resolve it to the corresponding IP address through DNS, so as to This IP enables access. Therefore, the first step to let others access our project is to have two things, a domain name and a public IP.
Obtaining a domain name is very simple, just register and purchase one. Then what is needed is to resolve the domain name to your public IP. The public IP can usually be obtained when purchasing a cloud server.
After this step, we achieved: request-->DNS-->server ip, and our ultimate goal is: request-->DNS-->server ip-->black box- ->Project wsgi application

2. Use gunicorn to run the project

Here, we use django to build the project, when your project is completed. We need to run a service program that listens for requests, receives requests and calls the corresponding wsgi application. For example, execute python manage.py runserver 0.0.0.0:8000. Runserver is the wsgi-based service program that comes with Django for debugging.

We create a project on the cloud server

django-admin.py startproject blog

wsgi.py

import os
import sys
# 当使用virtualenv等隔离项目环境时,需要将项目的路径添加添加到查找路径中
path = os.getcwd()
if path not in sys.path:
    sys.path.append(path)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blog.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Copy after login

We execute the following command under the project

gunicorn wsgi:application

The default binding is 127.0.0.1:8000. You can google the specific use of gunicorn by yourself
This At this time, we can access our project content through the local port 8000. Implemented: request-->DNS-->server ip-->black box-->127.0.0.1:8000-->project wsgi application

3.nginx receives external request, Internal forwarding

In the /etc/nginx/sites-available/ folder, create a new file blog and add the following simple settings

server {
    listen 80;
    server_name  你的域名 你的公网ip(可选);
    access_log  /var/log/nginx/blog.log;
    location /static {
        #静态文件如js,css的存放目录
        root /project/blog;
    }
    location / {
        include proxy_params;
        # 从外部接收请求后转发到本地的8000端口
        proxy_pass http://127.0.0.1:8000;
    }
}
Copy after login

From the above we can understand that nginx receives the request Finally, it is forwarded to the local port 8000 that gunicorn is listening on. Gunicorn calls the corresponding application function in the project according to the request and returns the result.
Since then we have basically implemented the request-->DNS-->server ip-->nginx (port 80)-->127.0.0.1:8000-->Project wsgi application
There are many specific configurations about nginx and gunicorn. You might as well google more to learn more

4. Summary

gunicorn makes the project run
nginx is responsible for receiving requests and forwarding requests to run The port
used to monitor requests in the project is deployed online, which mainly requires domain name and public IP. Both can be solved through cloud servers, so it is best to just buy a cloud server and practice it, just do it




The above is the detailed content of Detailed explanation of website deployment based on Django framework. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template