Django是一個大而全的框架,不像Flask那樣精簡,而在實際的開發部署中,總會出現問題,本文介紹使用Nginx和uwsgi進行部署,從而能夠提升網站併發性html
更多信息請點擊python
Python >= 3.6
Djando >= 2.1
Nginx >= 1.2
複製代碼
若直接Git本源碼,只須要修改數據的名稱和密碼便可mysql
若非Git本源碼,具體部署步驟以下,相比Nginx,Apache配置更簡便,本部署基於Nginxnginx
在工程目錄下修改setting.py
git
# Application definition
INSTALLED_APPS = [
'blog',
]
# Database
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'blogx',
'USER': 'root',
'PASSWORD': '416798',
'HOST': 'localhost',
'PORT': '3306',
},
}
# Internationalization
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
MEDIA_ROOT = os.path.join(BASE_DIR, "static/media")
複製代碼
在工程目錄下修改urls.py
github
from django.contrib import admin
from django.urls import path, include
from django.conf.urls import url
urlpatterns = [
path('admin/', admin.site.urls),
# 二級應用分發
url('^', include('blog.urls')),
]
複製代碼
在應用目錄下新建urls.py
sql
from django.urls import path
from . import views
from django.conf.urls import url
urlpatterns = [
url(r'^$', views.index),
url(r'^Python/', views.python),
]
複製代碼
在應用目錄下的__init__.py添加代碼數據庫
import pymysql
pymysql.install_as_MySQLdb()
複製代碼
生成偏移文件django
python manage.py makemigrations
複製代碼
添加到數據庫bash
python manage.py migrate
複製代碼
建立管理員
python manage.py createsuperuser
複製代碼
在工程根目錄下創建blog.xml文件
<uwsgi>
<socket>127.0.0.1:8999</socket><!-- 內部端口,自定義 -->
<chdir>/data/wwwroot/blog/</chdir><!-- 項目路徑 -->
<module>project.wsgi</module>
<processes>4</processes> <!-- 進程數 -->
<daemonize>uwsgi.log</daemonize><!-- 日誌文件 -->
</uwsgi>
複製代碼
配置Nginx代理服務器
server {
listen 80;
server_name blog.gaozhe.top;
rewrite ^(.*) https://$server_name$1 permanent;
location /static {
alias /var/www/blog/static/;
}
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8999;
uwsgi_param UWSGI_SCRIPT blog.wsgi;
uwsgi_param UWSGI_CHDIR /data/wwwroot/blog;
}
}
複製代碼
server {
listen 443;
server_name blog.gaozhe.top;
location /static {
alias /var/www/blog/static/;
}
ssl on;
ssl_certificate /usr/local/nginx/conf/ssl/214903559130065.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl/214903559130065.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8999;
uwsgi_param UWSGI_SCRIPT blog.wsgi;
uwsgi_param UWSGI_CHDIR /data/wwwroot/blog;
}
}
複製代碼