热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dapi基于Django的轻量级测试平台七怎样部署到生产环境

前置条件:以下所有操作均在root账号下面进行如果不是root用户请注意权限问题因为是自己搭的服务器所以无所谓安全问题如果是公司的服务器请不要使用root账号一、安装uWSGI服务

前置条件:
以下所有操作均在root账号下面进行
如果不是root用户
请注意权限问题
因为是自己搭的服务器
所以无所谓安全问题
如果是公司的服务器
请不要使用root账号

 

一、安装uWSGI服务器:

当我们在本地运行Django时

一般是python manage.py runserver

但是在服务器上面是结合uWSGI

 

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
创建软连接

 

uwsgi.ini文件:

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

chdir = /django/dapi
# 工程的绝对路径
wsgi-file = dapi/wsgi.py
# wsgi.py的相对路径

master = true
# 启用主进程
processes = 4
# 4个线程
threads = 2
# 2个进程
# uWSGI默认单个进程和单个线程

max-????requests = 65535
# 最大并发请求数

stats = 127.0.0.1:9191
# stats子系统将uWSGI的内部统计信息导出为JSON

vacuum = true
# 当服务停止的时候,自动移除Unix Socket和pid文件

pid = %(chdir)/uwsgi.pid??????
# pid

daemOnize= %(chdir)/uwsgi.log
# 使进程在后台运行,并将日志打到指定的日志文件

 

二、上传代码:


mkdir /django
在根目录下面创建django目录
把dapi工程代码上传到此目录下面

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
安装工程所需的依赖

 

三、迁移MySQL数据库:

技术分享图片

 

 

 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注释掉

 

请注意:
迁移之前要把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
    url(‘^pyecharts/‘, include(‘interface.urls‘)),
    
File "/django/dapi/interface/urls.py", line 3, in
    from interface import pyecharts
File "/django/dapi/interface/pyecharts.py", line 45, in
    product_count = ProductInfo.objects.all().count()

当我们在激活模型时,
程序已经开始执行了,
但是在url.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收集静态资源文件了

 

四、配置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服务

技术分享图片

 

 

 

五、Web页面:


访问http://192.168.1.111/

技术分享图片

 

 

 

后台http://192.168.1.111/admin/

技术分享图片

 


推荐阅读
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • Linux中的yum安装软件
    yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ... [详细]
  • 鼠标悬停出现提示信息怎么做
    概述–提示:指启示,提起注意或给予提醒和解释。在excel中会经常用到给某个格子增加提醒信息,比如金额提示输入数值或最大长度值等等。设置方式也有多种,简单的,仅为单元格插入批注就可 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • Django xAdmin 使用指南(第一部分)
    本文介绍如何在Django项目中集成和使用xAdmin,这是一个增强版的管理界面,提供了比Django默认admin更多的功能。文中详细描述了集成步骤及配置方法。 ... [详细]
  • Python Django大学生心理健康管理系统开发(含源码、文档)
    本项目包含完整的源代码、设计文档、数据库结构以及详细的安装指南,旨在为计算机专业的学生提供一个全面的心理健康管理系统解决方案。 ... [详细]
  • 气象对比分析
    本文探讨了不同地区和时间段的天气模式,通过详细的图表和数据分析,揭示了气候变化的趋势及其对环境和社会的影响。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 本文详细介绍了如何下载并安装 Python,包括选择合适的版本、执行安装程序以及设置环境变量的步骤。此外,还提供了测试安装是否成功的简单方法。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 探讨在海外服务器上使用 sudo npm install -g cordova 时遇到的安装失败问题,并提供详细的解决方案和建议。 ... [详细]
author-avatar
泽儿0818_833
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有