Django简单项目的部署

一.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 文件夹之下了

发布了19 篇原创文章 · 获赞 2 · 访问量 6561

猜你喜欢

转载自blog.csdn.net/feyehong/article/details/102919612