热门标签 | 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/

技术分享图片

 


推荐阅读
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ... [详细]
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 几何画板展示电场线与等势面的交互关系
    几何画板是一款功能强大的物理教学软件,具备丰富的绘图和度量工具。它不仅能够模拟物理实验过程,还能通过定量分析揭示物理现象背后的规律,尤其适用于难以在实际实验中展示的内容。本文将介绍如何使用几何画板演示电场线与等势面之间的关系。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • MATLAB实现n条线段交点计算
    本文介绍了一种通过逐对比较线段来求解交点的简单算法。此外,还提到了一种基于排序的方法,但该方法较为复杂,尚未完全理解。文中详细描述了如何根据线段端点求交点,并判断交点是否在线段上。 ... [详细]
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社区 版权所有