该项目适合中小型公司日志查询工作。大型公司可以使用elk等。该系统其实就是调用了absible命令去查日志,然后把输出的信息输到页面查看。

日志查询系统

维护手册

作者:陈土锋

日期:2020年6月11日

目录

前言... 1

一、系统底层逻辑说明... 2

二、环境说明... 2

三、系统搭建... 2

3.1 安装Python3. 2

3.1.1 安装依赖环境... 2

3.1.2下载Python3. 3

3.1.3 安装Python3. 3

3.1.4 建立Python3和pip3的软链:. 3

3.1.5 并将/usr/local/python3/bin加入PATH. 3

3.2 安装虚拟环境... 4

3.2.1 生产环境虚拟环境包路径:... 4

3.2.2 先安装distlib-0.3.0.zip. 4

3.2.3 创建虚拟环境... 5

3.3 安装Django. 6

3.4 测试项目是否正常运行... 7

3.4.1 项目部署... 7

3.4.2 项目测试... 8

四、nginx+uwsgi+Django代理项目... 8

4.1 安装uwsgi 8

4.2 配置uwsgi 9

4.3 启动uwsgi 10

4.4 配置nginx 代理Django. 10

五、Django3.0.7安装... 12

前言

1、该程序是根据xxxxxx目前系统管理层面开发而成,故仅适用于xxxxxx系统平台。

2、该系统开发初心为减少运维协助研发查询线上生产日志、线上配置和线上其他环境而开发出来的。

3、架构使用了Python3+Django+uwsgi+nginx 基础架构。

4、底层调用ansible命令

一、系统底层逻辑说明

1.1 前端代码通过form表单提交用户交互信息到后端。

1.2 后端接受到输入信息,经过逻辑处理之后调用服务器的ansible命令来执行远程命令。

1.3 远程命令返回的结果,再通过文本格式展示到前端页面供用户查看。

1.4 如果文本文件行数过多,则用户可以通过下载的连接下载到文本到本地查看查看。

二、环境说明

2.1 服务器安装ansible命令(前提)

2.2 ansible服务器必须能通过下面命令格式去执行远程命令:

如:ansible slivr --sudo -m shell -a "ls -l "

如果是root用户则在sudoer文件加入root用户sudo权限即可,这样无需修改代码。

2.3 安装Python3

2.4 安装虚拟环境

2.5 安装Django 1.8 版本(最新版Django3.5需要改下代码的URL转发方式)

三、系统搭建

3.1 安装Python3

3.1.1 安装依赖环境

输入命令:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

3.1.2下载Python3

1.进入opt文件目录下,cd opt/

2.下载python3   (可以到官方先看最新版本多少)

输入命令 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz

3.1.3 安装Python3

安装在/usr/local/python3(具体安装位置看个人喜好)

(1)创建目录:  mkdir -p /usr/local/python3

(2)解压下载好的Python-3.x.x.tgz包(具体包名因你下载的Python具体版本不不同⽽而不不同,如:我下载的是Python3.7.1.那我这里就是Python-3.7.1.tgz)

输入命令 tar -zxvf Python-3.7.1.tgz

解压后出现python的文件夹

进入解压后的目录,编译安装。(编译安装前需要安装编译器yum install gcc)

(3)进入python文件夹,生成编译脚本(指定安装目录):

cd Python-3.7.1

./configure --prefix=/usr/local/python3

#/usr/local/python3为上面步骤创建的目录

(4)编译:make

(5)编译成功后,编译安装:make install

安装成功:

(6)检查python3.7的编译器:/usr/local/python3/bin/python3.7

3.1.4 建立Python3和pip3的软链:

ln -s /usr/local/python3/bin/python3 /usr/bin/python3

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

3.1.5 并将/usr/local/python3/bin加入PATH

(1)vim /etc/profile

(2)按“I”,然后贴上下面内容:

# vim ~/.bash_profile

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/python3/bin

export PATH

source ~/.bash_profile

3.2 安装虚拟环境

3.2.1 生产环境虚拟环境包路径:

需要用到下面这些包:可以用一台联网的linux系统用pip命令下载到本地再上传到离线的服务器。

appdirs-1.4.3-py2.py3-none-any.whl

distlib-0.3.0.zip

filelock-3.0.12-py3-none-any.whl

importlib_metadata-1.6.0-py2.py3-none-any.whl

importlib_resources-1.4.0-py2.py3-none-any.whl

pbr-5.4.5-py2.py3-none-any.whl

six-1.14.0-py2.py3-none-any.whl

stevedore-1.32.0-py2.py3-none-any.whl

virtualenv-20.0.18-py2.py3-none-any.whl

virtualenv_clone-0.5.4-py2.py3-none-any.whl

virtualenvwrapper-4.8.2-py2.py3-none-any.whl

zipp-3.1.0-py3-none-any.whl

3.2.2 先安装distlib-0.3.0.zip

unzip distlib-0.3.0.zip

cd distlib-0.3.0

python3 setup.py build

python3 setup.py install

再安装所有的whl包:

pip3 install *.whl

3.2.3 配置环境

mkdir /root/.virtualenvs

用locate virtualenvwrapper.sh 找出这个文件的路径,一般在安装的python3 bin目录下

vim ~/.bashrc

export WORKON_HOME=/root/.virtualenvs

source /usr/local/python3/bin/virtualenvwrapper.sh

vim  /usr/local/python3/bin/virtualenvwrapper.sh

找到VIRTUALENVWRAPPER_PYTHON关键字,在下面的if上面添加红色代码,python路径要对。

VIRTUALENVWRAPPER_PYTHON=/usr/local/python3/bin/python3

if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]

then

source ~/.bashrc

做virtualenv命令软连接:否则后续创建虚拟环境会报错

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

[root@ansible-server2 dwlirui2]# pip3 list --可以看到已经安装了上面的包()

Package Version

------------------- -------

appdirs 1.4.3

distlib 0.3.0

filelock 3.0.12

importlib-metadata 1.6.0

importlib-resources 1.4.0

pbr 5.4.5

pip 20.0.2

setuptools 39.0.1

six 1.14.0

stevedore 1.32.0

virtualenv 20.0.18

virtualenv-clone 0.5.4

virtualenvwrapper 4.8.2

zipp 3.1.0

3.2.3 创建虚拟环境

[root@ansible-server2 dwlirui2]# mkvirtualenv -p python3 env1

创建成功之后你会默认进入虚拟环境,如创建env1:

[root@ansible-server2 dwlirui2]# mkvirtualenv -p python3 env1

created virtual environment CPython3.6.5.final.0-64 in 1210ms

creator CPython3Posix(dest=/root/.virtualenvs/env3, clear=False, global=False)

seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/root/.local/share/virtualenv/seed-app-data/v1.0.1)

activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/predeactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/postdeactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/preactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/postactivate

virtualenvwrapper.user_scripts creating /root/.virtualenvs/env3/bin/get_env_details

(env1) [root@ansible-server2 dwlirui2]# 这个虚拟环境里面安装的软件和外面环境分开的

3.3 安装Django

通过旧的虚拟环境导出来的包:存放到requirements.txt文件里面。

旧环境登陆虚拟环境执行导出命令:pip3 freeze >requirements.txt

cat requirements.txt --下载如下包

certifi==2020.4.5.1

chardet==3.0.4

Django==1.8.2

idna==2.9

requests==2.23.0

urllib3==1.25.8

然后找一台测试环境能联网的机器下载这些包:

[root@vm44 django_instaa]# pip3 download -r requirements.txt

[root@vm44 django_instaa]# ls --总共下载了下面这么多包

backcall-0.1.0.tar.gz idna-2.9-py2.py3-none-any.whl

backcall-0.1.0.zip requests-2.23.0-py2.py3-none-any.whl

certifi-2020.4.5.1-py2.py3-none-any.whl requirements.txt

chardet-3.0.4-py2.py3-none-any.whl

distlib-0.3.0.zip urllib3-1.25.8-py2.py3-none-any.whl

Django-1.8.2-py2.py3-none-any.whl

scp * root@xx.xx.xx.xx:/data/python_install/django_install --把包传到远程离线服务器

离线服务器登陆虚拟环境

workon env1 --以下命令均在虚拟环境执行

cd /data/python_install/django_install

离线虚拟环境先安装:backcall-0.1.0.zip,distlib-0.3.0.zip

以安装backcall-0.1.0.zip为例:

unzip backcall-0.1.0.zip

cd backcall-0.1.0

python3 setup.py build

python3 setup.py install

再安装所有的whl包:

pip3 install *.whl

安装完了之后,确定是否存在下面这些包:

[root@ansible-server2 logs]# workon  env1

(env1) [root@ansible-server2 logs]# pip list

Package    Version

---------- ----------

backcall   0.1.0

certifi    2020.4.5.1

chardet    3.0.4

distlib    0.3.0

Django     1.8.2

idna       2.9

pip        20.0.2

requests   2.23.0

setuptools 46.1.3

urllib3    1.25.8

uWSGI      2.0.18

wheel      0.34.2

3.4 测试项目是否正常运行

我是通过虚拟环境搭建这个的,nginx安装到服务器上面,uwsgi和Django部署到虚拟环境上面。uwsgi和Django在虚拟环境启动。nginx 在服务器层面启动。

项目代码已经备份到10.1.164.15:/share/logs_bak/10.1.99.243/ logsquerybak/logsquery.20200601.tar.gz

3.4.1 项目部署

我的Django项目部署情况:

部署路径:

/biao/hly_yw_project/

即将logsquery.20200601.tar.gz 直接解压到/biao/hly_yw_project 目录。

manage.py 文件路径:/biao/hly_yw_project/logsquery/manage.py

wsgi.py 文件路径:/biao/hly_yw_project/logsquery/logsquery/wsgi.py

settings.py 文件路径:/biao/hly_yw_project/logsquery/logsquery/settings.py

查询出来的文件放到这里:

/biao/hly_yw_project/logsquery/queryapp/static/files/

目前只保留7天的文件:

0 2 * * * find /biao/hly_yw_project/logsquery/queryapp/static/files -name "*.txt" -mtime +7 -type f |xargs rm -f

项目结构是这样的:

3.4.2 项目测试

1、确保Django项目能够正常运行,即能够用Python3 manage.py runserver 0.0.0.0:8000 运行。

(env1) [root@ansible-server2 logs]# cd /biao/hly_yw_project/logsquery/

(env1) [root@ansible-server2 logs]# Python3 manage.py runserver 0.0.0.0:8000

用浏览器访问ip:8000看下能否正常访问下面页面。

四、nginx+uwsgi+Django代理项目

4.1 安装uwsgi

uwsgi是wsgi协议的实现服务。

我是离线安装的。

下载 uwsgi-2.0.18.tar.gz

可以找一台能够联网的服务器通过pip download 命令来下载,传到离线服务器上面。

解压安装:(在虚拟环境里面安装)

workon env1

tar zxf uwsgi-2.0.18.tar.gz

cd uwsgi-2.0.18

python3 setup.py build

python3 setup.py install

pip list 查看是否安装成功

uWSGI 2.0.18

4.2 配置uwsgi

mkdir /etc/uwsgi_conf/

cat /etc/uwsgi_conf/uwsgi.ini

# uwsig使用配置文件启动

[uwsgi]

# 项目所在的根目录

chdir=/biao/hly_yw_project/logsquery

# 指定项目的application,区别于启动命令--wsgi-filemysite/wsgi.py

#logsquery自己应用的名字

module=logsquery.wsgi:application

#the local unix socket file than commnuincate to Nginx

# 指定sock的文件路径,这个sock文件会在nginx的uwsgi_pass配置,用来nginx与uwsgi通信

# 支持ip+port模式以及socket file模式

#socket=/etc/uwsgi_conf/uwsgi.sock

socket=127.0.0.1:9050

# 进程个数

processes = 8

# 每个进程worker数

workers=5

procname-prefix-spaced=queryapp # uwsgi的进程名称前缀

py-autoreload=1 # py文件修改,自动加载

# 指定IP端口,web访问入口

http=0.0.0.0:9051

# 启动uwsgi的用户名和用户组

uid=root

gid=root

# 启用主进程

master=true

# 自动移除unix Socket和pid文件当服务停止的时候

vacuum=true

# 序列化接受的内容,如果可能的话

thunder-lock=true

# 启用线程

enable-threads=true

# 设置一个超时,用于中断那些超过服务器请求上限的额外请求

harakiri=30

# 设置缓冲

post-buffering=4096

# 设置日志目录

daemonize=/var/log/uwsgi_conf/uwsgi.log

# uWSGI进程号存放

pidfile=/etc/uwsgi_conf/uwsgi.pid

#monitor uwsgi status 通过该端口可以监控 uwsgi 的负载情况

# 支持ip+port模式以及socket file模式

# stats=%(chdir)/uwsgi_conf/uwsgi.status

4.3 启动uwsgi

cd /etc/uwsgi_conf/

uwsgi --ini uwsgi.ini

停止:

uwsgi --stop uwsgi.pid

4.4 配置nginx 代理Django

nginx添加一个server:

server {

listen       8000;

server_name  10.1.99.243;

#注释下面配置,同时支持https和http访问

#ssl on;

#access_log  off;

access_log /var/log/nginx/nginx.log;

error_log /var/log/nginx/nginx.log;

charset utf-8;

client_max_body_size 100M;

location /static{

alias /biao/hly_yw_project/logsquery/queryapp/static;

}

location /  {

include  /etc/nginx/uwsgi_params;

uwsgi_pass 0.0.0.0:9050;

proxy_read_timeout 3600s;

proxy_send_timeout 3600s;

uwsgi_read_timeout 600;

uwsgi_send_timeout 600;

uwsgi_connect_timeout 600;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

#使用497状态重写到http上面

}

重启nginx或者重载nginx

nginx -s reload

页面访问:

http://ip:8000即可访问Django项目

五、Django3.0.7安装

因1.8.2版本有漏洞,需要升级到最新版。最新版有些模块不兼容,代码也有些地方相对1.8.2的有改动。

Django3.0的需要用这个包:

10.1.99.243: /biao/hly_yw_project/logsquery.django3.0.7.tar.gz

其他应用安装方式不变,安装Django3.0.7方式。

安装包备份目录:

10.1.99.243: /usr/local/vvm/logs/django

10.1.164.15:/share/logs_bak/10.1.99.243/django

进入虚拟环境:

workon env1

#解压

tar zxf django3.0.tar.gz

#安装

pip install *whl

其他配置参考1.8.2的

Python Django项目日志查询系统的更多相关文章

  1. Python(Django)项目与Apache的管理

    (开开心心每一天~ ---虫瘾师) Python(Django)项目交给Apache的管理(一) 准备:Django的环境(Python).Apache.Wsgi(必须文件) 首先需要电脑有Pytho ...

  2. Python(Django)项目与Apache的管理交互

    (开开心心每一天~ ---虫瘾师) Python(Django)项目交给Apache的管理(一) 准备:Django的环境(Python).Apache.Wsgi(必须文件) 首先需要电脑有Pytho ...

  3. jt项目日志查询流程

    jt项目日志查询流程

  4. Django项目在linux系统中虚拟环境部署

    1.在linux系统下,安装virtualenv 命令:pip install virtualenv 2.项目部署前的准备 1. Django web project deployment 1.1.  ...

  5. Python Django项目部署 Linux 服务器

    项目依赖: Linux Centos7 (阿里云轻量级服务器) + Python 3.7.2 + Django 2.2.1 + restframework 3.9.4 + mysql 5.7 1 安装 ...

  6. ELK入门级介绍--打造实时日志查询系统

    这几天一直在研究ElasticSearch,在网上看到一篇好的文章和大家分享. ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自:http://baidu.b ...

  7. python - django 项目部署 Ubuntu 服务器后接口访问一直 502 问题

    问题描述:最近有了一台 Ubuntu 的服务器,然后准备部署个项目,结果没想到部署的过程跟用 Centos 的时候还有点不一样,最后一步我是卡在了 uwsgi 这里,访问一直502,且可以访问项目的静 ...

  8. Django项目之打分系统

    打分系统 关注公众号"轻松学编程"了解更多. 项目GitHub地址:https://github.com/liangdongchang/VoteSys.git 1.开发需求 a. ...

  9. Django 项目搭建(ubuntu系统)

    1 环境搭建 sudo apt-get install python3-pip 安装pip3 sudo pip3 install virtualenv 安装虚拟环境,这里展示virtualenv vi ...

随机推荐

  1. 记一次mybatis-plus遇到的问题

    在用了 springboot 和 mybatis-plus很久之后, 有一天突然看到配置文件有点繁杂, 想将相同的配置拉到application.yml里, 就在将配置拉过去后, 问题就开始出现了. ...

  2. 详解java接口interface

    引言 接口这个词在生活中我们并不陌生. 在中国大陆,我们可以将自己的家用电器的插头插到符合它插口的插座上: 我们在戴尔,惠普,联想,苹果等品牌电脑之间传输数据时,可以使用U盘进行传输. 插座的普适性是 ...

  3. (八)React Ant Design Pro + .Net5 WebApi:后端环境搭建-Aop

    一.Aop Aop 面向切面编程(Aspect Oriented Program),在项目中,很多地方都会用到Aop的概念,比如:过滤器(Filter),中间件(Middleware) 通常用来处理数 ...

  4. 通信原理:基于MATLAB的AM调幅分析

    目的: 通过matlab仿真AM调制,通过图像分析来更好的了解AM调制的过程 1.为什么基带信号要加上一个直流分量. 2.所加直流分量为什么要大于基带信号的最大值. 3.时域中调制信号与载波和基带信号 ...

  5. Source Code Reading for Vue 3: How does `hasChanged` work?

    Hey, guys! The next generation of Vue has released already. There are not only the brand new composi ...

  6. 高并发之 API 接口,分布式,防刷限流,如何做?

    在开发分布式高并发系统时有三把利器用来保护系统:缓存.降级.限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解 ...

  7. 韦东山 嵌入式linux教程 笔记

    @ 目录 资源链接 一.常用命令 二.shell 三.如何更改PATH? 四.路径 五.vi编辑器 六.进阶命令 七.NAT配置网络 (第2篇-P34) 八.开发板挂载 Ubuntu 的 NFS 目录 ...

  8. xilinx SDK在线仿真_烧写 提示失败

    1.找到工程目录下的Binaries->xxx.elf-[arm/le] . 2.右击该elf,选择Debug As->Debug Configurations... 进入设置界面. 3. ...

  9. path()和re_path()用法&区别

    path() 参数列表: 参数1:字符串类型,用来匹配请求路径 参数2:指定路径所对应的视图函数名 参数3:关键字参数 实际用的不多 参数4... # urls.py # 创建子应用的路由文件 fro ...

  10. python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)

    经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路. 我们在百度搜索天气查询,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接 ...