起初是安装ServerStatus,用来监控服务器的,其他服务器都正常弄好了,就有那么一台是内网环境,死活不愿意被监控。各种折腾折磨,也下了各种环境。方便下次应用,再此记录折腾过程。项目参考地址GitHub - cppla/ServerStatus: 云探针、多服务器探针、云监控、多服务器云监控,演示: https://tz.cloudcpp.com/
一、首先准备各种安装包(N多个)
1.环境依赖安装包安装
在有网络的机器上,运行以下代码,下载依赖包
yum install --downloadonly --downloaddir=./python3 zlib-devel bzip2-devel openssl-devel ncurses-devel epel-release gcc gcc-c++ xz-devel readline-devel gdbm-devel sqlite-devel tk-devel db4-devel libpcap-devel libffi-devel
./python3文件夹可以换成自己的目录,将python3文件夹打包后拷贝到离线服务器上,在离线服务器上,进入python3文件夹
#在有网络的服务器中将下载的文件进行压缩
tar -czvf py3_lib.tar.gz python3
#在离线服务器中解压文件(注意是无网络的离线服务器中)
tar -zxvf py3_lib.tar.gz python3
#进入python3文件夹
cd /python3
#批量安装rpm 包
rpm -ivh ./*
如果安装完环境后,影响了其他软件(我就是安装后,ERP软件无法使用,报错/lib64/libc.so.6: version `GLIBC_2.18′ not found (required by /lib64/libstdc++.so.6)",不要慌,进行修复就行)
下载 2.18 http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz 放到离线服务器中,安装可能要等上那么一会。安装完毕就不会报这个错误了
#解压文件到当前目录
tar zxf glibc-2.18.tar.gz
#进入解压后的目录
cd glibc-2.18/
#创建一个build文件夹并进入
mkdir build
cd build/
#运行安装,我这是安装到usr目录的
../configure --prefix=/usr make -j2 make install
二、python3的安装
直接在这下载 https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
下完后同样放到服务器上去
#进入目录local,创建一个存放python3的目录
cd /usr/local
mkdir python3
cd python3
#将安装包放入服务器,并解压到上面创建的目录中
tar -xf Python-3.6.1.tar.xz
cd Python-3.6.1
#直接运行安装
./configure --prefix=/usr/local/python3 --enable-optimizations
make && make install
#添加环境变量
echo 'export PATH=/usr/local/python3/bin:$PATH'>>~/.bashrc
source ~/.bashrc
#检查是否安装成功
python3 --version
三、ServerStatus运行
开始运行ServerStatus客户端,运行监控(详细设置可以参考安装serverstatus监控多台服务器状态-腾讯云开发者社区-腾讯云 (tencent.com))
#进入客户端目录
cd /home/ServerStatus/clients
#运行客户端
python3 client-linux.py
我的麻烦开始,报错 ModuleNotFoundError: No module named '_ssl',找个各种资料和文档,有的说是要修改文件有的说要重新安装ssl
重新安装openssl,参考了此文档安装python3的时候遇到 sslv3 alert certificate expired-CSDN博客
然后还是失败,最后修改python3文件
#修改Python3.6.1安装包中的Steup文件(解压后的)
vi /usr/local/python3/Python3.6.1/Module/Setup
#更改如下(其实就是去掉前面的注释)
# Socket module helper for socket(2)
_socket socketmodule.c #安装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 \ #安装ssl模块,源码为ssl.c
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
再次运行安装
cd /usr/local/python3/Python-3.6.1/
./configure --prefix=/usr/local/python3 --enable-optimizations
make && make install
#此时报错
[SSL: SSLV3_ALERT_CERTIFICATE_EXPIRED] sslv3 alert certificate expired
证书过期问题,也别想着安装新版本或者怎样的,直接去更新证书时间就行(第一次安装这东西,在这一步折腾了很久)
#查看当前许可文件时间
cat Python-3.6.1/Lib/test/keycert3.pem
#可以看到确实已经过期了
Data:
Version: 1 (0x0)
Serial Number: 12723342612721443281 (0xb09264b1f2da21d1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=XY, O=Python Software Foundation CA, CN=our-ca-server
Validity
Not Before: Jan 4 19:47:07 2013 GMT
Not After : Nov 13 19:47:07 2022 GMT
尝试过更改服务器时间,发现似乎没有什么作用。那就老老实实去更新证书时间
openssl genrsa -out key.pem 2048
openssl req -new -key key.pem -out csr.pem
#会弹出提示,让你录入信息,注意填写,没有就直接按回车跳过就行
Country Name (2 letter code):XY
State or Province Name (full name):
Locality Name (eg, city):Castle Anthrax
Organization Name (eg, company):Python Software Foundation
Organizational Unit Name (eg, section):
Common Name (e.g. server FQDN or YOUR name):localhost
Email Address:
#此处填写完毕
openssl x509 -req -days 3650 -in csr.pem -signkey key.pem -out cert.pem
#查看是否正常输出,日期有效时间是否已更改
openssl x509 -in cert.pem -text -noout
cat key.pem cert.pem >>combine.pem
将帧数
cp combine.pem Python-3.6.1/Lib/test/keycert.pem
cp combine.pem Python-3.6.1/Lib/test/keycert2.pem
cp combine.pem Python-3.6.1/Lib/test/keycert3.pem
cp combine.pem Python-3.6.1/Lib/test/keycert4.pem
cp combine.pem Python-3.6.1/Lib/test/pycacert.pem
再次运行安装(终于最后一次),安装过程没有报错
启动ServerStatus客户端
[root@ERP clients]# python3 client-linux.py
Connecting...
Authentication successful. Access granted.
You are connecting via: IPv4
{"name":"监测网站以及MySQL、Redis,默认为七天在线率","host":"https://www.baidu.com","interval":60,"type":"https","monitor":0}
文章参考
Centos 7提示"/lib64/libc.so.6: version `GLIBC_2.18′ not found (required by /lib64/libstdc++.so.6)"错误的解决办法 – 零五网 (02405.com)由ModuleNotFoundError: No module named ‘_ssl‘引发的一场血案_modulenotfounderror: no module named 'sslserver-CSDN博客python3.6.5 证书过期问题解决[SSL: SSLV3_ALERT_CERTIFICATE_EXPIRED] sslv3 alert certificate expired-CSDN博客CentOS 7离线安装python3 /pip3和依赖_51CTO博客_centos7 安装python3