一.Django配置文件的修改
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 123
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'qnf(==ufo33b8=f8cyyzq=i5kj9276idj!%a!gh_woumb5*ezk'
# SECURITY WARNING: don't run with debug turned on in production!
# 在生产环境的时候需要把DEBUG改为 false
DEBUG = False
# DEBUG = True
# 一旦把DEBUG改为False,就需要添加HOST,生产环境的时候需要向[]中添加域名或者ip地址
# 目前为了测试,暂时填写*
# ALLOWED_HOSTS = ["*"]
ALLOWED_HOSTS = ["*", "127.0.0.1", "localhost"]
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog.apps.BlogConfig',
# 添加网站的站点地图
'django.contrib.sitemaps',
# 使用Django自带的评论插件
'django.contrib.sites', # 添加站点的插件
'django_comments', # 添加评论的插件
]
# 设置站点的值为1,Django支持多个站点运行,目前我们只使用一个站点
# 使用Django的插件要求制定站点的id
SITE_ID = 1
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'DjangoBlog.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'DjangoBlog.wsgi.application'
DATABASES = {
'default': {
# 让django使用mysql数据库
'ENGINE': 'django.db.backends.mysql',
# 指定数据库的名字
'NAME': 'pythonblog',
# 指定数据的相关信息
'USER': 'root',
'PASSWORD': 'mysql',
'HOST': '127.0.0.1',
'PORT': '3306'
}
}
# Password validation
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
# 静态文件的跟目录
# 在windows中开发项目,然后把项目放置到linux中,会造成静态文件无法显示的情况
# 我们可以运行命令,把静态文件都放置到 all_static_files 文件夹下面
STATIC_ROOT = os.path.join(BASE_DIR, 'all_static_files')
# 多媒体文件的根目录,博客的文章配图上传到该目录下面
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\\", "/")
MEDIA_URL = '/media/'
# 微博登录的账号和密码
CLIENT_ID = 3
APP_SECRET = '6b3f08a3afde59a0828a99678d6f1020'
二.nginx
1.nginx的安装
2.切换到nginx的配置文件目录,编辑配置文件
cd /etc/nginx/sites-available/
sudo vim default
3.配置文件如下所示
server {
# nginx默认监听的是80端口
listen 80 default_server;
listen [::]:80 default_server;
# nginx所在的服务器的ip地址
server_name 192.168.118.128;
# uwsgi的配置
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
# Django静态文件所在的目录
# 该目录是执行静态文件汇总命令之后存放静态文件的目录
location /static {
alias /home/fengyehong/website/all_static_files;
}
# 媒体文件所在的目录(图片之类)
location /media {
alias /home/fengyehong/website/media;
}
}
4.修改完配置文件之后需要重启nginx
sudo service nginx restart
三.uwsgi的安装和配置
Django的主要部署平台就是WSGI,它也是Python的标准web服务器和应用。
uWSGI是实现了WSGI的工具,我们需要下载和安装它。
建议到https://uwsgi-docs.readthedocs.io/en/latest/Download.html页面,下载Stable/LTS版本的源文件。
1.把源文件上传到服务器中
2.解压源文件
tar -zxvf uwsgi
3.进入解压后目录进行安装
sudo python3 setup.py install
如果报错,根据情况安装依赖
sudo apt-get install python3.5-dev # 需要根据系统自带的python选择要安装的版本
4.安装完毕后,输入 uwsgi
进行运行
会报错,因为我们还没有进行uwsgi的配置文件配置.如果报错,至少说明安装成功了
5.进行uwsgi的配置
在Django项目的根目录下,也就是有manage.py的目录下,新建一个uwsgi.ini
文件。
文件名可以随便,但后缀必须是ini。
[uwsgi]
# 存放Django项目的根目录
chdir = /home/fengyehong/website
# 含有wsgi.py的模块的名称
module = DjangoBlog.wsgi:application
# 对本机8000端口提供服务
socket = 127.0.0.1:8000
# 主进程
master = true
# 指定项目使用的虚拟环境的目录
virtualenv = /home/fengyehong/.virtualenvs/myBlog
#vhost = true //多站模式
#no-site = true //多站模式时不设置入口模块和文件
#workers = 2 //子进程数
#reload-mercy = 10
#vacuum = true //退出、重启时清理文件
#max-requests = 1000
#limit-as = 512
#buffer-size = 30000
#pidfile = /var/run/uwsgi9090.pid //pid文件,用于下脚本启动、停止该进程
# 项目运行的日志文件,不存在的话,会自动建立
daemonize = /home/fengyehong/website/run.log
# 不记录正常信息,只记录错误信息
disable-logging = true
7.有uwsgi.ini文件的地方,运行
sudo uwsgi uwsgi.ini
如果需要关闭uwsigi的话,运行下面的命令
sudo killall -9 uwsgi
等几秒,让程序完全关闭uwsgi进程
然后才能重新指定运行命令
四.静态文件的显示
当项目运行起来之后,可能会有静态文件和样式等不显示的情况,执行下面的命令,进行静态文件汇总
python manage.py collectstatic --noinput
因为我们在django的配置文件中进行了如下配置
STATIC_ROOT = os.path.join(BASE_DIR, 'all_static_files')
因此命令会把静态文件汇总到 all_static_files 文件夹之下了