大觅网之环境部署(Environment Deployment of Da Mi Network)

news2024/12/29 10:46:22

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

综合项目:
技能目标:
-
掌握 Docker 环境的部署
-
会搭建 Gitlab 及上传代码到 Gitlab 仓库
-
会通过 Docker-Compose 生成基础镜像及启动
对应容器
-
会配置 Java 所需的 Jenkins 环境1.1 案例分析

1.1.1 案例概述

某公司最近开发了一套大型票务类电商网站,被命名为大觅网。大觅网为用户提供了通
Web 界面购票的服务,主要功能包括:商品搜索、用户注册登录、商品详情、选座、下
单等功能。大觅网的整个部署过程会用到云计算的相关知识,包括 OpenStack 的多节点部
署、OpenStack 网络路由创建和云主机创建;也会用到 Docker 容器的相关知识,包括
Dockerfile 制作镜像、Docker Compose 多容器关联制作等;还会用到 Jenkins 自动构建发
布大觅网项目。整个项目采用多知识相结合,共同协调配合来完成部署。本章主要介绍大觅
网的基础环境部署。

1.1.2 案例前置知识点

1. 什么是 Tengine
Tengine 是由淘宝网发起的 Web 服务器项目。针对网站访问量大的需求,它基于开源
软件 Nginx 进行了优化,添加了很多高级功能和特性。Tengine 的性能和稳定性已经在淘宝
网、天猫商城等大型网站得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、
易用的 Web 平台。从 2011 12 月开始,Tengine 成为一个开源项目。Tengine 团队在积
极地开发和维护这个项目,其团队的核心成员来自于淘宝、搜狗等互联网企业,它是社区合
作的成果。
2. 什么是 Nexus
Nexus Maven 仓库管理器,也可以叫 Maven 私服。它功能强大,极大地简化了自
己内部仓库的维护和外部仓库的访问。利用 Nexus 只在一个地方就能够完全控制访问和部
署仓库中的每个 ArtifactNexus 是一套开箱即用的系统,不需要数据库,它使用文件系
统和 Lucene 组织数据。
Nexus 不是 Maven 的核心概念,它仅仅是一种衍生出来的特殊的 Maven 仓库。对于
Maven 来说,仓库分为三种:本地仓库、远程仓库和中央仓库。本地仓库就是在 Maven
setting.xml 文件中配置的本地仓库地址。由于最原始的本地仓库是空的,因此,Maven
须知道至少一个可用的远程仓库,才能在执行 Maven 命令的时候下载到需要的构件。中央
仓库是 maven 默认的远程仓库。私服是架设在局域网的一种特殊的远程仓库,目的是代理
远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服。
如果私服上存在,则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,
再提供给本地仓库下载。
3. 什么是 Sonar
Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的
测试工具、代码分析工具以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)
不同,Sonar 并不是简单地把不同的代码检查工具结果直接显示在 Web 页面上,而是通
过不同的插件对这些结果进行再加工处理。通过量化的方式度量代码质量的变化,从而可以
方便地对不同规模和种类的工程进行代码质量管理。
在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,还可以在 Eclipse
IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 对大量的持续集成工具提供了接口支
持,可以很方便地在持续集成中使用 Sonar。此外,Sonar 的插件还可以对 Java 以外的
其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
4. 什么是 Mycat
MyCat 是一个开源的,面向企业应用开发的大数据库集群。它是目前最流行的基于 java
语言编写的数据库中间件,是一个实现了 MySQL 协议的服务器。前端用户可以把它看作
是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协
议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其
核心功能是分库分表。配合数据库的主从模式还可实现读写分离。
MyCat 是基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构
和性能以及众多成熟的使用案例使得 MyCat 变得非常的强大。MyCat 发展到目前的版本,
已经不是一个单纯的 MySQL 代理了,它的后端可以支持 MySQLSQL ServerOracle
DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型 NoSQL 方式的存储,未来
还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在 MyCat 里,都是
一个传统的数据库表,支持标准的 SQL 语句进行数据的操作。对前端业务来说,可以大幅
降低开发难度,提升开发速度。

1.1.3 案例环境

1. 本案例实验环境

本案例基于教材《OpenStack 云平台实战》第三、四章中 OpenStack 多节点部署和云
主机创建。在 OpenStack 上创建两台虚拟云主机作为实验环境,具体云主机环境配置如表
1-1 所示。
1-1 大觅网搭建环境
主机操作系统主机名/IP 地址主要软件
虚拟云主机CentOS 7.3-x86_64damiwang/192.168.9.18OpenStackDocker
虚拟云主机CentOS 7.3-x86_64gitlab/192.168.9.13Gitlab

2. 案例架构

1.1 大觅网技术架构图
技术架构用来描述大觅网整体业务实现采用的具体技术。大觅网的技术架构如图 1.1
示。
大觅网整体采用 Docker 的方式进行项目环境搭建和配置。
采用 MySQL 作为大觅网数据库,并采用集群方式进行配置和部署。
为了能满足数据库灵活扩展的要求,采用 MyCat 数据库中间件管理数据库集群。
为了满足商品数据的查询性能和精准搜索的功能性需求,大觅网使用 Elasticsearch
群实现商品信息的存储和搜索。
为了更好地满足性能要求,将部分常用数据缓存在 Redis 中。
采用 Spring Cloud 微服务架构实现微服务治理,将应用拆分为提供者、消费者、网关
及注册中心。
在提供者和消费者的具体实现上,采用 Spring Cloud 整套解决方案,包括使用 Fegin
进行接口管理、使用 Hystrix 进行容错和监控、使用 Ribbon 实现负载均衡等。
项目采用前后端分离技术,将数据的业务逻辑处理和展示分开,将数据展示独立为前端
项目。前后端采用 Nginx 反向代理实现接口访问。
为了节省项目部署时间,项目整体采用 Jenkins 实现程序的自动发版,实现持续集成,
也可简写为 CIContinuous Integration)。
大觅网应用架构是采用基于微服务设计思想的模块化开发,针对不同的业务配置了相应
的数据库,大觅网的数据库结构组成如图 1.2 所示。
1.2 数据库架构图
大觅网数据库包括 6 个独立的数据库,分别为基础库、节目库、订单库、支付库、排
期库和用户库。
大觅网数据库在设计过程中采用 MyCat 实现水平分库,将订单库做进一步的拆分,拆
分后的三个子订单库分别为订单库 1、订单库 2、订单库 3,三个子订单库的结构相同。
3. 案例环境用到的用户名和密码
1-2 是大觅网案例中预设的用户及密码。
1-2 案例中使用到的用户名和密码
类型用户名 密码
Gitlabrootbdqn123456
MySQL root 123456
Jenkinsadmin123456
Nexusadminadmin123

4. 案例需求

本案例的需求如下:
1)创建 Gitlab 仓库,用于存放大觅网后端 Java 程序源码。
2)使用 Docker 创建 Base 基础软件包环境。
3)通过 Jenkins 构建生成大觅网程序 jar 包并发布。
5. 案例实现思路
本案例的实现思路如下:
1)部署 Gitlab 代码仓库。
2)通过 Docker 部署 TomcatJDKCentOS-ssh 三个基础镜像。
3)部署 Shipyard 容器管理工具。
4)通过 Docker 部署 RedisTengineELKKafkaNexusMySQLSonarRabbitMQ
MycatJenkins 基础镜像。
5)配置 MySQL 数据库权限,导入数据库的表结构。
6)通过 Jenkins 自动化工具构建业务 jar 包并发布。
7)通过浏览器访问测试大觅网。

1.2 案例实施

1.2.1 基础环境配置

实验环境中的两台虚拟云主机都需要执行以下操作:配置对应的主机名、安装常用软件、
关闭防火墙和禁用 SELinux。以主机名为 damiwang 的虚拟云主机为例,具体操作如下所示。
[root@localhost ~]# hostnamectl set-hostname damiwang
[root@localhost ~]# bash
[root@damiwang ~]# yum -y install vim net-tools wget lrzsz gcc make unzip
[root@damiwang ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
[root@damiwang ~]# setenforce 0
[root@damiwang ~]# systemctl stop firewalld
[root@damiwang ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
需要注意:不同的云主机,主机名在设置时不同。
1.2.2 Gitlab 部署及大觅网源码上传
在整个大觅网基础环境部署中,Gitlab 代码仓库是一个独立的存在,本章中单独配置在
一台虚拟云主机上,同时还需要上传大觅网程序源码方便基础镜像的构建。
1. 安装配置 Gitlab
Gitlab 虚拟云主机上安装 Gitlab 代码仓库。Gitlab 有多种安装方式,可通过 YUM
装,也可通过 RPM 手动安装。由于 Gitlab 安装包比较大,有 700 M,所以推荐使用发
布包内提供的离线 RPM 包进行安装。具体的操作步骤是先将离线 RPM 包上传,然后执行
安装操作,具体操作命令如下所示。
[root@gitlab ~]# yum -y install policycoreutils-python
[root@gitlab ~]# rpm -ivh gitlab-ce-12.9.0-ce.0.el7.x86_64.rpm
修改配置文件/etc/gitlab/gitlab.rb,将 external_url 配置成 Gitlab 云主机 IP 地址。
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
external_url ‘http://192.168.9.13’
//external_url 配置成 Gitlab 云主机 IP 地址
重新配置 Gitlab
[root@gitlab ~]# gitlab-ctl reconfigure
2. 通过浏览器访问 Gitlab
在浏览器中,访问 http://192.168.9.13,请参考表 1-2 中用户的相关信息设置密码和确
认密码,并单击“Change your password”按钮。 界面效果如图 1.3 所示。
1.3 Gitlab 首次访问界面单击“Change your password”按钮之后,会提示输入登录信息。“Username”输入框中
输入“root”“Password”输入框中输入刚设置的值,单击“Sign in”按钮登录到 Gitlab,如图
1.4 所示。
1.4 Gitlab 登录界面
3. 创建项目并将代码提交到仓库内
单击“Create a project”按钮,创建 base-consumer 项目。将“Project name”配置成
“base-consumer”,在“Project description”输入框中填写项目的备注信息(此配置项是一个
可选项),最后单击“Create project”按钮创建该项目。页面效果如图 1.5 所示。
1.5 创建 base-consumer 项目
在本地 Windows 机器安装 Git-2.26.0-64-bit.exe 文件,该文件在大觅网发布包内有提
供。然后在本地 Windows 开始菜单中寻找新安装的程序,使用“Git bash”交互工具将项
目代码提交到 base-consumer 仓库中,具体操作命令如下所示。发布包内大觅网后端项目
程序源码保存在大觅网\项目源码\后端源码\dm-sprint2.0”目录下。
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
cd e:/tmp
//E 盘创建 tmp 目录
git clone http://192.168.9.13/root/base-consumer.git
//输入用户和密码
cd base-consumer
//将源码 base-consumer 目录内的内容拷贝到本地 Windows 当前目录
git add .
git commit -m "base-consumer"
git push -u origin master至此 base-consumer 项目提交完成,如图 1.6 所示。
1.6 项目提交成功
在执行“git add”命令时,如果该命令执行失败,将出现如下警告信息。
warning: LF will be replaced by CRLF in .idea/compiler.xml.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in .idea/encodings.xml.
这是因为 Linux 系统和 Windows 系统的回车换行符存在差异而导致的,可采用禁用自
动换行的方式来解决。
rm -rf .git
git config --global core.autocrlf false
大觅网是一个采用了微服务架构的综合项目,关于业务的微服务项目有 16 个。在大觅
网发布包内大觅网-new\项目源码\后端源码\dm-sprint2.0”路径下,这些项目包括:
base-consumerbase-providercommonenv-projectfileManageritem-consumer
item-provider
i
tem-searchorder-consumerorder-providerpay-consumerpay-provider
scheduler-consumerscheduler-provideruser-consumeruser-provider
注意:base-consumer 项目提交完成之后,需要将上述其他 15 个项目采用相同的方法
依次提交到 Gitlab 仓库内。
1.2.3 通过 Docker 部署 Tomcat、JDK、CentOS7-ssh
以下操作都是在 damiwang 云主机上执行。
1. 安装 Docker 环境并启动
[root@damiwang ~]# yum install -y yum-utils lvm2 device-mapper-persistent-data
[root@damiwang
~]#
yum-config-manager
--add-repo
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
[root@damiwang ~]# yum -y install docker-ce
[root@damiwang ~]# mkdir /etc/docker
[root@damiwang ~]# cat << EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
[root@damiwang ~]# systemctl start docker
[root@damiwang ~]# systemctl enable docker
Created
symlink
from
/etc/systemd/system/multi-user.target.wants/docker.service
to
/usr/lib/systemd/system/docker.service.
2. 构建基础镜像 Tomcat、JDK、CentOS7-ssh
通过 docker pull 命令拉取 centos:7 镜像,该镜像是构建 TomcatJDK
CentOS7-ssh 三个镜像的基础。拉取命令如下所示。
[root@damiwang ~]# docker pull centos:7
7: Pulling from library/centos
ab5ef0e58194: Pull complete
Digest: sha256:4a701376d03f6b39b8c2a8f4a8e499441b0d567f9ab9d58e4991de4472fb813c
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
damiwang 云主机上,创建目录/home/px2/envdm,上传 sshjdk8u171tomcat7
三个目录,这三个目录内包含对应的 Dockerfile、配置文件及软件包等,都保存在所提供的
大觅网发布包内,其路径为大觅网\base 镜像包。使用如下命令构建 Docker 镜像。
[root@damiwang ~]# mkdir -p /home/px2/envdm //之后上传 sshjdk8u171tomcat7 三个目录
[root@damiwang ~]# cd /home/px2/envdm/ssh/
[root@damiwang ssh]# docker build -t yi/centos7-ssh .
[root@damiwang ssh]# cd /home/px2/envdm/jdk8u171
[root@damiwang jdk8u171]# docker build -t yi/centos7-jdk8u171 .
[root@damiwang jdk8u171]# cd /home/px2/envdm/tomcat7
[root@damiwang tomcat7]# docker build -t yi/centos7-tomcat7 .
基础镜像容器及后面要部署的业务容器使用了新创建的独立网络,在创建网络envdm 之前,需要开启 ipv4 转发功能,具体操作命令如下所示。
[root@damiwang ~]# echo "net.ipv4.ip_forward=1">> /usr/lib/sysctl.d/00-system.conf
[root@damiwang ~]# systemctl restart network
创建 envdm 网络的具体命令如下所示。
[root@damiwang ~]# docker network create --subnet=192.168.10.0/24 envdm
d54069a3b42ab2dd0e65c511a1c3569bd5ffef0dce8ee35afeb861e73b0f0efd

1.2.4 搭建基础服务容器

为了方便 Docker 容器的管理,安装 Shipyard 相关容器,通过 Shipyard 可实现对 Docker
容器的 Web 方式管理,从而可以大大简化 Docker 容器的管理难度。同时,采用
docker-compose 方式安装大觅网的一些基础镜像。
整个基础服务相关的操作都是在主机名为 damiwang 的云主机上执行的。
1. 安装启动 Shipyard
Shipeyard 是一个开源的 Docker 容器管理工具,它能够管理 Docker 的资源,包括容
器,主机等等。支持节点动态集群,同时可扩展集群规模。通过可视化的 Web UI 对容器进
行管理和监控,还提供了在线 console 终端等功能。
拉取 Shipyard 相关镜像,具体命令如下所示。
[root@damiwang ~]# docker pull shipyard/shipyard
[root@damiwang ~]# docker pull swarm
[root@damiwang ~]# docker pull shipyard/docker-proxy
[root@damiwang ~]# docker pull alpine
[root@damiwang ~]# docker pull microbox/etcd
[root@damiwang ~]# docker pull rethinkdb
下面是启动 Shipyard 相关容器的命令。
[root@damiwang ~]# docker run -ti -d --restart=always --name shipyard-rethinkdb rethinkdb
//Shipyard 使用 RethinkDB 做为数据存储工具
[root@damiwang ~]# docker run -ti -d -p 4001:4001 -p 7001:7001 --restart=always --name
shipyard-discovery microbox/etcd:latest -name discovery
//Etcd 作 为 服 务 发 现 工
具,它是一种键值存储,命令的最后“-name discovery”是执行到容器内部的命令
[root@damiwang ~]# docker run -ti -d -p 2375:2375 --hostname=$HOSTNAME --restart=always
--name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375
shipyard/docker-proxy:latest
//Docker 代理服务,将请求从 TCP 转发到 Unix 套接字,参数-e
是在容器内设置环境变量
[root@damiwang ~]# docker run -ti -d --restart=always --name shipyard-swarm-manager
swarm:latest manage --host tcp://0.0.0.0:3375 etcd://192.168.9.18:4001
//Swarm 管理节点,
镜像“swarm:latest”后面的是运行在容器内的命令,下同
[root@damiwang ~]# docker run -ti -d --restart=always --name shipyard-swarm-agent
swarm:latest join --addr 192.168.9.18:2375 etcd://192.168.9.18:4001 //Swarm Agent 节点
[root@damiwang ~]# docker run -ti -d --restart=always --name shipyard-controller --link
shipyard-rethinkdb:rethinkdb
--link
shipyard-swarm-manager:swarm
-p
8080:8080
shipyard/shipyard:latest server -d tcp://swarm:3375
//Shipyard 管理工具
2. 安装基础服务
基础服务包括:RedisTengineELKKafkaNexusMySQLSonarRabbitMQ
MycatJenkins,这些基础服务在发布包内的路径为:大觅网\base 镜像包。上传基础服
务的目录到/home/px2/envdm 下,记住:要将 docker-compose.yml 文件也一并上传。各基
础服务目录内包括:Dockerfile、程序包、配置文件等。
在正式开始部署基础服务之前,将其中 KafkaKibanaLogstashSonar 目录下的配
置文件内对应的 IP 修改为自己实验环境的 IP。可采用 grep 命令查找过滤,个别目录内不
只一个文件需要修改。如果采用与本案例相同的 IP 地址,则不需要修改。
[root@damiwang ~]# cd /home/px2/envdm
[root@damiwang envdm]# grep -r 192.168 Kafka/
Kafka/server.properties:advertised.listeners=PLAINTEXT://192.168.9.18:9091
[root@damiwang envdm]# grep -r 192.168 Kibana/
Kibana/kibana.yml:elasticsearch.url: "http://192.168.9.18:9200"
[root@damiwang envdm]# grep -r 192.168 Logstash/
Logstash/logstash.conf:
bootstrap_servers => ["192.168.9.18:9091"]
Logstash/logstash.conf:
hosts=> ["192.168.9.18:8200"]
Logstash/logstash.yml:xpack.monitoring.elasticsearch.url: http://192.168.9.18:9200
[root@damiwang envdm]# grep -r 192.168 Sonar/
Sonar/sonar.properties:sonar.jdbc.url=jdbc:mysql://192.168.9.18:3306/sonar?useUnicode=true&ch
aracterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=fa
lse
另外,CentOS 7.3 系统默认是没有安装 docker-compose 命令的,可将发布包内提供
docker-compose 程序上传到/usr/local/bin/目录下,并且为 docker-compose 文件分配可
执行权限。
[root@damiwang ~]# chmod +x /usr/local/bin/docker-compose
通过一条 Docker Compose 命令完成基础服务容器的部署安装。
[root@damiwang ~]# cd /home/px2/envdm
[root@damiwang envdm]# docker-compose up -d整个部署过程会持续较长时间。如果在部署过程中某个基础服务报错,可查看容器日志
信息及对应的 Dockerfile 进行排错。
1.2.5 基础服务配置
基于基础镜像启动的容器,还需要进行一些后续的配置。Shipyard 登录查看现有创建
的容器信息;MySQL 通过 Shipyard 设置权限及工具导入数据库结构和初始化数据;Jenkins
进行初始化配置。
1. Shipyard 登录和容器管理
Shipyard 安装完成,可以通过浏览器访问 http://192.168.9.18:8080,打开登录页面,
如图 1.7 所示。默认用户名是 admin,默认密码是 shipyard
1.7 Shipyard 登录界面
登录后可进入 Shipyard 容器管理界面,如图 1.8 所示。Shipyard 可实现对容器的常规
管理,比如容器的启动、停止、查看日志等,还可以进行创建新容器及管理镜像等操作。
1.8 Shipyard 容器管理界面
2. MySQL 容器权限赋予和库导入
在容器管理界面找到 MySQL 容器,然后到该容器最右侧单击小扳手图标->“Console”
选项,进入 MySQL 容器的 console 界面,单击方框后的“RUN”按钮,如图 1.9 所示。
1.9 通过 Shipyard 连接 MySQL 容器的 console 界面
在此界面下,执行设置 root 用户密码、赋予 root 用户远程访问权限,具体操作如下所
示。
[root@8a259364a8b6 mysql]# mysql -uroot -p
//默认密码为空直接回车
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set password=password("123456") where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> grant all privileges on *.* to root@'%' identified by '123456' with grant option;
Query OK, 0 rows affected (0.00 sec)
内 “\software\Navicat for MySQL” 目 录 下 , 双 击
“navicat_trial_11.1.20.0.1449226634.exe”文件,安装 Navicat for MySQL 工具。安装完成
后,双击“PatchNavicat.exe”文件,对其进行破解打补丁。安装和破解完成后,使用 Navicat
for MySQL 工具连接到上面创建的 MySQL 容器,如图 1.10 所示。
1.10 远程连接 MySQL 容器
在新建的连接上,右键单击打开连接选项,再右键单击新建数据库选项。设置数据
库名dm_base字符集utf8排序规则utf8_general_ci,最后单击确定按钮完
成数据库的创建,如图 1.11 所示。
1.11 创建 dm_base 数据库
在刚创建的数据库“dm_base”上,首先右键单击打开数据库选项,然后右键单击运行
SQL 文件选项,选择要导入的创建表结构文件 dm_base.sql,单击开始按钮进行导入。
导入的大觅网 SQL 文件内包含有创建表结构和初始数据的 SQL 语句。大觅网数据库 SQL
文件在提供的发布包内路径为大觅网\数据库结构\大觅网数据库脚本,具体操作如图 1.12
所示。
1.12 导入 SQL 文件到库内
导入完成后,会输出“finished”“successfully”提示信息,如图 1.13 所示。
 1.13 数据库导入成功提示
大觅网所需要的数据库包括:dm_basedm_itemdm_paydm_schedulerdm_user
dm_orderdm_order1dm_order2dm_order3。上面介绍了 dm_base 数据库的创建和
数据导入操作,其他的数据库也需要仿照 dm_base 进行创建和导入。这些数据库全部创建
和数据导入完成后,界面效果如图 1.14 所示。
1.14 数据库完成导入

3. Jenkins 基础配置

通过浏览器访问 URL 地址 http://192.168.9.18:8899,打开 Jenkins 配置向导,如图 1.15

所示。
1.15 首次访问 Jenkins 页面
由于 Jenkins 是采用容器的方式搭建,可通过如下命令登录 Jenkins 容器查看密码文件。
[root@damiwang envdm]# docker-compose exec jenkins bash
//注意所在目录
[root@8e5f32e18fa4 webapps]# cat /root/.jenkins/secrets/initialAdminPassword
476b4f82934b427db5f90b09a3bd7537
输入初始密码,单击继续按钮,进入插件安装界面。单击安装推荐的插件选项,如
1.16 所示。因为 Jenkins 的插件安装源是在国外,所以安装速度可能会比较慢,需要等
待的时间稍长。
1.16 Jenkins 插件安装选择界面
安装推荐的插件安装完成后,可能存在一些插件安装失败的情况,暂时可以不关注,
先进行后续的创建管理员用户操作。后期可通过 Jenkins 的插件管理安装这些缺失的插件。
在插件安装完成后,创建 Jenkins 管理员用户如图 1.17 所示。本案例中的用户名和密码,
需参考案例环境表格 1-2 内的值。
1.17 Jenkins 创建用户界面
单击保存并完成按钮后,进入“实例配置”页面,如图 1.18 所示。
1.18 Jenkins 实例配置
最后单击“保存并完成”,至此 Jenkins 基础配置完成。
4. Jenkins 插件配置
针对 Jenkins 插件安装缓慢,可以使用下面的方法,加速插件安装速度。
Jenkins 容器内设置 hosts 绑定,将插件更新地址解析到另外一个 Nginx 容器内。在
Nginx 容器内做域名跳转到清华的 Jenkins 源上面,从而实现直接访问清华 Jenkins 源地
址,加快访问速度。具体实现步骤如下所示。
(1)Jenkins 容器内绑定 hosts
[root@damiwang envdm]# docker-compose exec jenkins bash
//注意所在目录
[root@8e5f32e18fa4 webapps]# vi /etc/hosts
192.168.10.50
mirrors.jenkins-ci.org
//添加此行内容,之后退出容器
(2)创建跳转 Nginx 容器
[root@damiwang envdm]# vim /root/nginx.conf
//写入下面 nginx 配置内容
worker_processes 1;
events {
worker_connections 1024;
}
http {
include
mime.types;
default_type application/octet-stream;
access_log access.log;
error_log
error.log;
sendfile
on;
keepalive_timeout 65;
server
{
listen 80;
server_name mirrors.jenkins-ci.org;
location / {
proxy_redirect off;
proxy_pass https://mirrors.tuna.tsinghua.edu.cn/jenkins/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding "";
proxy_set_header Accept-Language "zh-CN";
}
index index.html index.htm index.php;
location ~ /\.
{
deny all;
}
access_log /tmp/access.log;
error_log
/tmp/error.log;
}
}
[root@damiwang envdm]# docker run -itd --name nginx-proxy --network envdm --ip
192.168.10.50 -p 10000:80 -v /root/nginx.conf:/etc/nginx/nginx.conf nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
54fec2fa59d0: Pull complete
4ede6f09aefe: Pull complete
f9dc69acb465: Pull complete
Digest: sha256:86ae264c3f4acb99b2dee4d0098c40cb8c46dcf9e1148f05d3a51c4df6758c12
Status: Downloaded newer image for nginx:latest
83b1f1a8abe0be7e30b3febf6600a7b4e627820b772ffba7d3831735bddb91a0
(3)修改更新站点
Jenkins 图 形 界 面 中 , 依 次 单 击 “Manage Jenkins”->“ManagePlugins”->“Advanced”->“Update Site”选项,将原来“Update Site”URL 替换为如下地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
替换完成后,单击“Submit”按钮,如图 1.19 所示。
1.19 更新 Update Site
完成上述三步后,就可以到“Manage Plugins”内的“Available”选项卡内再次尝试安装插
件,安装速度会有明显提升。在安装推荐插件过程中,由于网络快慢原因,“Localization:
Chinese(Simplified)”插件可能有的安装成功,有的安装失败。到“Manage Plugins”内的
“Installed”选项卡检查该插件是否安装成功,如果安装失败,需要到“Avaliable”选项卡内
再次进行安装,勾选该插件后单击“Install without restart”按钮进行安装。如图 1.20 所示。
1.20 中文支持插件安装
Localization: Chinese(Simplified)”插件安装完成后,需要重启 Jenkins 容器,Jenkins
界面内的相关按钮和链接都变为中文模式了。Jenkins 的重启操作命令如下所示。
[root@damiwang envdm]# docker-compose stop jenkins
Stopping envdm_jenkins_1 ... done
[root@damiwang envdm]# docker-compose start jenkins
Starting jenkins ... done
大觅网 Maven 项目的编译构建需要相应的插件。单击系统管理”->“插件管理”->“可选插
选项卡,然后在右上角搜索框内分别搜索 mavenssh git 关键字,需要安装的插件包
括:
Maven Artifact ChoiceListProvider (Nexus)
Maven Metadata Plugin for Jenkins CI server
Maven Integration
Publish Over SSH
SSH
Git
勾选对应的插件后,分别单击直接安装按钮,等待插件完成安装。界面效果如图 1.21
所示。
1.21 插件安装完成界面
5. Jenkins 系统配置
Jenkins 服务是运行在容器内,而大觅网众多项目是运行在云主机上,要想通过 Jenkins
将项目发布到云主机上,需要设置实现通过 SSH 连接远程服务器构建发布项目。单击系统
管理”->“系统配置选项,进入界面后下拉定位到“Publish over SSH”组件。单击新增按钮,
输入远程服务器的别名、连接地址、用户名、远程连接目录后,单击高级按钮,勾选中“Use
password authenticationor use a different key”验证选项,输入远程服务器登录密码,即
云主机密码。同时,需要在 damiwang 云主机上面创建目录/home/px2/tools,如图 1.22
示。
1.22 Jenkins 远程连接配置
其中:Name 可以自由定义,Hostname 为远程主机地址,Username 为登录用户,
Remote Directory 为远程主机存在的目录。如果 damiwang 云主机上不存在该目录,则需
手动创建。然后,单击界面下方的“Test Configuration”按钮,显示 Success 代表连接成功,
最后单击左下角的保存按钮退出,如图 1.23 所示。
1.23 保存退出
6. Jenkins 全局工具配置
单 击 系 统 管 理 ”->“ 全 局 工 具 配 置 选 项 , 指 定 Maven 的 配 置 文 件 地 址 为 :
/root/.m2/settings.xml,如图 1.24 所示。
1.24 设置 Maven 配置文件地址
Maven 模块,单击新增 Maven”按钮。Name 输入框中填写“maven3.6.0”,配置
MAVEN_HOME “/usr/local/apache-maven-3.6.0/”,如图 1.25 所示。
1.25 配置 Maven 目录
JDK 模块,单击新增 JDK”按钮,Name 输入框中填写“jdk1.8”JAVA_HOME 的值
“/usr/local/java/jdk1.8.0_171”,如图 1.26 所示。
1.26 配置 JDK 目录
最后,单击左下角保存按钮退出。至此,关于大觅网基础环境的部署已经全部完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2151307.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据保护从现在开始:如何抵御 .[RestoreBackup@cock.li].SRC 勒索病毒

导言 勒索病毒是一种不断演变的网络威胁&#xff0c;.[RestoreBackupcock.li].SRC、[chewbaccacock.li].SRC勒索病毒便是其中一种新型的攻击手段。该病毒通过加密用户文件并要求支付赎金来恢复访问&#xff0c;给个人和企业带来了严重的安全风险和经济损失。本文91数据恢复将探…

uniapp使用uview2上传图片功能

官网地址Upload 上传 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架 前提&#xff0c;需要下载vuew2插件 <view class"upload"><view class"u-demo-block__content"><view class"u-page__upload-item"&…

进程状态的优先级

1.进程的状态&#xff08;所有系统&#xff09; 因为是对于所有系统的&#xff0c;所以描述会很抽象。 补充知识&#xff1a; 并行和并发 并行&#xff1a;多个进程再多个cpu下分别同时运行并发&#xff1a;多个进程在一个cpu下采取进程切换的方式&#xff0c;在一段时间内&…

fiddler抓包06_抓取https请求(chrome)

课程大纲 首次安装Fiddler&#xff0c;抓https请求&#xff0c;除打开抓包功能&#xff08;F12&#xff09;还需要&#xff1a; ① Fiddler开启https抓包 ② Fiddler导出证书&#xff1b; ③ 浏览器导入证书。 否则&#xff0c;无法访问https网站&#xff08;如下图&#xff0…

prometheus通过nginx-vts-exporter监控nginx

Prometheus监控nginx有两种方式。 一种是通过nginx-exporter监控&#xff0c;需要开启nginx_stub_status,主要是nginx自身的status信息&#xff0c;metrics数据相对较少&#xff1b; 另一种是使用nginx-vts-exporter监控&#xff0c;但是需要在编译nginx的时候添加nginx-module…

MyBatis 分批次执行(新增,修改,删除)

import com.google.common.collect.Lists;import java.util.Iterator; import java.util.List; import java.util.function.Consumer;/*** Description mybatis分批插入数据使用* Author WangKun* Date 2024/9/19 11:20* Version*/ public class MyBatisSqlUtils {/*** param d…

用户态缓存:高效数据交互与性能优化

目录 1. 用户态缓存区工作背景 1.1 为什么每条连接都需要读写缓存区 1.1.1 读缓存区&#xff08;Read Buffer&#xff09; 1.1.2 写缓存区&#xff08;Write Buffer&#xff09; 1.2 用户态缓存区的工作流程 1.3 用户态缓存区的重要性 2. UDP 和 TCP 的设计差异 2.1 UD…

神经网络 卷积层 参数共享

参数共享常用于神经网络卷积层中&#xff0c;共享的实际上就是说卷积核中的参数一直保持不变&#xff0c;如下所示就可以称为共享参数啦&#xff01;&#xff01;

C# 实时流转换为m3u8

主要通过FFmpeg 执行命令进行转换 FFmpeg 下载地址 命令行 ffmpeg -i "rtsp://your_rtsp_stream_address" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 12 -f hls "output.m3u8"start_number 设置播放列表中最先播放的索引号&#xff0c;…

JVM基础篇学习笔记

【注&#xff1a;本文章为自学笔记&#xff0c;仅供学习使用。】 一、JVM简介 JVM是Java虚拟机的缩写&#xff0c;本质上是运行在计算机上面的程序&#xff0c;作用是运行Java字节码文件。 1.1 JVM的功能 Java如果不做优化&#xff0c;则性能不如C/C&#xff0c;因为后者会…

uv-ui组件的使用——自定义输入框的样式

一、官网的使用 二、自定义修改样式 我是在小程序中使用此组件 想要自定义修改样式的话&#xff0c;需要placeholderClass加上 placeholderStyle配合使用 tip1&#xff1a;单独使用placeholderClass&#xff0c;他只会第一次渲染时生效&#xff0c;输入文字再清除后就不生效…

Spring面试题合集

Spring 1.谈谈你对Spring的理解 首先Spring是一个轻量级的开源框架&#xff0c;为Java程序的开发提供了基础架构支持&#xff0c;简化了应用开发&#xff0c;让开发者专注于开发逻辑&#xff1b; 同时Spring是一个容器&#xff0c;它通过管理Bean的生命周期和依赖注入&#…

flask项目初始化

1、初始环境 python3.8 2、flask文档地址&#xff1a;https://flask.palletsprojects.com/en/latest/installation/#install-flask 3、初始化项目 $ mkdir myproject $ cd myproject $ python3 -m venv .venv $ . .venv/bin/activate $ pip install Flask4、打开项目mypr…

机器翻译之多头注意力(MultiAttentionn)在Seq2Seq的应用

目录 1.多头注意力&#xff08;MultiAttentionn&#xff09;的理念图 2.代码实现 2.1创建多头注意力函数 2.2验证上述封装的代码 2.3 创建 添加了Bahdanau的decoder 2.4训练 2.5预测 3.知识点个人理解 1.多头注意力&#xff08;MultiAttentionn&#xff09;的理念图…

云服务器使用

最近搭建一个内网穿透工具&#xff0c;推荐一个云服务器&#xff1a; 三丰台&#xff1a;https://www.sanfengyun.com/ 作为学生党这个服务器是免费的可以体验使用&#xff01;可以使用免费虚拟主机和云服务器&#xff0c;写一个申请的基本步骤方便大家构建 申请步骤&#x…

11.1图像的腐蚀和膨胀

基本概念-图像腐蚀 图像腐蚀是一种用于去除图像中小的对象或者突出物体边缘的形态学操作。 图像腐蚀&#xff08;erosion&#xff09;的基本概念 图像腐蚀通常用于二值图像&#xff0c;其基本原理是从图像中“侵蚀”掉一些像素点&#xff0c;这些像素点通常是边界上的或者是孤…

Word中引用参考文献和公式编号的方法

文章目录 应用参考文献对于单个文献引用多于多个文献同时引用 公式编号手动编号自动编号 参考&#xff1a; 应用参考文献 对于单个文献引用 word中的参考文献用交叉应用实现。 首先&#xff0c;将参考文献编号&#xff1a; 然后&#xff0c;在需要引用的地方用交叉引用插入…

VM虚拟机使用的镜像文件下载

文章目录 Windows系统进入微软官网下载工具以Windows10为例下载镜像文件 Windows系统 进入微软官网下载工具 微软中国官网&#xff1a;https://www.microsoft.com/zh-cn/ 以Windows10为例下载镜像文件 选择下载的路径 开始下载 安装windows10操作系统出现Time out问题及解决办…

【AI视频】Runway:Gen-2 运镜详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 &#x1f4af;前言&#x1f4af;Camera Control&#xff08;运镜&#xff09;&#x1f4af;Camera Control功能测试Horizonta&#xff08;左右平移&#xff09;Vertical&#xff08;上下平移&#xff0…

Python 中的 Kombu 类库

Kombu 是一个用于 Python 的消息队列库&#xff0c;提供了高效、灵活的消息传递机制。它是 Celery 的核心组件之一&#xff0c;但也可以单独使用。Kombu 支持多种消息代理&#xff08;如 RabbitMQ、Redis、Amazon SQS 等&#xff09;&#xff0c;并提供了消息生产者和消费者的功…