Linux 下部署 Django 环境

目录

蓝鲸智云

  1. 安装基础环境
  2. 初始化 Python 项目
  3. 配置 uwsgi

1、安装基础环境

安装 Nginx 

这里使用 Nginx 作为 web 服务器.

yum install nginx

安装结束执行命令启动 Nginx

systemctl start nginx.service
systemctl enable nginx.service

安装 Python 环境<版本可以自由调换>

安装python3.6

yum install https://centos7.iuscommunity.org/ius-release.rpm -y 
yum install python36u  -y
yum install python36u-pip python36u-devel  -y

为了pip速度更快一些,这里教大家配置一下 pip 的清华镜像

先创建文件夹用来放配置文件

mkdir ~/.config/pip/

接着在文件内添加代码   /.config/pip/pip.conf

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

 安装MySQL

这里使用 --------MariaDB

yum install mariadb mariadb-server -y 
systemctl start mariadb.service
systemctl enable mariadb.service

完成后 输入如下命令执行数据库初始化 并设置 root 密码 <密码默认为空>

mysql_secure_installation

2、初始化python项目

first 创建虚拟环境
cd /home/
mkdir django
cd django
python3.6 -m venv venv

next 激活环境
source venv/bin/activate

next 安装 Django 初始化 项目
pip install django
django-admin startproject my
cd my 
python manage.py startapp mine

3、创建App之后 需要修改settings.py的配置

"""
Django settings for my project.

Generated by 'django-admin startproject' using Django 2.0.5.

For more information on this file, see
https://docs.djangoproject.com/en/2.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.0/ref/settings/
"""

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__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '^p3prd2a*$y-#n%jy2#@)setwu(1+yv#2kas4l*4r5_ss&+3zm'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['*']


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

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 = 'my.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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 = 'my.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.0/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/2.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/

STATIC_URL = '/static/'

4、运行 

python /home/django/my/manage.py runserver 0.0.0.0:80

在无报错的情况下 在浏览器地址栏输入ip地址会出现相对于的界面

5、配置 uwsgi

deactivate
这条命令指的是退出虚拟环境

安装 uwsgi
yum install gcc -y
python3.6 -m pip install uwsgi

安装成功后 执行下行代码 目的是用 uwsgi 来启动 Django
uwsgi --http :80 --chdir /home/django/my --home=/home/django/venv --module my.wsgi

这个时候 浏览器输入 ip 地址 看看是否显示 django 的测试页面

配置 uwsgi
创建一个目录来放置 django 的配置文件,并且在此目录下创建一个文件 uwsgi.ini
mkdir -p /home/django_conf

[uwsgi]
socket = /home/django_conf/my.sock
chdir = /home/django/my
wsgi-file = my/wsgi.py
plugins = python
virtualenv = /home/django/venv/
processes = 2
threads = 4
chmod-socket = 664
chown-socket = nginx:nginx
vacuum = true

6、配置 Nginx

接下来 创建 配置 Nginx 的配置文件

进入nginx/conf.d/my.conf

server {
    listen      80;
    server_name < IP 地址>;
    charset     utf-8;

    client_max_body_size 75M;

    location /media  {
        alias /home/django/my/media;
    }

    location /static {
        alias /home/django/my/static;
    }

    location / {
        uwsgi_pass  unix:///home/django_conf/my.sock;
        include     /etc/nginx/uwsgi_params;
    }
}

完毕后 重启 Nginx

systemctl restart nginx.service

7、最后一步 <持久运行 Django>

配置 Supervisord ,确保 django 可以持久运行

安装 Supervisord

yum install python-pip -y
安装完成后,使用 pip 来安装 supervisord,并输出配置文件

python -m pip install supervisor
echo_supervisord_conf > /etc/supervisord.conf
并在配置文件(/etc/supervisord.conf)底部添加如下代码

[program:my]
command=/usr/bin/uwsgi --ini /home/django_conf/uwsgi.ini
directory=/home/django/my
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
添加完成后,执行如下命令来启动 supervisord

supervisord -c /etc/supervisord.conf
最后-----------------------------可以访问 http://< IP 地址> 查看网站

猜你喜欢

转载自www.cnblogs.com/xiaolizikj/p/11700290.html