欢迎来到球速体育·(中国)官方网站QIUSU SPORTS!

CentOS

当前位置: 球速体育·(中国)官方网站 > 服务器教程 > CentOS

【蓝因子教育】部署你的Python项目Python-Jack-Jack

时间:2024-10-26 07:17:02|栏目:CentOS|点击:

  ,开发团队通常要产出可以部署到生产环境的项目,还要负责向运维团队提供相应的文档,文档中必须要对项目所依赖的底层库、三方模块、数据持久化方案、缓存、消息队列、环境参数等一系列的内容加以说明。首选这些工作本身就不是很轻松,而且最为关键的问题是有没有遇到项目在开发环境能运行,到了生产环境就出问题的情况,你是如何解决的

  开发环境和生产环境的不一致,还会随着应用的复杂性而加剧,尤其是在将原来的单体应用改造成微服务架构的时候。微服务架构对部署提出了更高的要求,因为每个微服务使用的编程语言、技术栈、依赖的其他服务都可能完全不同,这些都会给部署带来更大的难度。所以,我们需要虚拟化容器技术来解决这些问题,而在所有的容器化技术中,Docker可能是目前最为流行的方案。

  简单的说,基于Docker的虚拟化容器技术最为关键的地方在于,我们可以将需要部署的项目做成一个镜像,而这个镜像中包含了项目所依赖的全部内容。将来我们只需要把一个镜像交给运维团队,而运维团队通过这个镜像可以创建一个或多个容器来运行我们的项目,再对这些容器进行管理就可以了。

  在介绍Docker之前,我们要先来解释一个叫“LXC”的名词。上对LXC的解释是:“LXC是Linux软件容器的缩写,是一种操作系统层虚拟化技术,它是Linux内核容器功能的一个用户空间接口。在Linux内核中,提供了功能来达成资源的区隔化,与此同时也提供了名称空间区隔化的功能,使应用程序看到的操作系统环境被区隔成独立区间,包括进程树、网络、用户ID以及挂载的文件系统”。Docker是基于Go语言开发的开源应用容器引擎,对LXC做了进一步的封装,可以管理LXC的环境并提供了简单易用的使用接口,是目前最为流行的Linux容器解决方案。

  第1步:确定操作系统内核版本(CentOS 7要求64位,内核版本3.10+;CentOS 6要求64位,内核版本2.6+)。

  第2步:更新系统底层的库文件(建议一定要执行,否则在使用Docker时可能会出现莫名其妙的问题)。

  Nginx是高性能的Web服务器,同时也是做反向代理服务器的上佳选择,使用Docker可以帮助我们用极为简单的方式创建出运行Nginx的容器。

  首先,我们来下载Nginx的官方镜像。如果你有安装操作系统或大型软件的系经验,对镜像这个词一定不会陌生,镜像就类似于我们安装软件时使用的光盘或者ISO文件。我们可以通过下面的命令从Docker仓库中下载Nginx的官方镜像。

  如果没有特殊说明,默认是从官方提供的镜像仓库来下载该镜像,在我是用的阿里云服务器上,该命令连接的是阿里云提供的官方仓库的替代,因为国内的仓库更快。当然,如果愿意也可以通过修改目录下的文件来指定下载镜像时所使用的镜像仓库,如下所示。

  可以使用来查看所有下载过的镜像,也可以使用命令通过镜像的ID来删除指定的镜像。通过镜像创建容器可以使用命令,如果没有提前使用下载指定的镜像文件,那么在的时候也会先下载该镜像文件,然后再基于该镜像创建容器。

  说明:上面的参数是的缩写,表示容器在后台运行并显示容器的ID;是的缩写,用来映射容器的端口到宿主机的端口,冒号前面是宿主机的端口,冒号后面是容器内部使用的端口;表示容器停止后自动删除容器,执行命令后,容器就不复存在了;后面是自定义容器的名字;在创建容器的过程中,需要用到nginx的镜像文件,镜像文件的下载是自动完成的,如果没有指定版本号,默认是。--detach-p--publish--rmdocker stop webserver--namelatest

  如果需要将自己的Web项目部署到Nginx上,可以使用容器拷贝命令将指定路径下所有的文件和文件夹拷贝到容器的指定目录中。

  如果不愿意拷贝文件,可以在创建容器时用数据卷操作实现目录映射,通过或将指定的文件夹映射到容器的目录,如下所示。

  提示:如果要重新创建名为的容器,需要先删除之前创建的容器。可以通过来停掉它使其自动删除,也可以通过来强行删除运行中的容器。webserverdocker stop webserverdocker rm -f webserver

  至此,我们可以打开浏览器来查看部署到容器中的Web项目了。如果需要查看运行中的容器,可以使用命令;如果希望看到所有的容器,可以使用命令。

  通过上面的例子,相信大家已经感受到了容器的便捷性,我们再来尝试用Docker创建运行MySQL服务的容器。

  说明:上面查询结果的列依次代表索引、镜像名、镜像描述、用户评价、是否官方镜像、自动构建。

  注意:在创建容器时我们使用了数据卷操作,那是因为容器通常是即用即删的,而数据库中的数据却是需要保留下来的。上面的命令中,我们执行了两个数据卷操作,一个是映射了MySQL配置文件所在的文件夹,一个是映射了MySQL数据文件所在的文件夹。在创建该容器的时候,我们还用了参数来指定环境参数,通过来为MySQL指定超级管理员账号对应的口令。当然,在实际应用中,不建议大家使用像这样的弱口令,因为它会给你的系统带来潜在的风险。-eMYSQL_ROOT_PASSWORD=123456root

  到此为止,我们已经掌握了如何通过官方提供的镜像来创建并运行容器。如果愿意,我们也可以创建自己的镜像甚至将这些镜像发布到官方镜像仓库或者是自己的私有仓库中。推荐大家使用Dockerfile的方式来构建自己的镜像,下面我们通过例子来说明Dockerfile的使用。

  我们首先来编写如下所示的Dockerfile文件,Dockerfile文件是用DSL(领域特定语言)描述的构建一个Docker镜像的指令清单,只要编辑好了这个文件,就可以通过来构建我们自己的镜像了。

  Dockerfile中使用的指令对于懂英语的人来说并不难理解,我们在后续的文章中会为大家专门讲解Dockerfile中的指令。上面的代码通过执行命令从Git仓库克隆了代码,这里我们先简单介绍一个这个项目。这个项目非常简单,由三个文件构成,分别是项目的代码、依赖项清单和启动脚本。

  球速体育

  文件是我们用Flask编写的提供API接口的Web后端服务,简单起见并没有使用数据库而是将数据放在了一个列表容器中,代码如下所示。

  文件是项目的依赖项清单,有Python开发经验的对这个文件一定不会陌生。其中,是用来简化API接口开发的三方库,而是用来解决跨域数据请求的三方库,是我们运行Python项目的WSGI服务器,由于添加了库,在启动该服务器时,通过参数和参数可以改善服务器的性能,因为解决了Python中通过线程的方式来无感知使用协程的问题。

  在说一下文件,它是项目的启动脚本,用来启动Gunicorn服务器,代码如下所示。

  提示:上面的命令中,参数用来指定镜像的名字;最后面的表示从当前路径下寻找Dockerfile。当然,如果你的Dockerfile文件并不在当前路径下,也可以通过绝对路径或相对路径的方式指出Dockerfile文件的位置。-t

  接下来我们就可以在容器中部署Python项目了,因为有了我们自己定制的镜像,部署项目的工作就变成了一条非常简单的命令。

  执行完上面的命令后,就可以打开浏览器访问服务器的8000端口了,因为上面的项目没有前端页面,我们直接访问API接口,对应的URL路径是。

  至此,我们已经完成了通过容器部署Python项目的工作,大家一定感受到了容器的简单和强大。但是目前我们使用的这个项目过于简单,甚至没有数据库和缓存,也没有部署前端页面。在后续的文章中,我们会实现项目的前后端分离,把项目需要用到的数据库服务器、缓存服务器、消息队列服务器等全部加入进来,并为大家介绍如何实现多个容器的管理。多个容器能够协同工作才能支撑起一个真正意义上的项目,这些内容会在后续更新的文章中为大家阐述,也希望大家能够点赞支持我继续创作。

  特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

  真拉胯!“宝马”首秀失败,24中6+12中2,正负值-41,惨不忍睹啊

  重大转折!美军态度突变,王炸打出

  好厉害的妹妹~#萌娃日常 #人类幼崽的800个心眼子 #人类幼崽迷惑行为大赏 #意想不到的结局

  马上要待产了 孕妈依然身材纤细,整个孕期长胎不长肉,孕前88斤 现在89斤,“想吃胖都吃不胖,孩子发育一切正常”

  《编码物候》展览开幕 北京时代美术馆以科学艺术解读数字与生物交织的宇宙节律

上一篇:CentOS 60正式版终于发布 附下载地址

栏    目:CentOS

下一篇:Acrel-3000WEB标准版

本文标题:【蓝因子教育】部署你的Python项目Python-Jack-Jack

本文地址:http://aihaoedu.com/fuwuqijiaocheng/2827.html

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:88888888 | 邮箱:aihaoedu.com

Copyright © 球速体育·(中国)官方网站 版权所有