Django 環(huán)境搭建

安裝 Django

先安裝 PIP献丑,再通過 PIP 安裝 Django

安裝 PIP

cd /data;

mkdir tmp;

cd tmp;

wget https://bootstrap.pypa.io/get-pip.py;

python ./get-pip.py;

使用 PIP对妄,安裝 Django

pip install Django==1.11.7

安裝 Mysql

安裝并啟動(dòng) mariadb

因?yàn)?CentOS 7 之后的版本都不在提供 Mysql 安裝源,這里我們使用 mariadb 代替 mysql,依次執(zhí)行下列命令

yum install mariadb mariadb-server -y

yum install MySQL-python -y

systemctl start mariadb

對 mariadb 進(jìn)行初始化設(shè)置

執(zhí)行下面命令,根據(jù)提示操作

設(shè)置新密碼為 test

默認(rèn)密碼為空,直接回車即可

mysql_secure_installation

使用設(shè)置的密碼登陸 mariadb

登陸 db闯团,這里假設(shè)密碼被設(shè)置為 test

mysql -uroot -ptest

創(chuàng)建一個(gè)數(shù)據(jù)庫

create database mysite;

成功后,輸入 exit 命令退出 db

exit

創(chuàng)建 Django 項(xiàng)目

創(chuàng)建 mysite 項(xiàng)目

在 /data/ 目錄下仙粱,創(chuàng)建一個(gè)名為 mysite 的 Django 項(xiàng)目

cd /data/

django-admin startproject mysite

修改配置文件房交,與 Mysql 數(shù)據(jù)庫相關(guān)聯(lián)

備注:SECRET_KEY 配置項(xiàng)無需修改

編輯 /data/mysite/mysite/settings.py

示例代碼:/data/mysite/mysite/settings.py

"""

Django settings for mysite project.

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

For more information on this file, see

https://docs.djangoproject.com/en/1.11/topics/settings/

For the full list of settings and their values, see

https://docs.djangoproject.com/en/1.11/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/1.11/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!

SECRET_KEY = 'm4@g1=hz^08y(9d)v5l!8^*0wbla=oe15s@u8@5^pw=llfz48%'

# 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 = 'mysite.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 = 'mysite.wsgi.application'

# Database

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

DATABASES = {

? ? 'default': {

? ? ? ? 'ENGINE': 'django.db.backends.mysql',

? ? ? ? 'NAME': 'mysite',

? ? ? ? 'PASSWORD':'test',

? ? ? ? 'USER': 'root',

? ? ? ? '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 = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

# Static files (CSS, JavaScript, Images)

# https://docs.djangoproject.com/en/1.11/howto/static-files/

STATIC_URL = '/static/'

創(chuàng)建 Django 數(shù)據(jù)庫

cd /data/mysite

python manage.py migrate

啟動(dòng) Django

python manage.py runserver

如果沒有報(bào)錯(cuò),就說明 Django 已經(jīng)安裝成功了伐割,并且跟 Mysql 的連接正常

退出 Django

按 ctrl+c 退出 Django 服務(wù)

安裝 Nginx

通過 yum 安裝 Nginx

yum install nginx -y

啟動(dòng) Nginx 服務(wù)

systemctl start nginx

訪問下面的鏈接候味,可以看到 nginx 的歡迎界面

http://<您的 CVM IP 地址>/

安裝 uwsgi

任務(wù)時(shí)間:5min ~ 10min

使用 yum 命令安裝 uwsgi

yum install uwsgi uwsgi-plugin-python -y

讓 Nginx,uwsgi隔心,Django 協(xié)同工作

修改 Nginx 配置文件

編輯 /etc/nginx/nginx.conf

示例代碼:/etc/nginx/nginx.conf

# For more information on configuration, see:

#? * Official English Documentation: http://nginx.org/en/docs/

#? * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

events {

? ? worker_connections 1024;

}

http {

? ? log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '

? ? ? ? ? ? ? ? ? ? ? '$status $body_bytes_sent "$http_referer" '

? ? ? ? ? ? ? ? ? ? ? '"$http_user_agent" "$http_x_forwarded_for"';

? ? access_log? /var/log/nginx/access.log? main;

? ? sendfile? ? ? ? ? ? on;

? ? tcp_nopush? ? ? ? ? on;

? ? tcp_nodelay? ? ? ? on;

? ? keepalive_timeout? 65;

? ? types_hash_max_size 2048;

? ? include? ? ? ? ? ? /etc/nginx/mime.types;

? ? default_type? ? ? ? application/octet-stream;

? ? # Load modular configuration files from the /etc/nginx/conf.d directory.

? ? # See http://nginx.org/en/docs/ngx_core_module.html#include

? ? # for more information.

? ? include /etc/nginx/conf.d/*.conf;

? ? server {

? ? ? ? listen? ? ? 80 default_server;

? ? ? ? listen? ? ? [::]:80 default_server;

? ? ? ? server_name? _;

? ? ? ? root? ? ? ? /usr/share/nginx/html;

? ? ? ? # Load configuration files for the default server block.

? ? ? ? include /etc/nginx/default.d/*.conf;

? ? ? ? location / {

? ? ? ? ? ? include uwsgi_params;

? ? ? ? ? ? uwsgi_pass 127.0.0.1:8000;

? ? ? ? }

? ? ? ? error_page 404 /404.html;

? ? ? ? ? ? location = /40x.html {

? ? ? ? }

? ? ? ? error_page 500 502 503 504 /50x.html;

? ? ? ? ? ? location = /50x.html {

? ? ? ? }

? ? }

# Settings for a TLS enabled server.

#

#? ? server {

#? ? ? ? listen? ? ? 443 ssl http2 default_server;

#? ? ? ? listen? ? ? [::]:443 ssl http2 default_server;

#? ? ? ? server_name? _;

#? ? ? ? root? ? ? ? /usr/share/nginx/html;

#

#? ? ? ? ssl_certificate "/etc/pki/nginx/server.crt";

#? ? ? ? ssl_certificate_key "/etc/pki/nginx/private/server.key";

#? ? ? ? ssl_session_cache shared:SSL:1m;

#? ? ? ? ssl_session_timeout? 10m;

#? ? ? ? ssl_ciphers HIGH:!aNULL:!MD5;

#? ? ? ? ssl_prefer_server_ciphers on;

#

#? ? ? ? # Load configuration files for the default server block.

#? ? ? ? include /etc/nginx/default.d/*.conf;

#

#? ? ? ? location / {

#? ? ? ? }

#

#? ? ? ? error_page 404 /404.html;

#? ? ? ? ? ? location = /40x.html {

#? ? ? ? }

#

#? ? ? ? error_page 500 502 503 504 /50x.html;

#? ? ? ? ? ? location = /50x.html {

#? ? ? ? }

#? ? }

}

重啟 Nginx

/usr/sbin/nginx -s reload

創(chuàng)建 uwsgi 配置文件

請?jiān)?/data/mysite?目錄下創(chuàng)建 uwsgi.ini白群,參考下面的內(nèi)容。

示例代碼:/data/mysite/uwsgi.ini

[uwsgi]

socket = 127.0.0.1:8000

chdir = /data/mysite

wsgi-file = mysite/wsgi.py

processes = 4

threads = 2

stats = 127.0.0.1:9191

uid = nobody

gid = nobody

master = true

harakiri = 30

daemonize = /data/mysite/uwsgi.log

plugins = python

啟動(dòng) uwsgi

uwsgi uwsgi.ini

測試

訪問鏈接 http://<您的? IP 地址>/?

如果可以看到 Django 的界面硬霍,恭喜你帜慢,環(huán)境搭建成功

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市唯卖,隨后出現(xiàn)的幾起案子粱玲,更是在濱河造成了極大的恐慌,老刑警劉巖耐床,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件密幔,死亡現(xiàn)場離奇詭異,居然都是意外死亡撩轰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門昧廷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堪嫂,“玉大人,你說我怎么就攤上這事木柬〗源” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵眉枕,是天一觀的道長恶复。 經(jīng)常有香客問我怜森,道長,這世上最難降的妖魔是什么谤牡? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任副硅,我火速辦了婚禮,結(jié)果婚禮上翅萤,老公的妹妹穿的比我還像新娘恐疲。我一直安慰自己,他們只是感情好套么,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布培己。 她就那樣靜靜地躺著,像睡著了一般胚泌。 火紅的嫁衣襯著肌膚如雪省咨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天玷室,我揣著相機(jī)與錄音茸炒,去河邊找鬼。 笑死阵苇,一個(gè)胖子當(dāng)著我的面吹牛壁公,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绅项,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼紊册,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了快耿?” 一聲冷哼從身側(cè)響起囊陡,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掀亥,沒想到半個(gè)月后撞反,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搪花,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年遏片,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撮竿。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吮便,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幢踏,到底是詐尸還是另有隱情髓需,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布房蝉,位于F島的核電站僚匆,受9級特大地震影響微渠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咧擂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一逞盆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屋确,春花似錦纳击、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刨啸,卻和暖如春堡赔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背设联。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工善已, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人离例。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓换团,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宫蛆。 傳聞我的和親對象是個(gè)殘疾皇子艘包,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容