天天看點

django開發筆記及如何利用pycharm釋出到阿裡雲

作者:13妖工作室

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 上傳至阿裡雲

django開發筆記及如何利用pycharm釋出到阿裡雲
django開發筆記及如何利用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()           

繼續閱讀