HttprunnerManager部署笔记
组策略开放协议端口
TCP 8000 httprunner
TCP 80 nginx
TCP 15672 rabbitMQ2
TCP 5672 rabbitMQ
TCP 3306 mysql
TCP 22 SSH
TCP 5555 flower
镜像源
-i https://mirrors.aliyun.com/pypi/simple
-i https://pypi.tuna.tsinghua.edu.cn/simple
-i http://pypi.douban.com/simple/
修改镜像源(先安装python3.6.3并配置完软链再来改,不改镜像下载依赖会很慢)
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple
依赖安装
Python3.6.3
前置编译环境(没有编译环境python在gcc编译时会报错)
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
Python3.6.3 华为云镜像
wget https://mirrors.huaweicloud.com/python/3.6.3/Python-3.6.3.tgz
下载到 /home 路径
解压命令
tar -xvzf Python.3.6.3.tgz
修改编译文件 /Modules/Setup,防止发生 _ssl 无法 import 问题
大概在205行,打开注释
# Socket module helper for socket(2)
_socket socketmodule.c
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
进入Python3.6.3目录,执行命令安装
./configure --prefix=/usr/local/python3
make -j2
make install -j2
构建python3 软链
ln -sf /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -sf /usr/local/python3/bin/pip3 /usr/bin/pip3
升级一下pip3 至21.2.3版本
python3 -m pip install --upgrade pip==21.2.3
MySQL5.7部署
主目录
/usr/local/mysql57
进入主目录用wget 下载.rpm包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装rpm源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum install mysql-devel
安装mysql 服务(需要禁用gpg检测)
yum -y install mysql-community-server --nogpgcheck
启用mysql 服务
systemctl start mysqld
查看mysql 服务状态
systemctl status mysqld
如果为如下情况则启动成功
mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-02-15 22:26:37 CST; 2min 48s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 18168 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 18118 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 18172 (mysqld)
CGroup: /system.slice/mysqld.service
└─18172 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/my...
设置开机启动
systemctl enable mysqld
修改mysql密码安全策略
vim /etc/my.cnf
在[mysqld] 中添加配置
server-id = 1
plugin-load = validate_password.so
validate_password_policy = LOW
validate_password_special_char_count = 1
validate_password_number_count = 1
validate_password_mixed_case_count = 1
validate_password_length = 4
validate-password = FORCE_PLUS_PERMANENT
character_set_server=utf8
init_connect='SET NAMES utf8'
记得重新启动下Mysql服务让配置生效
systemctl restart mysqld
修改root密码
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
set password for 'root'@'localhost'=password('daixuwei123123');
可以退出重新登陆下看生效没
允许远程登陆
服务器登陆mysql并执行以下命令
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'daixuwei123123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
可以用dbeaver远程连接测试一下看看行不行
httprunnermanager项目部署
主文件目录
/home/HttpRunnerManager-master
安装轮子(实测50版本的setuptools安装比较快,且不报错)
pip3 install wheel
pip3 install --upgrade setuptools==50.3.2
安装前置依赖
yum install gcc gcc-c++ python3-devel mariadb-devel libffi-devel openssl-devel
查看mariadb 有没有成功安装
yum list installed | grep mariadb
没有返回结果则没有正确安装,需要重新安装下(mysql_config not found 如果在安装httprunnermanager依赖时候报这个错)
yum install mariadb-devel --nogpgcheck
用 secureCRT 传输工具把github项目代码zip文件上传(rz 命令)
https://github.com/HttpRunner/HttpRunnerManager
进入项目解压目录,执行命令安装依赖
pip3 install -r requirements.txt
链接mysql数据库并执行构建数据库命令
CREATE DATABASE `HttpRunner` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
修改HttprunnerManager主文件目录下HttpRunnerManager里的settings.py文件的sql部分
# DEBUG = True
DEBUG = False
if DEBUG:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'HttpRunner', # 新建数据库名
'USER': 'root', # 数据库登录名
'PASSWORD': 'daixuwei123123', # 数据库登录密码
'HOST': '120.88.88.88', # 数据库所在服务器ip地址
'PORT': '3306', # 监听端口 默认3306即可
}
}
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'), # 静态文件额外目录
)
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'HttpRunner', # 新建数据库名
'USER': 'root', # 数据库登录名
'PASSWORD': 'daixuwei123123', # 数据库登录密码
'HOST': '120.88.88.88', # 数据库所在服务器ip地址
'PORT': '3306', # 监听端口 默认3306即可
}
}
修改完后回退到项目主目录,执行数据库迁移同步程序
python3 manage.py makemigrations
python3 manage.py migrate
安装uwsgi
先安装编译器
yum install -y gcc* pcre-devel openssl-devel
安装依赖
yum install python36-devel
升级GCC 版本
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
永久升级(谨慎操作)
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
升级后安装uwsgi应该就不报错了,重新安装时遇到了GCC版本过低的问题
执行安装uwsgi
pip3 install uwsgi
安装完成后,去httprunner 主目录,写入uwsgi.ini的配置
[uwsgi]
#http= 0.0.0.0:8000
# Django-related settings
project = HttpRunnerManager-master
project1= HttpRunnerManager
base = /home
chdir = %(base)/%(project)
module = %(project1).wsgi:application
env = DJANGO_SETTINGS_MODULE = %(base)/%(project)/%(project1).settings
master = true
processes = 5
#daemonize = wsgi.log
socket = %(base)/%(project)/%(project1).sock
chmod-socket = 666
vacuum = true
写入后保存
安装Nginx
检查是否安装gcc
gcc -v
检查是否安装zlib
cat /usr/lib64/pkgconfig/zlib.pc
检查是否安装 pcre
pcre-config --version
安装插件依赖
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
在 /var/log 目录下建立目录 nginx 不然日志文件找不到目录要报错
构建nginx 的主目录 /usr/local/nginx 并进入
wget 下载nginx包
wget https://nginx.org/download/nginx-1.21.6.tar.gz
解压进入
tar xvf nginx-1.21.6.tar.gz
cd nginx-1.21.6
打开conf目录,备份nginx.conf
修改nginx.conf 的server部分添加配置
server {
listen 80 default_server; #默认监听端口
listen [::]:80 default_server;
server_name 120.88.88.88; #公网ip地址
#root /usr/share/nginx/html;
root /home/HttpRunnerManager-master; #项目目录
# Load configuration files for the default server block.
include /etc/nginx/conf.d/*.conf;
access_log /var/log/nginx/httprunnermanager_access.log; #增加正常日志
error_log /var/log/nginx/httprunnermanager_error.log; #增加异常日志
#增加静态文件目录
location /static/ {
root /home/HttpRunnerManager-master;
}
location /media/ {
root /home/HttpRunnerManager-master;
}
#连接到uwsgi
location / {
include uwsgi_params;
uwsgi_pass unix:/home/HttpRunnerManager-master/HttpRunnerManager.sock;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
回退至nginx解压的目录,执行配置
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
编译 安装
make
make install
检查安装配置
/usr/local/nginx/sbin/nginx -V
正常输出
nginx version: nginx/1.21.6
built by gcc 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
检测配置文件语法
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# 以下命令进入到/usr/local/nginx/sbin/目录下再操作
./nginx -s reopen # 重启nginx
./nginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx
./nginx -s stop #强制停止Nginx服务
./nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)
./nginx -c [配置文件路径] #为 Nginx 指定配置文件
启动uwsgi 服务
切换到项目主目录 跟 uwsgi.ini 同目录下 后台启动读取配置
uwsgi -d --ini uwsgi.ini
启动nginx服务
切换到nginx 的sbin下启动服务
cd /usr/local/nginx/sbin
./nginx
启动httprunnermanager服务
tornado.web 版本过高解决
pip3 uninstall tornado
pip3 install tornado==5.1.1
启动服务
python3 manage.py runserver 0.0.0.0:8000 &
nohup python3 manage.py runserver 0.0.0.0:8000 >logs/hrun/hrun.log 2>&1 & #后台启动命令
重启,先杀死进程,再重新启动服务
netstat -anp |grep 8000
kill -s 9 XXXX 进程号
出现了非debug模式下,前端静态资源未找到的问题,需要排查是否是uwsgi网关配置问题还是Nginx.conf配置不对,不能理解这个问题原因,已尝试大量方法解决,无效
20240216 05:25 里程碑节点 攻克以上问题
问题出在Httprunnermanager 的 django的静态资源搜寻上
修改 HttpRunnerManager里的setting.py文件
注释掉里面的STATICFILES_DIRS参数
修改urls.py文件
添加以下参数
from django.views import static
from django.conf import settings
from django.conf.urls import url
urlpatterns[]里新增
url(r'^static/(?P<path>.*)$', static.serve,
{'document_root': settings.STATIC_ROOT}, name='static'),
修改后保存即可
RabbitMQ 安装
安装前置依赖 erlang
el/7/erlang-21.3.8.14-1.el7.x86_64.rpm - rabbitmq/erlang · packagecloud
erlang 版本 21.3.8.14-1.el7.x86_64.rpm
erlang目录
/usr/local/rabbitmq
前置依赖
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
yum -y install ncurses-devel
进入目录执行
rpm -Uvh erlang-21.3.8.14-1.el7.x86_64.rpm
执行测试看看 OTP 是否为 21
erl -v
如果yum 报错找不到包,可以试试重新构建yum安装缓存
yum clean all
yum makecache
安装 rabbitMQ
rabbitMQ目录
usr/local/rabbitmq
安装依赖
yum install socat
进入目录执行
rpm -ivh rabbitmq-server-3.8.5-1.el7.noarch.rpm
启动 rabbitmq服务
service rabbitmq-server start
查看运行状态
service rabbitmq-server status
看到 active就行了
其他命令
service rabbitmq-server stop
service rabbitmq-server restart
配置RabbitMQ
创建配置文件
cd /etc/rabbitmq/
vim rabbitmq.config
编辑内容
[{rabbit, [{loopback_users, []}]}].
保存后重启Rabbitmq
service rabbitmq-server restart
安装可视化界面
/sbin/rabbitmq-plugins enable rabbitmq_management
修改rabbitMQ账号密码
查看用户列表
rabbitmqctl list_users
添加用户
rabbitmqctl add_user <username> <newpassword>
添加管理权限
rabbitmqctl set_user_tags <username> administrator
添加远程访问权限
rabbitmqctl set_permissions -p / <username> ".*" ".*" ".*"
修改密码
rabbitmqctl change_password <username> <newpassword>
删除一个用户
rabbitmqctl delete_user <username>
还需要修改 settings.py 里的配置
大概在155行这样,有一个BROKER_URL,改成
djcelery.setup_loader()
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'Asia/Shanghai'
BROKER_URL = 'amqp://<rabbitmqusername>:<rabbitmqpassword>@120.46.88.88:5672//' if DEBUG else 'amqp://<rabbitmqusername>:<rabbitmqpassword>@120.46.88.88:5672//'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
记得把下面的定时报告邮箱也改一下
后台启动Worker
后台启动worker
nohup python3 manage.py celery -A HttpRunnerManager worker --loglevel=info >logs/worker/worker.log 2>&1 &
后台启动定时任务监听器
nohup python3 manage.py celery beat --loglevel=info >logs/celery/celery.log 2>&1 &
后台启动任务监控后台(不知道为啥配置没生效,直接命令行指定了)
nohup celery flower --broker=amqp://guest:guest@120.46.88.88:5672 >logs/flower/flower.log 2>&1 &
任务监控后台还需要修改一下菜单栏的系统设置,在base.html里
<li><a href="http://120.46.88.88:5555/dashboard">任 务 监 控</a></li>
改完重启主服务,点一下看看能不能跳转
关于测试报告加载缓慢的问题
需要修改两个文件,extent_report_template.html 和 report_template.html 前面是异步执行的后面是同步执行的,因为加载css 和 js 太慢了(从国外cdn加载),所以选择把代码直接写在html里,改不太好改,改好的包放在patch里了