开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

Azure active directory 获得访问的 token

一直认为 Azure 的设计过于复杂,权限要求过多,就感觉是一群技术宅做的系统。相对 AWS 来说,更加喜欢 AWS 的功能设计。 但是因为工作需要又不得不使用 Azure,所以把使用过程中遇到的一些问题都记录下来,以期望能帮助有需要的人。 这篇文章主要用于介绍如何使用 postman 来获得 Azure active directory 的用户访问 token,这个步骤是使用 Azure 对用户鉴权使用的第一步。 确定 tenant Azure 允许你有多个 tenant,你可以在 Azure 的控制台中对 tenant 进行切换,这个是你需要做的第一步。确定你希望使用的 teant。 如果你还没有 tenant 的话,你需要创建一个 tenant。     当找到你需要的 Tenant 以后,你会获得一个 tenant ID,这个非常重要。 因为这个表示的是你 AD 的唯一标识,所以你需要记录下来。 Tenant ID 在你界面中的的 Tenant Information 里面     注册 APP 不管你使用任何类型的应用,你都需要先注册一个 APP。 单击左侧的注册 APP 按钮。     可以单击界面的上侧,注册一个新的应用。     在弹出的界面中,输入注册需要的相关信息。 注册的名字你可以自行定义,需要注意的是,你需要选择: Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox) 这个注册选项。 假设,我们这里注册的应用是 WEB。     获得基本参数 当你注册成功后,你可以单击你的注册名,然后你将会看到注册的应用信息界面。 在这个界面中,你会得到 Application (client) ID Directory (tenant) ID Object ID 这几个参数,这几个参数对你来说非常重要,你需要保存下来。     设置 secrets 单击左侧的 Certificates & secrets,你将会看到密钥生成的界面。 在这里,你可以单击生成一个新的 Secret。 你可以不用给这个 secret 进行命名,你也可以命名你希望的名字。请注意将 secret 进行保存,因为下次你访问的时候,secret 就不会再显示了。     API 赋权 你需要确定 Microsoft Graph 有用户读取的权限。     如果没有这个权限的话,你需要单击上面的添加权限来将权限添加进来。     选择 Microsoft Graph 的选项,然后将用户的权限添加进来。     暴露 API 你需要将你的 API 进行暴露,允许进行访问。     你需要添加一个新的 Scope,在这里我们假设你添加了一个叫做 user.read 的 scope。 在弹出的界面中你可以输入你需要的选项。 你可以选择 Admins and users     修改 Manifest 这个配置参数你需要手动修改。 主要修改参数是:oauth2AllowImplicitFlow 修改为 true     至此,Azure 的配置已经完成了,下一步就是配置你的客户端进行测试了。 Postman 测试 可以通过 Postman 进行测试获得 token。 你有 2 种方法进行测试,我们测试的是不通过授权,直接通过 secret 来获得 token。 另一种方法,我们在其他方式中再进行测试。 在 Postman 中添加一个 API 访问。 访问方法 使用 GET 进行访问 访问 URL 访问的 URL 是:https://login.microsoftonline.com/tenant ID/oauth2/v2.0/token 这里有一个参数要进行替换,就是 Tenant ID,这个 ID 在开始的时候就用于标识一个 AD,我们已经在前面的步骤保存了。 Headers 添加参数 Content-Type 为 application/x-www-form-urlencoded     Body grant_type : client_credentials client_id: 4ab1a0b7-da1d-423d-9fc3-e3a6fabd9 client_secret:SYk.HZT_jK6ZE1~3tle2Ha0MeV.9 scope: api://4ab1a0b7-da1d-423d-9fc3-e3a6fabd9/.default 这里参数有一根需要注意的地方。 client_id 是我们在最开始的时候 APP 创建成功后获得 client_id。 client_secret 是我们我们在 APP 注册成功后,创建的秘钥。 scope:是我们创建的的 scop,但是需要注意的是,我们创建的 scope 是以 user.read 结尾的,在我们获得 token 的时候,不能使用上面结尾的 scope,而需要将 user.read 修改为 .default 因此 scope 的配置就是 api://client_id/ .default. 请注意,你一定要这么配置,否则你拿不到 token 当一切配置好后,你可以发送请求,如果一切正确的话,你将会看到服务器返回给你的 token 字符串。   https://www.ossez.com/t/azure-active-directory-token/558

2020年10月08日 0Comments 653Browse 0Like Read more
Computer Science

Discourse 如何进行重启

Discourse 是使用基于 Docker 技术进行构建的。 因此在通常情况下,如果你需要对 Discourse 进行重启的话,你需要进入 docker 容器里面,然后进行重启。 通常可以使用下面的命令: cd /var/discourse ./launcher enter app sv restart unicorn 我们通过执行上面的命令后可以完成 Discourse 的重启。 [root@www ~]# cd /var/discourse/ [root@www discourse]# ./launcher enter app root@vps-f2a02f66-app:/var/www/discourse# sv restart unicorn ok: run: unicorn: (pid 154799) 0s root@vps-f2a02f66-app:/var/www/discourse# 上面的命令中 ./launcher enter app 是进入 docker 容器的命令。 sv restart unicorn 这个命令实际上是在容器内执行的,告诉 docker 对容器进行进行重启。

2020年10月06日 0Comments 906Browse 0Like Read more
Computer Science

CentOS 8 Apache 启用 SSL

在 CentOS 8 安装成功后,如果希望启用 ssl,你需要执行下面的一些操作。 安装 mod_ssl 使用下面的命令安装 mod_ssl # dnf install mod_ssl 确定 mod_ssl 被启用 这一步不是必须的,但是你可以使用下面的命令确定安装的 mod_ssl 已经被启用了。 apachectl -M | grep ssl 服务器可能会返回: 类似上面的情况和内容,你可以通过上面的返回确定 ssl 已经被启用了。 防火墙启用 443 端口 如果已经安装了防火墙的话,你需要为你的防火墙开放 443 的端口。 需要执行下面的命令: firewall-cmd --zone=public --permanent --add-service=https firewall-cmd --zone=public --permanent --add-port=80/tcp firewall-cmd --reload systemctl restart firewalld 配置虚拟主机 如果你的 Apache httpd 服务使用了虚拟主机,你可以在下面的文件中配置你虚拟主机的信息。 /etc/httpd/conf.d/ssl.conf 在上面的配置文件中,需要设置 key 和 crt 信息,请参考网络上的配置。 通过上面的步骤,就完成了在 CentOs 8 的 httpd 服务器上配置使用 ssl 的所有内容。步骤比较简单,只需要按照上面的顺序就可以完成了。   https://www.ossez.com/t/centos-8-apache-ssl/554

2020年10月06日 0Comments 592Browse 0Like Read more
Computer Science

CentOS 8 启用 NTP 服务

NTP 服务是什么和为什么我们需要在我们的服务器启用 NTP 服务? 可能很多人都不是非常了解,简单来说就是我们希望我们服务器的时间是准确的没有偏差的。这个的意义在数据插入和你程序取得计算机时间的时候是准确的。 比如说在 java 中如果 new date() 将会获得计算机当前的时间,如果当前的世界不准确的话,那么你插入数据库的时间就是混乱的。 同时,我们也希望我们的服务器的时区是准确的,比如说我们常使用的东八区和美国太平洋时间等。 如果计算机有什么原因导致时钟慢了,我们可以通过 ntp 进行同步。 所以针对服务器来说,在设置好时区后,NTP 服务是必须要启用的。 NTP 介绍 网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机[时间同步化的一种协议,它可以使计算机对其服务器或时钟源如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶意攻击。 NTP 的目的是在无序的 Internet 环境中提供精确和健壮的时间服务。 NTP 提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP 获得 UTC的 时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。 按照离外部 UTC 源的远近将所有服务器归入不同的 Stratum(层)中。Stratum-1在顶层,有外部 UTC 接入,而 Stratum-2 则从 Stratum-1 获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。 所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。计算机主机一般同多个时间服务器连接, 利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。 为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。NTP时间同步报文中包含的时间是格林威治时间,是从1900年开始计算的秒数。 安装 NTP 服务 在 CentOS 8 中,我们使用 chronyd 来提供 NTP 的服务。 在 CentOS 上执行下面的命令来进行安装,如果你已经安装过的话,系统会进行提示。 dnf install chrony 开启启用 NTP 服务 在 CentOS 8 中,执行下面的命令,来让服务进程随开机自动启动。 systemctl enable chronyd 上面的命令会随计算机开机的时候自动运行。 检查服务器 NTP 服务器地址 请执行下面的命令,确定 NTP 服务器的地址已经配置成功了。 chronyc sources 上面命令会显示默认配置的 NTP 服务器地址。     强制同步 在安装操作系统后,可能会遇到时间不准确的情况。 可以使用下面的命令对服务器的世界进行强制同步一次。 chronyc -a makestep 服务器的输入内容是: [root@vps-c853c8ac home]# chronyc -a makestep 200 OK [root@vps-c853c8ac home]# 然后可以在服务器上执行 date +%z 以确定当前的时区和你可用使用 date 确定当前服务器的时间。 date 通过这个设置,我们就可以在服务器上使用 NTP 进行同步了,你就不需要对服务器的时间进行调整了。 https://www.ossez.com/t/centos-8-ntp/555

2020年10月06日 0Comments 576Browse 0Like Read more
Computer Science

Discourse 如何使用命令行方式进行恢复

本文主要用于说明如何从命令行工具的方式中恢复 Discourse,以及我们在备份和恢复的过程中遇到的坑和解决办法。 恢复前需要的准备工作 在新服务器上安装完整和全新的 Discourse,这个安装成功后不需要通过 UI 前台进行用户注册。 备份和获得备份文件。 确定你现在运行的 Discourse 版本是最新的版本,如果你的 Discourse 不是最新的版本,你需要先进行升级。 安装权限的 Discourse 因为 Discourse 必须使用域名公共网络访问才能完整安装。如果你的站点比较大的话,你需要考虑这个问题。你需要考虑修改 DNS 的配置,让你的 Discourse 能够通过公共网络访问,或者你的域名将会在访问的时候出现你 Discourse 正在安装的提示。 这部分的操作按照完整的 Discourse 安装方式进行就可以了,你不需要进行任何操作,你也不需要在安装成功后注册管理员账号。 请注意安装次数,如果你是使用 Let’s Encrypt 的签名的话,你的 CA 签名是有次数限制的。最多可以重新安装 5 次,否则你需要再等 5 天。 除非使用自己的签名。 这个问题的讨论,请参考下面的链接:Discourse 如何不使用 Let's Encrypt 而使用 CA 签名的密钥进行安装 备份和获得备份文件 Discourse 可以使用混合附件存储方式。这个方式的定义是部分附件存储在本地,部分附件存储在云上,最常用的服务就是 AWS 的 S3 服务。 因为这种方式,会导致在恢复的时候,可能出现数据错误,绝大部分情况就是因为有部分附件在本地,有部分附件在 S3 ,但是你的 Discourse 已经全部使用 S3 了,这会导致在恢复的时候提示 S3 校验失败的情况。 在进行备份恢复之前,你需要将你的 Discourse 再备份一次。通常可以直接点后台的备份按钮。 如果你的备份是上传到 S3 的话,你可以直接到 AWS 上将备份文件下载到本地。 如果你是混合存储文件的话,在这里 不要备份附件 否则你没有办法恢复你的备份文件。   如上图我们的内容,找到最新的备份文件,然后下载。 传输备份文件到新服务器 SSH 到你需要恢复的服务器上,如果你的服务器上没有下面的目录的话,你需要使用下面的命令创建一个: mkdir -p /var/discourse/shared/standalone/backups/default 上传你下载的备份文件到这个目录中。如果你是在服务器直接进行数据传输的话,你可以使用下面的命令,下面命令是帮助你 SSH 到老服务器,然后将老服务器上的备份传输到新服务器上。 scp /path/to/backup/backup.tar.gz root@192.168.1.1:/var/discourse/shared/standalone/backups/default 参数说明: /path/to/backup/backup.tar.gz 这个是你老服务器上备份文件的路径和文件名 192.168.1.1 这个是你老服务器的 IP 地址,你需要根据你的实际情况进行更改 你也可以使用 FTP 将备份上传到指定的目录。 我们最终的目的就是需要将你的备份文件存储到路径 /var/discourse/shared/standalone/backups/default 中。 恢复备份 依次执行下面的命令,首先你需要进入你新服务器的 Discourse 安装目录中: cd /var/discourse 然后通过下面的命令,进入到 Discourse 已经运行的容器,下面的操作其实是针对 Discourse 容器的操作。 ./launcher enter app 针对 Discourse 的实例,你需要启用恢复功能,因为这个功能在安装后的默认情况下是禁用的。 discourse enable_restore 恢复备份文件,直接执行下面的命令进行恢复就行。在这里只需要指定文件名就行,你不需要指定特定的路径,因为在 Discourse 容器中,默认会到上面你存储的文件路径中去找你的备份。 discourse restore sitename-2019-02-03-042252-v20190130013015.tar.gz 需要注意的是,上面的参数是示例参数,你需要根据你具体的情况替换掉备份文件的名字。 如果你在这里数据恢复成功的话,你将会在界面的下面看到 [Success] 的提示。否则将会提示失败,在失败的上面将会提示你失败的原因,你可以根据失败的原因重新调整参数后再重试,很多时候主要是附件的原因。 重构 Discourse 退出 Discourse 的容器,你可以使用命令 exit,然后你会界面中看到 bye 的容器退出提示。 然后在操作系统中的 Discourse 目录中,运行下面的命令,对 Discourse 进行重构。 cd /var/discourse ./launcher rebuild app 如果你希望对你新的实例进行调整的话,比如说修改邮件地址,增加容器配置参数,修改 app.yml 文件,在重构之前,你可以对上面的内容进行后再进行重构。 踩过的坑 下面是我们在备份恢复的时候踩过的坑和发现的问题: S3 混合存储无法恢复数据 在备份的时候,因为混合模式没有办法恢复数据。 需要修改备份方式不备份附件,只备份数据库。 文件权限 文件权限问题。 需要使用 sudo 方式,让安装程序自行确定文件和文件夹的权限,避免权限不足。 无法发送邮件 备份恢复后无法发送邮件。 开放防火墙端口,同时需要将内部配置中的允许发送邮件的域名设置一个,然后再撤销。 CA 无法签名 新实例安装过多,导致无法 CA 签名。 注意恢复次数和必要的时候使用自己的域名签名。   https://www.ossez.com/t/discourse/553

2020年10月06日 0Comments 566Browse 0Like Read more
Computer Science

Discourse 如何不使用 Let’s Encrypt 而使用 CA 签名的密钥进行安装

通过访问密钥签发机构上面提供的信息了解到:Let’s Encrypt 针对一个域名只会在一定时间内签发 5 次,如果你超过了签发的次数,你需要 5 天后才能再次申请。 这个可能对你会造成无法安装成功的影响,因为你只有 5 次安装的机会,否则你在安装过程中会得到错误信息如下: [Sun 04 Oct 2020 04:52:58 AM UTC] Create new order error. Le_OrderFinalize not found. { "type": "urn:ietf:params:acme:error:rateLimited", "detail": "Error creating new order :: too many certificates already issued for exact set of domains: www.ossez.com: see https://letsencrypt.org/docs/rate-limits/", "status": 429 } 使用 CA 签名的域名 我们参考了官方的帮助文档,并且参照我们的平台进行测试后安装成功了。 现将经验分享给大家。 官方的安装 CA 签名密钥内容如下:https://meta.discourse.org/t/advanced-setup-only-allowing-ssl-https-for-your-discourse-docker-setup/13847 购买 SSL 首先你获得已经对你域名签名的密钥,这个密钥通常的格式是 key 和 crt。 如果你对 https 签名的流程还不太了解的话,你可以搜索下相关文章。 最简单的逻辑就是你自己生成一个 key,然后将这个 key 和你的域名信息发给 CA 签发机构,这些机构会对你的信息进行一些审查。因为我们只签名 www 和根域名,这种签名方式是最简单的,只要校验你是不是域名的持有者,基本会发个邮件到你的邮箱中就可以确认了。 当上面的信息确认后,CA 会将你发给他们的 key 进行签名,签名后将结果返回给你,这就是你拿到的 crt。 要对域名进行 https 加密,需要上面 2 个文件就可以了。 将文件上传到服务器 Discourse 对文件的命名有要求,你不能随意命名。不管你签名的域名是什么。你在安装的时候的 key 文件需要命名为 ssl.key,你的 crt 文件需要命名为 ssl.crt。 你不能将你的密钥命名为其他名称,文件名要和上面的要求一致。 文件放置的位置为:/var/discourse/shared/standalone/ssl 路径下面。 配置信息如下表: 文件名 类型 放置路径 ssl.key key 文件 /var/discourse/shared/standalone/ssl/ssl.key ss.crt crt 文件 /var/discourse/shared/standalone/ssl/ssl.crt 请注意,这个放置的位置是你的服务器的文件路径位置,不是你服务器上安装 docker 容器后,docker 容器内的文件路径。 如上图,我们显示的文件路径和文件内容。 如果你服务器上不仅仅只有这 2 个文件,可能还有其他签名的文件的话,请删除其他的文件,只保留这 2 个文件。 修改 app.yml 修改 app.yml 文件中的配置。 app.yml 文件的路径为 /var/discourse/containers/app.yml,可以使用下面的命令进行修改: vi /var/discourse/containers/app.yml 在这里,有 2 个地方需要注意: 如果 - "templates/web.ssl.template.yml" 这一行被注释的话,你需要取消注释。 如果 - "templates/web.letsencrypt.ssl.template.yml" 这一行没有注释的话,你需要注释上。 我们的文件看起来如下: ## Uncomment these two lines if you wish to add Lets Encrypt (https) - "templates/web.ssl.template.yml" # - "templates/web.letsencrypt.ssl.template.yml" 上面的这个配置这样注释的意图就是,启用 ssl 的配置,但是撤销使用 letsencrypt 的 ssl 签名。     完成上面的修改后,保存退出。 开放端口 你需要进行检查你容器的端口。 你需要查看下你的 app.yml 文件中的端口是否被添加到容器中了。 expose: - "80:80" - "443:443" 你可以为你的容器开放更多的端口,但是针对 https 和 http ,你需要至少开放 80 和 443 端口。     在上面我们的配置中,我们开放了上述的 2 个端口。 重新编译 在完成上面的所有操作后,进入目录 /var/discourse,然后在这个目录下运行: ./launcher rebuild app 对整个网站进行重新编译。当编译部署完成后,使用命令: ./launcher logs app 查看编译的结果,如果没有任何错误,表示编译部署成功,你的网站应该使用的是你自己的密钥了。 为了保险起见,你可以重启下 docker 容器。 重启 docker 容器的命令是: systemctl restart docker 校验安装 在完成上面的所有操作后,你就可以通过浏览器访问你的网站的。 在任何浏览器的右上角,单击带锁的图标,然后查看证书。     你可以通过这个链接查看你证书的签发机构,有效期和相关信息,以确定你的证书被正确安装到服务器上了。     希望我们能一起构建更加安全和清洁的网络。 https://www.ossez.com/t/discourse-lets-encrypt-ca/552

2020年10月05日 0Comments 475Browse 0Like Read more
Computer Science

Discourse 重复安装过程中的密钥签发问题

近期因为对服务器的平台进行切换和升级,在数据备份恢复的时候出现了不少问题,因此就进行了不少次数的重复安装。 在后面几次重复安装后,发现界面无法访问,通过使用命令 ./launcher logs app 查看安装的日志后发现 Let’s Encrypt 已经不再签发密钥了。原因是这个域名申请的密钥次数太多了。 这个对Discourse 的初级或者试验用户来说不是非常友好,因为你会有签发密钥安装的限制。 日志内容如下: [Sun 04 Oct 2020 04:52:57 AM UTC] Please check log file for more details: /shared/letsencrypt/acme.sh.log Error loading file ca.cer [Sun 04 Oct 2020 04:52:58 AM UTC] Using CA: https://acme-v02.api.letsencrypt.org/directory [Sun 04 Oct 2020 04:52:58 AM UTC] Single domain='www.ossez.com' [Sun 04 Oct 2020 04:52:58 AM UTC] Getting domain auth token for each domain [Sun 04 Oct 2020 04:52:58 AM UTC] Create new order error. Le_OrderFinalize not found. { "type": "urn:ietf:params:acme:error:rateLimited", "detail": "Error creating new order :: too many certificates already issued for exact set of domains: www.ossez.com: see https://letsencrypt.org/docs/rate-limits/", "status": 429 } [Sun 04 Oct 2020 04:52:58 AM UTC] Please check log file for more details: /shared/letsencrypt/acme.sh.log [Sun 04 Oct 2020 04:52:59 AM UTC] Installing key to:/shared/ssl/www.ossez.com_ecc.key [Sun 04 Oct 2020 04:52:59 AM UTC] Installing full chain to:/shared/ssl/www.ossez.com_ecc.cer cat: /shared/letsencrypt/www.ossez.com_ecc/fullchain.cer: No such file or directory Error loading file ca.cer Error loading file ca.cer Started runsvdir, PID is 2115 ok: run: redis: (pid 2123) 0s nginx: [emerg] cannot load certificate "/shared/ssl/www.ossez.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE) ok: run: postgres: (pid 2129) 0s chgrp: invalid group: ‘syslog’ rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted. rsyslogd: activation of module imklog failed [v8.1901.0 try https://www.rsyslog.com/e/2145 ] supervisor pid: 2124 unicorn pid: 2150 nginx: [emerg] cannot load certificate "/shared/ssl/www.ossez.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE) nginx: [emerg] cannot load certificate "/shared/ssl/www.ossez.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE) nginx: [emerg] cannot load certificate "/shared/ssl/www.ossez.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED…

2020年10月05日 0Comments 766Browse 0Like Read more
Computer Science

Discourse 升级后提示 https 混合内容

在升级 discourse 后,很多内容没有办法正确显示。 通过 F12 查看浏览器后,发现有提示 https 和 http 的混合内容。 下面是混合内容常在浏览器中看到的提示。     不管是不是对系统进行重启或者刷新缓存都没有办法解决。 强制使用 https 其实 Discourse 如果安装的时候使用了 https ,那么你可用修改配置强制所有内容都使用 https。 在默认的情况下,Discourse 都会使用 Let’s Encrypt 来对你的网站进行加密。 配置的路径在 :admin/site_settings/category/security 下面 你也可以直接搜索 force_https     在完成上面的配置后,你可以重启 docker 来刷新配置。 https://www.ossez.com/t/discourse-https/550

2020年10月05日 0Comments 585Browse 0Like Read more
Computer Science

Discourse 安装防火墙的配置如何让邮件能够发送

Discourse 安装成功后,我们可能希望启用 firewalld 的防火墙进程。 但是你会发现如果你在操作系统上启用后,邮件发送将会屏蔽。你可能会想到开启端口,当你成功开启端口后,你还是会发现你的邮件发送也是屏蔽的。 这是因为 docker 的端口也需要开放,你需要将 docker 设置到安全的 zone 里面。 分下面 2 步骤来做。 假设我们使用的端口是 587 来发送电子邮件的。 开放服务器的邮件端口 将服务器添加到可以开放的端口,这一步不是必须的,但是最好还是执行。 firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd --reload 将服务器上面的端口也添加到开放端口中,在这里我们一般需要开放80,443,587 端口。 firewall-cmd --zone=public --permanent --add-port=80/tcp firewall-cmd --zone=public --permanent --add-port=443/tcp firewall-cmd --zone=public --permanent --add-port=587/tcp firewall-cmd --reload 在完成上面的操作后,为了谨慎起见,你可用重启防火墙。 重启防火墙的命令是: systemctl restart firewalld 根据提示,你可以了解到你的防火墙是否被成功启动了。 配置 Docker 的防火墙 这部分非常关键,如果你不在这里进行配置的话,你的服务器还是没有办法发送测试邮件的。 firewall-cmd --permanent --zone=public --add-masquerade firewall-cmd --permanent --zone=trusted --add-interface=docker0 firewall-cmd --permanent --zone=trusted --add-port=587/tcp firewall-cmd --reload 在上面的命令中,非常重要的就是 --add-masquerade ,否则没有办法进行端口 forward。 最后,执行下面的命令重启防火墙和重启 docker systemctl restart firewalld systemctl restart docker 校验邮件发送 在完成上面的操作后,你就可以在 Discourse 上校验邮件发送情况了。 在登录你安装的 Discourse 实例后,选择邮件 > 下面的设置。 URL 上面的快速访问链接是: /admin/email 输入任何你可以接收到邮件的邮件地址,然后单击发送测试邮件:     如果测试没有问题,你将会看到显示发送状态已经成功了。     上面的状态显示发送已经成功了。 同时你需要访问你的邮箱地址,确定发送的测试邮件你已经收到了。 https://www.ossez.com/t/discourse/549

2020年10月05日 0Comments 604Browse 0Like Read more
Computer Science

CentOS 8 如何安装 htop

如果你安装使用的是 CentOS 的话,你可能没有办法直接安装 htop。 你会得到下面的信息: [root@vps-f2a02f66 discourse]# htop -bash: htop: command not found 解决办法 你可以将 RHEL 添加到你的仓库中。 运行下面的命令: yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm 上面的命令将会添加 RHEL 到仓库中,在过程中你需要输入 Y 来同意校验。 在完成上面的操作后,再执行 yum install htop 来执行安装。 在完整完成后,可使用 htop 命令来查看系统的运行情况。     如果你可以看到上面的界面,则表明 htop 已经安装成功。

2020年10月04日 0Comments 643Browse 0Like Read more
1…34567
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (511)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1