安装python3.8

centos7安装或卸载python3.8

安装Python编译过程中需要的一些依赖包
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 libffi-devel
3.7以后版本需要
yum install libffi-devel -y
yum install zlib*
 
创建空文件夹并在改文件夹下使用wget从Python的官方网站下载Python 3.8的源码(若需别的版本可以自行找到连接并更改连接)
mkdir install_python
cd install_python
wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz
 
解压
tar xzf Python-3.8.12.tgz
 
进入解压目录后编译安装Python 3.8(这里使用--prefix参数安装到/usr/local/python3.8,如需别处可以自行更改)
cd Python-3.8.12
sudo ./configure --prefix=/usr/local/python3.8 --enable-optimizations
make
sudo make install
 
验证安装成功
/usr/local/python3.8/bin/python3.8 --version

更改软链接
将系统默认的python备份
mv /usr/bin/python /usr/bin/python2.7.5
 
(可选)ln -s /usr/local/python3.8/bin/python3.8 /usr/bin/python
ln -s /usr/local/python3.8/bin/python3.8 /usr/bin/python3
 
# 3、验证
# python --version
python3 --version



注意:因为yum采用python作为命令解释器,原来系统自带的python解释器为python2.7,
若改变了/usr/bin/python软件链接指向python3.8,
会出现使用yum解析错误,则需要更改yum文件为备份的python2.7.5
使用vi/vim打开yum文件
vim /usr/bin/yum
改为之前备份的python环境

验证:
yum info python3


问题:出现Could not import runpy module
在CentOS7上手动升级Python3.8.2时,遇到编译错误。
错误出现在指定安装目录后,使用了–enable-optimizations参数。
解决方法是执行make clean清除之前编译的文件,
然后去掉该参数再进行编译和安装
方式:
1、升级gcc至高版本,gcc 8.1.0已修复此问题
2、./configure参数中去掉–enable-optimizations (这次安装采用)

安装py模块:

setuptools、pycrypto、PyYAML、MarkupSafe、Jinja2、ecdsa、cryptography、paramiko、simplejson

mkdir py_module
cd  py_module/
pip install --upgrade pip
yum -y install epel-release(看情况)
pip download 模块名称
遇到报错 例如:pip download setuptools --trusted-host mirrors.cloud.aliyuncs.com 添加信任
pip install ./*.whl && pip install ./*.tar.gz

ansible包下载: https://releases.ansible.com/ansible/
tar -xf ansible-2.9.9.tar.gz

## 安装ansible
cd ansible-2.9.9/
python setup.py build
python setup.py install

初始化配置
mkdir /etc/ansible
cp examples/ansible.cfg  examples/hosts  /etc/ansible/

配置ansible软链接:ansible、ansible-doc、ansible-playbook
ln -s /usr/local/python375/bin/ansible    /usr/local/sbin/ansible
ln -s /usr/local/python375/bin/ansible-doc    /usr/local/sbin/ansible-doc
ln -s /usr/local/python375/bin/ansible-playbook    /usr/local/sbin/ansible-playbook

添加主机名解析:
vim /etc/hosts  例如:
	172.16.10.1   app
	172.16.10.2   web
修改ansible配置(没需要保持默认)
vim /etc/ansible/ansible.cfg
配置hosts:
vim  /etc/ansible/hosts

配置免密登录

ssh-keygen -t rsa         #生成免密登录公私钥,根据提示按回车或y
ls -lha             #.ssh目录默认隐藏,可使用ls -lha 查看

cd /root/.ssh/              #进入.ssh 公私钥存放目录
id_rsa                           #生成的私钥文件
id_rsa.pub                  #生成的公钥文件
authorized_keys        #存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥(如没有,可touch 创建)
know_hosts      #已知的主机公钥清单 (默认没有,上传公钥后自动生成)

上传公钥至远程机,实现免密登录
#将本机的公钥上传至 x.x.x.x 机器上,实现对x.x.x.x 机器免密登录
方法一
ssh-copy-id -i ~/.ssh/id_rsa.pub root@x.x.x.x 
(x.x.x.x 是远程系统IP)    
方法二
scp -p ~/.ssh/id_rsa.pub root@x.x.x.x:/root/.ssh/authorized_keys