ad

《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_3.4 使用Nginx 作为软件仓库

网友投稿 127 2023-11-07

【摘要】 本书摘自《Python+3自动化软件发布系统》一书中第3章,第4节,由陈刚、王洪军编著。

3.4 使用Nginx 作为软件仓库

《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_3.4 使用Nginx 作为软件仓库

在我们这个自动化发布系统的设计中,当使用Jenkins 生成软件包之后,会放在 一个软件版本仓库里存起来,而不会如网上很多文档演示的那样直接启动服务器。

网上文档演示的直接在 Jenkins 里远程启动服务器,确实是最快速的实现。作 为快速开发的小型公司来说,是无可厚非的,但它需要操作Jenkins 的人有足够的责 任心,且缺少其他同事的再次确认。但如果公司规模扩张,要将软件发布纳入IT 工 作流程,同时要对接第三方平台(如 jira),或是向第三方提供数据(如监控报警),那 么直接在Jenkins 里发布,就显得比较仓促了。

因此,在我们的系统里,CI 是 一 部分,CD 是另一部分,且研发、运维、测试、形成 产品都能知道开发和部署的进度。这就是我们设计这个平台的初衷。

我们的软件仓库,就直接用Nginx 来实现(当下一阶段生成 Docker 镜像时,仓 库的功能就改为 Harbor 来实现)。这个 Nginx 里存放了公司所有项目的所有版本 的历史软件包,所以最好配置一个比较大的存储空间,并且,这个 Nginx 提供了浏览 软件,可以直接下载软件包,做一些文件方面的验证。

将Jenkins 中编译生成的软件包传递到 Nginx 服务器上,大致要经过以下几个 步骤:首先打通Jenkins 服务器和 Nginx 服务器之间的 ssh 免密码登录,在服务器上 安装好Nginx, 定义好服务根目录,并设置目录浏览权限。Jenkins 中安装对应的传 送软件的插件,将 ssh 免密码登录生成的 rsa 私钥设置在 Jenkins 系统里。然后,完 成 Jenkins 的 Pipeline 最后部分的编写,测试通过即可。下面,我们就来一步一步地 实现吧。

3.4.1 Jenkins 和 Nginx 服务器之间免密码登录

假定Jenkins 服务器的 IP 为192.168.1.112,Nginx 服务器的 IP 为192.168.

1.111。

① 登录Jenkins 服务器,在 root 用户目录下,执行如下命令,生成 rsa 算法的公 钥和私钥。

ssh-keygen -t rsa

在需要输入的地方,全部直接回车。输出类似如下:

Generating public/private rsa key pair.

Enter file in which to save the key(/root/.ssh/id_rsa):

Enter passphrase(empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /var/root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:fFrRr2xbGo7cY9e7oi5tdkoj0gsKgI+IgIldkqA93Z4 root@55f51468e37e The key's randomart image is:

+---[RSA 2048]---+

1.o o.

. = O

+o +·O

B.

=0

+

E S o

+

.0 =

..000+B..

oo B=0o.00

+----[SHA256]-----+

② 在 Jenkins 上,通过远程命令,在Nginx 服务器上建立相关目录。命令如下

ssh root@ 192.168.1.111"mkdir.ssh;chmod 0700.ssh"

上面这个命令,需要输入Nginx 上的 root 的服务。

③ 将 Jenkins 上的公钥拷贝到Nginx 上 root 的指定目录。命令如下

scp~/.ssh/id_rsa.pubroot@ 192.168.1.111:.ssh/id_rsa.pub

上面这个命令,也需要输入 Nginx 上的 root 的服务。

④ 登录 Nginx 服务器,生成一个 authorized_keys, 并设置600权限。

touch /root/.ssh/authorized_keys

chmod 600~/.ssh/authorized_keys

⑤ 将从Jenkins 拷贝过来的公钥文件的内容追加到 autorized_keys 文件中。

cat /root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys

⑥ 至此,我们完成了Jenkins 到 Nginx 服务器的免密码登录。如果我们在 Jen- kins 上执行如下命令,就会直接登录到Nginx 服务器上了。

ssh root@192.168.1.111

如果读者不是很明白其中的原理,建议先将这几步多操作几次,并死记下来。然 后,再通过网上其他深度文档来理解这里的机制。因为网络发展到今天,安全已成为 一个很重要的话题,而在IT 安全技术中,基于非对称加密的 RSA 算法,绝对居于一 个中心主宰的地位。 HTTPS/SSL 、 电子签名、SSH 认证很多领域,都是以非对称的 加密算法为基础的。RSA 算法本身很复杂,但其基本原理(超大互质数乘积分解)、 工程化实现(公钥私钥)却需要我们熟练掌握。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Excel VBA+SQL数据管理与应用模板开发》_工作效率UP!_8.1.3 运行宏
下一篇:《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》_求知之路漫漫_1.4.3 小家碧玉: Mobile/Embedded VM
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×