Centos6.7在无网络环境下安装Python3.6.1(其实主要是为了运行ServerStatus)

起初是安装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

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值