django網站開發
django-admin startproject projectname
cd projectname
Django-admin startapp appname
安裝應用:setting.py
Installed_apps[ ' appname ' ]
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',
],
},
},
]
Url.py
from django.contrib import admin
from django.urls import path
from index.views import html_index,api,index
urlpatterns = [
path('admin/', admin.site.urls),
path('test/',index),
path('',html_index),
path('api/', api)
]
views.py
def index(request):
return HttpResponse('hello world')
def html_index(request):
return render(request,'index.html',{'name':'Django'})
python manage.py makemigrations
python manage.py migrate
管理者 admin
python manage.py createsuperuser
利用pycharm 上傳至阿裡雲
伺服器配置
python3.6 更新3.7
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.7
将Python 3.6和Python 3.7添加到更新替代項
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
輸入以下指令以配置python3:
sudo update-alternatives --config python3
鍵入2并按Enter鍵以使用Python 3.7
1.安裝nginx
sudo apt-get update
sudo apt-get install nginx
2 運作(啟動)nginx
nginx
3 伺服器檢視運作狀态 或浏覽器打開
curl 120.25.120.188:80
停止/重新開機 nginx
nginx -s stop/reload
安裝uwsgi
sudo apt-get install uwsgi
安裝Pip
apt install python-pip
安裝Django2.2
pip3 install Django==2.2
使用Gunicorn 運作Django
1.安裝 pip3 install gunicorn
2.建立檔案gunicorn_config.py
# -*- coding: utf-8 -*-
import multiprocessing
# 服務監聽的IP和端口
bind = "0.0.0.0:8000"
# 最大挂起連接配接數
backlog = 2048
# 工作程序的數量,按照業務需求配置,這裡設定為CPU核數*2再加1
workers = multiprocessing.cpu_count() * 2 + 1
# 工作程序的模式。
# sync對應同步模式;eventlet和gevent對應異步模式
worker_class = 'sync'
# 單個程序處理請求的線程數
threads = 1
# 單工作程序最大連接配接數量
worker_connections = 1000
# 工作程序在重新開機前累計處理的請求數,設定為0不重新開機
max_requests = 0
# 防止工作程序同時被重新開機,讓各個工作程序在重新開機前處理的請求的數量不一緻
max_requests_jitter = 0
# 工作程序逾時時間
timeout = 30
# 在工作程序收到重新開機信号能用于處理請求的時間
graceful_timeout = 30
keep_alive = 2
# 在應用加載前切換工作目錄
chdir = ""
# Gunicorn是否在背景運作
daemon = False
# 運作Gunicorn程序的使用者
user = None
# 運作Gunicorn程序的使用者組
group = None
# 請求日志格式
access_logformat = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s %(a)s"'
# 記錄錯誤日志的檔案
error_logfile = "-"
# 日志級别
log_level = "info"
# 下面是Gunicorn提供的鈎子函數
def on_starting(server):
# 在主程序初始化之前調用
pass
def on_reload(server):
# 在工作程序收到SIGHUP信号後調用
pass
def when_ready(server):
# 在伺服器啟動後調用
pass
def pre_fork(server, worker):
# 在工作程序被建立前被調用
pass
def post_fork(server, worker):
# 在工作程序被建立後被調用
pass
def post_worker_init(worker):
# 在工作程序初始化應用後被調用
pass
def worker_init(worker):
# 在工作程序接收SIGINT或SIGQUIT信号,退出後被調用
pass
def worker_abort(worker):
# 在工作程序接收SIGABRT信号時被調用,一般在工作程序逾時時發出SIGABRT信号
pass
def pre_exec(server):
# 在主程序建立前被調用
pass
def pre_request(worker, req):
# 在工作程序接受請求前被調用
worker.log.debug("%s %s" % (req.method, req.path))
def post_request(worker, req, environ, resp):
# 在工作程序處理請求後被調用
pass
def worker_exit(server, worker):
# 在工作程序退出時被調用
pass
def nworkers_changed(server, new_value, old_value):
# 在工作程序數量變化時被調用
pass
def on_exit(server):
# 在退出Gunicorn的時候被調用
pass
3.運作:進入項目目錄:gunicorn MyStockWeb.wsgi -c gunicorn_config.py
坑:需去除所有的 print 語句 否則 調用python程式會出現 500 Internal Server Error
擷取Gunicorn程序樹:
pstree -ap|grep gunicorn
重新開機Gunicorn任務
kill -HUP 30080
退出Gunicorn任務
kill -9 30080
安裝mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
mysql -u root -p
#權限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
使用sql語句修改root密碼
use mysql;
update user set authentication_string=PASSWORD("這裡輸入你要改的密碼") where User='root';
更新系緩存密碼
update user set plugin="mysql_native_password"
重新整理操作權限
flush privileges;
#建立資料庫
create database mystock default charset utf8;
坑:提示解決:django中LookupError No installed app with label 'admin'
将django替換成2.1.8版本
pip3 install django==2.1.8
pip install PyMySQL
找到mysite/mysite/init.py,在裡面輸入以下内容并儲存:
import pymysql
pymysql.install_as_MySQLdb()