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文件# 重启

相关文章
相关标签/搜索