Home >Backend Development >Python Tutorial >Detailed explanation of website deployment based on Django framework
对于刚入门的同学,当完成了项目代码,在本地localhost的调试没问题后,会遇到如何让项目上线的问题。 网上的资料过于繁杂,因此希望这篇能简单地为刚入门的同学解惑。
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
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()
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
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; } }
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
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!