准备工作:编译安装最新release版的python(截至目前,python3的release版是3.10.5,具体可在python官网查看)
然后检查有没有安装到gcc
、zlib-devel
、bzip2-devel
、openssl-devel
、ncurses-devel
、sqlite-devel
、readline-devel
、tk-devel
、gdbm-devel
、xz-devel
、libffi-devel
这些编译所需要的软件包,如果没有,自行使用yum
命令安装,具体可参考这篇文档,装完之后使用自己趁手的方式将python源码丢上服务器,如果服务器位于港澳台或者国外,建议直接从python官方下载地址下载,下文中的服务器是国内的服务器,故参考这个帖子使用华为的镜像站,我这里选择使用wget
命令从华为云的镜像站的python源码镜像下载,先在本地用浏览器打开华为云镜像站的链接,在链接最后面拼凑上前面从python官网得到的版本号,比如说现在我要拿3.10.5的python源码,那拼凑后的地址就是 (22.10.7更新:无意中发现华为镜像站的链接变了)https://mirrors.huaweicloud.com/python/3.10.5/
https://repo.huaweicloud.com/python/3.10.5/
,或者打开之后用浏览器的查找功能(一般是CTRL
键+F
键)查找版本号链接然后点进去,打开之后找Python-x.y.z.tgz
(x.y.z换成版本号,比如3.10.5),之后直接单击以下载到本地或者右键复制链接拿到服务器上面去下载,我是拿wget命令在服务器上直接下载的,下载完之后使用tar -xzvf filename
命令解压,filename换成具体文件名,解压完成之后准备工作就完成了
进入到解压出来的文件夹里面使用./configure
命令进行编译前的配置
命令执行之后就耐心等待配置完成,配置完成之后使用make
命令进行编译
开始编译后请耐心等待编译完成,编译完成之后使用make install
命令来进行安装
耐心等待安装完成,安装完成后重启终端或者再开一个新的终端,先更换pip的源为国内源,如果是国内公有云的服务器,请自行查找相关文档,此处以腾讯软件源为例执行换源操作,执行以下命令完成换源:
pip install -i https://mirrors.cloud.tencent.com/pypi/simple pip -U
pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple
完成换源之后使用pip3 install certbot certbot-dns-cloudflare
命令安装certbot和它的cloudflare dns插件
然后前往cloudflare官网获取api token或者密钥并保存备用,创建~/.secrets/certbot/目录用来储存写有cloudflare的api身份验证信息的文件,此处以使用api token为例,your_token
换成具体的token,更多用法参考插件官方文档,创建完成之后就可以申请证书了
mkdir ~/.secrets/certbot/ -p
touch ~/.secrets/certbot/cloudflare.ini
chmod 600 ~/.secrets/certbot/ -R
echo 'dns_cloudflare_api_token = your_token' > ~/.secrets/certbot/cloudflare.ini
certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini --email username@your.email
上面的命令中username@your.email换成你自己的邮箱,首次运行它会问你同不同意用户协议,然后问你要不要跟他们分享你的邮箱地址,用户协议得同意才能继续,而分享邮箱就看你自己了,后面同一个邮箱再次运行就不会问这些,问完之后会让你输入域名,可以输入多个域名,用空格分割,支持通配符域名
申请成功之后ssl证书会放在/etc/letsencrypt/live/域名/
目录下,有两个文件,一个是私钥,一个是证书,可以直接部署到nginx使用,有效期90天,需要自行部署定时任务,定期执行certbot renew --froce-renew
来进行续期,不加--force-renew
就是每次执行时检查到期时间,如果大于30天就不续期,加了就是每次运行都续期
参考文档:
- Centos 8升级至Centos 8 Stream教程 – Linux面板 – 宝塔面板论坛
- CentOS Project shifts focus to CentOS Stream – Blog.CentOS.org
- 云服务器 关于 CentOS 8终止维护公告-动态与公告-文档中心-腾讯云
- certbot 调用cloudflare api申请证书 – Carry00 – 博客园
- Welcome to certbot-dns-cloudflare’s documentation! — certbot-dns-cloudflare 0 documentation
- 使用腾讯云镜像源加速pip
- Centos8下编译安装python3.10.0_Cookie’s的博客-CSDN博客
- 国内环境下载python安装包 – 老K的文章 – 知乎
CentOS 8 可以轉換到 CentOS Stream。另外 CentOS 上是有現成的 Python 3,可以直接找 repo 的包或者用 RHSCL……從 source 不打包直接安裝也真是……一言難盡,有點老 ops 一把梭的味道……
centos8从yum源安装的python3我记得最高停留在了3.7,而现在都更新到3.10了,有些python程序要求特定版本的特定包,3.7没有
virtualenv
;總之,沒有必須要替換掉系統 Python 才能解決的問題;相反,這幾乎是最差的做法,實踐中不建議這樣做。配合
virtualenv
使用多個 Python 版本是更好更 portable 的做法,何況這樣也不增加太多的成本。centos8已经没有centos7的那种坑爹问题了,centos7一些系统自带的python脚本的指示器是
#!/usr/bin/python
,而centos8的是#!/usr/libexec/platform-python
,而且直接编译安装新的python实测并不会影响到现有的python,同时我这次的操作并没有替换系统中的python,也没发现异常,大概是因为python大版本相同吧刚刚去看了下,直接yum install python3安装的是python36,然后我yum search了一下,发现最高是到39,yum install python39能安装python39,目前python官网最新的python3 release是3.10.5