华为云云耀云服务器L实例评测|搭建Domain Admin环境监控公司网站的SSL证书,实现到期提醒

在这里插入图片描述

本文基于华为云云耀云服务器L实例下的场景体验开源软件Domain Admin的安装部署,实现SSL证书的到期提醒

1、购买华为云耀云服务器L实例

打开华为云耀云服务器L实例购买地址

https://www.huaweicloud.com/product/hecs-light.html

购买步骤:

  1. 点击购买 按钮跳转到 【云耀云服务器L实例】 产品购买页

  2. 选择规格:

    • 区域 华北-北京四
    • 系统镜像 CentOS 7.9
    • 实例规格 2核|2G
    • 购买时长 1个月
    • 购买数量 1

此时可以看到价格:配置费用:¥55.02,点击立即购买,跳转到 【订单配置确认】 页

  1. 确认购买实例参数
    • 勾选协议许可

点击去支付 按钮,跳转到【购买云耀云服务】订单支付页

  1. 支付订单
    勾选华为云代金券

点击 去在线支付 按钮,选择适合自己的支付方式,我实际支付0.03

2、登录服务器

回到控制台,找到自己刚刚购买的服务器实例

2.1、重置密码

考虑到网页版的控制终端操作起来不舒服,所以我们使用本地终端连接服务器

先重置密码,可以通过在线工具很方便的生成一个随机密码

https://mouday.github.io/tools/pages/password/index.html

2.2、连接服务器

通过ssh命令,通过公网地址连接服务器

ssh root@<服务器公网IP>

Welcome to Huawei Cloud Service

如果连接正确,可以看到华为云的欢迎词

3、安装Domain Admin

Domain Admin是一个基于Python + Vue3.js 技术栈实现的域名和SSL证书监测平台

用于解决,不同业务域名SSL证书,申请自不同的平台,到期后不能及时收到通知,导致线上访问异常,被老板责骂的问题

Domain Admin 安装文档

https://domain-admin.readthedocs.io/zh_CN/latest/manual/install.html

3.1、检查Python

$ python --version
Python 2.7.5

可以看到,华为云镜像 CentOS 7.9默认安装了Python 2.7.5

3.2、检查pip

检查pip安装情况

 pip -V
-bash: pip: 未找到命令

发现pip并未安装,所以,接下来我们需要安装pip

为了方便管理,我们安装的软件统一放到/opt文件夹下

cd /opt

安装pip

# 下载get-pip
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py

# 安装
python get-pip.py

# 检查
pip -V
pip 20.3.4 from /usr/lib/python2.7/site-packages/pip (python 2.7)

3.3、安装Domain Admin

安装 domain-admingunicorn

gunicorn,“Green Unicorn”是用于UNIX的Python WSGI HTTP服务器,可以用它作为domain-admin的服务器

# 使用清华源镜像
pip install gunicorn domain-admin

由于没有设置pip镜像,下载速度较慢,需要等待一会

如果速度太慢,也可以使用国内镜像进行加速

# 使用清华源镜像
pip install gunicorn domain-admin -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

## 当然也可以选择华为云镜像
pip install fabric -i https://repo.huaweicloud.com/repository/pypi/simple --trusted-host https://repo.huaweicloud.com

3.4、启动

可以让服务监听80端口

gunicorn --bind '0.0.0.0:80' 'domain_admin.main:app'

3.5、开放端口

检查安全组,发现仅开放了22端口,我们还需要开放80端口 用于web访问

4、使用Domain Admin

通过公网IP就可以访问,输入默认的账号密码登录(账号:admin / 密码:123456),添加需要监控的域名即可

更多使用帮助,可以参考他的文档:

5、遇到的问题

由于版本兼容的问题,我们不可避免的会遇到一些奇怪的问题

首先,遇到问题先别慌,看报错日志,根据日志就可以排查问题,进而对症下药,有效解决问题

首先可以明确的是:domain-amdin 同时兼容Python2.7和Python3。所以可以排除domain-amdin的问题。

5.1、No matching distribution found for invoke>=2.0

安装domain-admin的是时候,发现依赖fabric包安装错误

ERROR: Could not find a version that satisfies the requirement invoke>=2.0 
(from fabric) 
(from versions: 
0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.5.1, 0.6.0, 0.6.1, 0.7.0, 0.8.0, 0.8.1, 0.8.2, 
0.9.0, 0.10.0, 0.10.1, 0.11.0, 0.11.1, 0.12.0, 0.12.1, 0.12.2, 0.13.0, 0.14.0, 
0.15.0, 0.16.0, 0.16.1, 0.16.2, 0.16.3, 0.17.0, 0.18.0, 0.18.1, 0.19.0, 0.20.0,
0.20.1, 0.20.2, 0.20.3, 0.20.4, 0.21.0, 0.22.0, 0.22.1, 0.23.0, 1.0.0, 1.0.1, 
1.0.2, 1.1.0, 1.1.1, 1.2.0, 1.3.0, 1.3.1, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 
1.7.0, 1.7.1, 1.7.2, 1.7.3)
ERROR: No matching distribution found for invoke>=2.0 (from fabric)

通过pypi上的发布历史和版本兼容情况,我们发现最新版本的fabric 3.2.2 已经不支持Python2.7

https://pypi.org/project/fabric/2.7.1/

所以,我们选择一个支持Python2.7 的版本,手动安装

pip install fabric==2.7.1

再次执行安装命令

pip install gunicorn domain-admin -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

安装成功

5.2、ImportError: No module named abc

执行启动命令发现 flask_cors 也有问题

    from flask_cors import CORS
  File "/usr/lib/python2.7/site-packages/flask_cors/__init__.py", line 11, in <module>
    from .decorator import cross_origin
  File "/usr/lib/python2.7/site-packages/flask_cors/decorator.py", line 16, in <module>
    from .core import get_cors_options, set_cors_headers, FLASK_CORS_EVALUATED
  File "/usr/lib/python2.7/site-packages/flask_cors/core.py", line 12, in <module>
    from collections.abc import Iterable
ImportError: No module named abc

解决办法就是降级Flask-Cors,找一个兼容python2.7版本的包即可

pip install Flask-Cors==3.0.10 --trusted-host repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple

5.3、AttributeError: ‘datetime.datetime’ object has no attribute ‘timestamp’

APScheduler 也报错了

   scheduler_service.init_scheduler()
  File "/usr/lib/python2.7/site-packages/domain_admin/service/scheduler_service.py", line 102, in init_scheduler
    scheduler.start()
  File "/usr/lib/python2.7/site-packages/apscheduler/schedulers/background.py", line 35, in start
    BaseScheduler.start(self, *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/apscheduler/schedulers/base.py", line 167, in start
    self._real_add_job(job, jobstore_alias, replace_existing)
  File "/usr/lib/python2.7/site-packages/apscheduler/schedulers/base.py", line 863, in _real_add_job
    replacements['next_run_time'] = job.trigger.get_next_fire_time(None, now)
  File "/usr/lib/python2.7/site-packages/apscheduler/triggers/cron/__init__.py", line 179, in get_next_fire_time
    next_date, fieldnum = self._increment_field_value(next_date, fieldnum - 1)
  File "/usr/lib/python2.7/site-packages/apscheduler/triggers/cron/__init__.py", line 147, in _increment_field_value
    return normalize(dateval + difference), fieldnum
  File "/usr/lib/python2.7/site-packages/apscheduler/util.py", line 431, in normalize
    return datetime.fromtimestamp(dt.timestamp(), dt.tzinfo)
AttributeError: 'datetime.datetime' object has no attribute 'timestamp'

解决办法同样是降级APScheduler

pip install APScheduler==3.8.1 --trusted-host repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple

6、总结

通过使用华为云云耀云服务器L实例进行实际评测,满足企业正常的需求,默认安装了Python2.7,很容易部署第三方应用。
Domain Admin只是众多开源软件中一个应用,还有很多应用也可以部署到华为云服务器上面使用。虽然安装过程遇到一些问题,不过很快就解决了。并且这些问题本身也不是华为云服务器的问题,其他家的服务器也会遇到这样的问题。根本原因是Python版本和pip包版本的兼容性问题,知道了问题的根本所在,就很容易顺藤摸瓜,找到解决办法。而且本次使用的是华为云服务器的CentOS 7.9 镜像,和其他云服务器产商的镜像是一样的,所以是一个CentOS的问题。
至此,购买、登录、安装部署第三方应用、并且解决了遇到的问题,完成了整个流程,学习到了使用华为云云耀云服务器L实例的方式,同时也为中国云服务器商的崛起二自豪,他们提供了云服务器,让企业很容易使用云资源,简单的购买配置就可以实现自身业务需要的功能。这也是中国互联网经济的基础,为互联网的腾飞提供了必要的基础设施保障。

猜你喜欢

转载自blog.csdn.net/mouday/article/details/132944476
今日推荐