dapi 基於Django的輕量級測試平臺七 怎樣部署到生產環境

QQ羣:529063263html

GitHub:https://github.com/yjlch1016/dapipython

 

Nginx+uWSGImysql

 

前置條件:
如下全部操做均在root帳號下面進行
若是不是root用戶
請注意權限問題
由於是本身搭的服務器
因此無所謂安全問題
若是是公司的服務器
請不要使用root帳號nginx

 

1、安裝uWSGI服務器:git

當咱們在本地運行Django時
通常是python manage.py runserver
可是在服務器上面是結合uWSGI github

pip install uwsgi
安裝uWSGI
uWSGI是Python的Web服務器
相似於Java的Tomcat

find / -name uwsgi
找到uwsgi的執行位置

ln -s /usr/local/python/bin/uwsgi /usr/bin/uwsgi
建立軟鏈接

pip install uwsgitop
安裝uWSGI性能監控庫
相似於top命令

find / -name uwsgitop
找到uwsgitop的執行位置

ln -s /usr/local/python/bin/uwsgitop /usr/bin/uwsgitop
建立軟鏈接redis

 

uwsgi.ini文件:sql

[uwsgi]
socket = 127.0.0.1:3031
# Socket套接字

chdir = /django/dapi
# 工程的絕對路徑
wsgi-file = dapi/wsgi.py
# wsgi.py的相對路徑

master = true
# 啓用主進程
processes = 4
# 4個線程,每一個進程有2個線程
threads = 2
# 2個進程
# uWSGI默認單個進程和單個線程

uid = root
gid = root
# 啓動uwsgi的用戶名和用戶組

buffer-size = 65535
# 內部緩存區大小爲64k,默認4k
max-​​​​requests = 65535
# 每一個進程的最大請求數

stats = 127.0.0.1:9191
# stats子系統將uWSGI的內部統計信息導出爲JSON
memory-report = true
# 開啓內存使用狀況報告

pidfile = %(chdir)/uwsgi.pid​​​​​​
# pid

vacuum = true
# 當服務中止的時候,自動清理Unix Socket和pid文件

#logto = %(chdir)/uwsgi.log
daemonize = %(chdir)/uwsgi.log
# 使進程在後臺運行,並將日誌打到指定的日誌文件

 

2、上傳代碼:數據庫

由於本次是演示
因此直接把代碼上傳到服務器上面了
在實際的生活中
請按照規範流程git push到倉庫
否則要被打shidjango


mkdir /django
在根目錄下面建立django目錄
把dapi工程代碼上傳到此目錄下面

若是以前運行過而且上傳過文件
把/dapi/media/jmeter目錄刪掉
以避免佔磁盤空間
若是沒有
則不用管


chmod -R 777 /django
賦予此目錄及其全部的子目錄最高讀寫權限

cd /django/dapi
進入dapi工程根目錄

pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2
安裝適配Django2.0之後版本的xadmin

pip install -r requirements.txt
安裝工程所需的依賴

 

修改dapi/settings.py配置文件

把DEBUG = True改成
DEBUG = False

把ALLOWED_HOSTS = []改成
ALLOWED_HOSTS = ["*"]
或者指定的IP列表
ALLOWED_HOSTS = ["IP1", "IP2", "IP3"]

 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dapi',
        'HOST': '192.168.1.111',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': 'Abcdef@123456',
    }
}
# MySQL數據庫

 

CELERY_BROKER_URL = 'redis://:Abcdef@123456@192.168.1.111:6379/0'
# redis://:password@hostname:port/db_number
CELERY_BROKER_TRANSPORT = 'redis'
# 使用redis做爲中間件

 

3、遷移MySQL數據庫:

新建dapi庫

 

PyMySQL年久失修,
對Django2.0之後的版本支持不是很好
有2個小BUG
vim /usr/local/python/lib/python3.6/site-packages/django/db/backends/mysql/base.py
把第35~36行註釋掉
vim /usr/local/python/lib/python3.6/site-packages/django/db/backends/mysql/operations.py
把第145~146行註釋掉

 

請注意:
遷移以前要把/dapi/interface/migrations目錄下面除了__init__.py之外的全部文件都刪掉
若是以前沒有運行過
則不用管


python manage.py makemigrations
激活模型

報錯:

django.db.utils.ProgrammingError: (1146, "Table 'dapi.product_info' doesn't exist")


分析了一下緣由:
mysql服務已經啓動了
IP、端口、帳號與密碼都是對的呀
如今是直接鏈接本機的mysql
不存在root遠程訪問的問題
何況在安裝mysql時已經打開了root帳號的遠程訪問權限

繼續往上找:
(找跟dapi工程相關的報錯信息,而不是找Python源碼相關的報錯信息)
File "/django/dapi/dapi/urls.py", line 136, in <module>
    url('^pyecharts/', include('interface.urls')),
    
File "/django/dapi/interface/urls.py", line 3, in <module>
    from interface import pyecharts
File "/django/dapi/interface/pyecharts.py", line 45, in <module>
    product_count = ProductInfo.objects.all().count()

當咱們在激活模型時
程序已經開始執行了
可是在urls.py文件下未能找到所需的表
因而便會出現報錯

vim /django/dapi/dapi/urls.py
把第136行註釋掉
等遷移完成後再恢復

python manage.py makemigrations
從新激活模型

此次成功了

 

python manage.py migrate
遷移

python manage.py createsuperuser
建立超級管理員帳號

 

由於靜態文件我已經放在工程的static目錄下面了

因此不用再python manage.py collectstatic收集靜態資源文件了

 

4、配置Nginx:

vim /usr/local/nginx/conf/nginx.conf
修改nginx配置文件

         location / {
                 include uwsgi_params;
                 uwsgi_pass 127.0.0.1:3031;
         }
 
         location /static {
                 alias /django/dapi/static/;
                 index  index.html index.htm;
         }
 
         location /media  {
                 alias /django/dapi/media/;
         }

systemctl restart nginx
重啓nginx服務

uwsgi uwsgi.ini
啓動uwsgi服務

 

ls -a
查看dapi工程目錄下面的全部文件

 

tail -f uwsgi.log
查看日誌

 

5、Web頁面:


訪問http://192.168.1.111/

 

後臺http://192.168.1.111/admin/

 

tail -f uwsgi.log
查看日誌

 

uwsgitop :9191
監控uwsgi性能

這個界面按Q退出

 

6、uwsgi命令:

uwsgi --ini uwsgi文件
# 啓動

uwsgi --stop pid文件
# 中止

uwsgi --reload pid文件# 重啓

相關文章
相關標籤/搜索