docker+nginx+node+jenkins从零开始部署你的前端服务

本文从零开始介绍如何使用docker、nginx、node和jenkins部署前端服务。首先讲解虚拟机环境搭建,包括选择机器配置、安装虚拟机工具。接着详细介绍了docker的安装、基础概念、镜像和容器的管理和操作。通过Dockerfile实现自动化构建。然后引入nginx配置,实现静态文件部署和api请求转发。最后,通过jenkins实现服务的持续集成,自动化部署流程。
摘要由CSDN通过智能技术生成

前言

如果你不甘于做一个纯粹的页面仔,想了解一个web应用从编写到到发布到用户可见的全过程,或是想自己玩一点新东西,突破原有的技术圈层,那么本文将是一个很好的入门指南。笔者将从实战入手,尽可能细致地结合当前主流的工具链,以命令行为粒度来讲解一个web应用CI/CD的全过程。有些部分的内容可能过于基础,大神们可以酌情跳过。
本例的应用架构大致是:一个web静态中台服务,和与之配套的后端服务(通过node实现)。通过nginx部署静态文件(web网站),使用node部署一个后端服务。nginx将静态站和后端服务整合起来,通过81端口将服务暴露给用户。在工程层面使用jenkins持续集成。除了jenkins外,所有的服务都运行在docker容器中,方便快速部署。

虚拟机环境搭建

笔者选择马云旗下厂商的ECS(Elastic Compute Service 弹性计算服务)作为虚拟机,其他公司的机器如马化腾、贝佐斯旗下厂商的vps(Virtual Private Server 虚拟专用服务器)也可参考如下内容,所谓的ECS或者vps都可以简单地理解为厂商物理服务器上划分出来的一个虚拟主机。

选择机器配置

在官网选择ECS相关产品,在产品选购页面可以见到如下的内容:

这里的操作比较傻瓜,点点点一通操作即可,笔者这里的例子使用的是CentOs8系统,选择机器的位置的时候建议香港,下载某些程序包或者资源的时候就不用设置国内镜像也能获取不错的速度。机器购买成功后,要记得配置机器root账户的密码。这里关于机器的配置我想说几句,机器配置越高,花费越贵,图上是最低配云机器一年的花费(在没有促销活动的情况下),通常双十一或者凭学生身份或者首次消费均会有不同程度的优惠。如果你想长时间的部署你的服务,建议选择包年,如果只是想短期玩玩,包月甚至按小时服务亦可。针对典型的前端应用,笔者实测最低配的云主机可以胜任部署静态网站或者node服务,但是稍微吃cpu的项目就跑不起来了,比如说webpack打包,还有部署jenkins(jenkins是用java写的,运行需要java虚拟机,比较吃资源)。如果各位土豪不差钱,大可选择高配机器爽一爽。

机器属性简介

购买云机器后,可以在ecs实例页面查看你的机器,注意图中划红线的部分内容:

ip地址一栏有公网ip和内网ip两项,公网ip就是你的机器能够被外网访问的ip,内网ip就是你的机器内部或者局域网内访问本机的ip,右侧的远程连接可以选择Workbench或者VNC进入机器的命令行,首次通过VNC进入的时候会给你一个随机6位密码,供以后登录使用。

点击远程连接左侧的管理进入实例详情

点击本实例安全组,再点击配置规则进入虚拟机的端口配置页:

这里的端口配置决定了外网能否通过这些端口访问你的机器,默认设置是把常用端口都打开的,如果在操作的过程中发现在外网无法访问你的机器,首先要做的就是检查实例安全组端口配置。在实例功能部署完毕后,建议把除了80和443之外的所有端口都禁掉,保证机器安全。笔者的mongodb服务的数据库就是因为没有关闭27017端口,被黑过好几次,这里建议大家提高警惕。

安装虚拟机常用工具

我们如果要操控我们的虚拟机,只能通过厂商提供的web命令行么?肯定不是。为了在开发过程中方便远程登录,我们可以安装openSSH-server并开启机器的ssh服务,同时为了方便进行文件操作(比如上传下载等),我们还需要安装vsftpd并开启ftp服务。注意,请确保你的实例安全组的21端口(ftp服务)和22(ssh服务)端口在调试时保持开启。
openSSH安装与配置
某厂商云ssh官方指导
某厂商云vsftp服务安装与配置
这里有一些常见的公私钥的生成,远程服务器公钥配置等等关于ssh的基础知识,笔者就不赘述了(配置过git的应该都懂,跟这个类似)。安装成功后,你就可以通过如下命令本地命令行ssh 你的账号@你的机器ip直接登录云主机了(前提是你本地有ssh客户端):

$ ssh root@xx.xx.xxx.xxx

Welcome to Alibaba Cloud Elastic Compute Service !

Activate the web console with: systemctl enable --now cockpit.socket

Last failed login: Tue Feb 25 19:22:36 CST 2020 from xx.xxx.xx.xxx on ssh:notty
There were 1224 failed login attempts since the last successful login.
Last login: Tue Feb 25 14:21:38 2020 from xxx.xxx.xx.xxx
[root@iZj6cavaweeoyi3tqucik6Z ~]#

通过本地的ftp客户端(笔者是FlashFXP)通过账号密码查看云主机的文件:

用docker部署你的服务

docker是现在独树一帜的容器技术,几乎所有的互联网的企业的服务都是部署在docker容器中的。这里我不想搬运官网上的定义和解释,直接结合实操来讲解docker容器的优势。在传统的服务部署中,每一台虚拟机中都会安装服务的一整套依赖,尽管如此有时候依然会因为平台间的差异导致各种各样的bug。在移除服务的时候,也要同步的移除相关的依赖,这个过程不仅繁琐,还容易处理的不彻底。docker你可以简单地理解为一个沙盒,这个沙盒类似一个极简的虚拟机,在其中你可以安装你的服务及其相关依赖,这个沙盒的启动和重启等等操作都十分迅速,性能优异。正因为是容器,服务的插拔都十分方便,同时这个沙盒可以通过类似于gitHub的系统方便其他机器获取,只要是同一个沙盒,就可以保证其在不同的平台上表现一致,容器本身抹平了几乎所有的差异。通常情况下安装nginx或者jenkins等服务时都需要非常复杂的本地配置,如果启用相应的docker容易则可以简单地一键安装,一键移除,干净清爽。

安装docker

这里以笔者的centOs 8为例子介绍docker的安装步骤,首先安装依赖:

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

然后设置docker后续拉取镜像时的仓库地址:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

然后安装docker社区版和命令行等:

yum install docker-ce docker-ce-cli containerd.io

如果安装的时候失败,报错信息显示containerd.io的版本过低不符合要求,那么可以本地重新安装containerd.io,首先下载安装包:

wget https://download.docker.com/linu
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值