1. 项目环境搭建
为了还原企业中的开发环境,神领物流项目提供了一套环境以供学习使用。
1.1. 开发环境说明
说明:
- 加入开发团队后,首先需要从git仓库中拉取项目代码
- 拉取到项目代码后,项目会通过Maven私服下载所需要的jar包
- 开发工程师按照需求文档进行业务开发,在开发完成后将代码推送到git仓库
- 代码推送到git后,git会通知Jenkins(自动化部署系统)
- Jenkins接收到通知后,拉取到最新的代码,并且将服务部署到服务器
1.2. 虚拟机环境
1.2.1. 导入虚拟机
方案一:windows环境
VMware安装过程省略,建议版本使用15.5以上版本。
默认虚拟机设置的内存大小内8G,虚拟内存为16GB,建议保持此配置,不建议进行调整。
1.2.2. 配置VMware网络
因为虚拟机配置了静态IP地址为192.168.150.101,因此需要VMware软件的虚拟网卡采用与虚拟机相同的网段。
1.2.3. 配置VMware
首先,在VMware中选择编辑,虚拟网络编辑器:
这里需要管理员权限,因此要点击更改设置:
接下来,就可以修改虚拟网卡的IP地址了,流程如图:
注意:一定要严格按照标号顺序修改,并且IP地址也要保持一致!
1.2.4. 验证
点击确定后,等待一段时间,VMware会重置你的虚拟网卡。完成后,可以在windows的网络控制面板看到:
选中该网卡,右键点击,在菜单中选择状态,并在弹出的状态窗口中选择详细信息:
在详细信息中,查看IPv4地址是否是 192.168.150.1
:
如果与我一致,则证明配置成功!
1.2.5. 导入
资料中提供了一个虚拟机文件:
打开VMware,选择文件,然后打开,找到之前提供的虚拟机文件夹,进入文件夹后,选中CentOS7-sl.ovf
文件,然后点击打开:
导入成功:
启动虚拟机,选择【我已复制该虚拟机】:
1.2.6. 登入
虚拟机登入信息如下:
# 用户名
root
# 密码
123321
1.2.7. 测试网络
最后,通过命令测试网络是否畅通:
ping baidu.com
注意:只要按照文档导入虚拟机即可,其他软件无需自己安装,都已经安装了,并且开机自启。
通过dps命令可以查询上述列表,dps是自定义命令。 自定义命令方法如下:
vim ~/.bashrc
#增加如下内容
alias dps='docker ps --format "table{{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"'
#保存退出
#生效
source ~/.bashrc
通过浏览器访问地址:http://192.168.150.101:10880/ ,如果能够看到如下界面,说明服务器启动成功。
项目中的git服务采用gogs系统,之所以选择gogs系统,是因为运行gogs系统所需要系统资源较小,功能相对完整。
2.2.2、服务列表
在虚拟机中提供了一些基础服务,具体如下:
名称 | 地址 | 用户名/密码 | 端口 |
---|---|---|---|
git | http://git.sl-express.com/ | sl/sl123 | 10880 |
maven | http://maven.sl-express.com/nexus/ | admin/admin123 | 8081 |
jenkins | http://jenkins.sl-express.com/ | root/123 | 8090 |
权限管家 | http://auth.sl-express.com/api/authority/static/index.html | admin/123456 | 8764 |
RabbitMQ | http://rabbitmq.sl-express.com/ | sl/sl321 | 15672 |
MySQL | - | root/123 | 3306 |
nacos | http://nacos.sl-express.com/nacos/ | nacos/nacos | 8848 |
neo4j | http://neo4j.sl-express.com/browser/ | neo4j/neo4j123 | 7474 |
xxl-job | http://xxl-job.sl-express.com/xxl-job-admin | admin/123456 | 28080 |
EagleMap | http://eaglemap.sl-express.com/ | eagle/eagle | 8484 |
seata | http://seata.sl-express.com/ | seata/seata | 7091 |
Gateway | http://api.sl-express.com/ | - | 9527 |
admin | http://admin.sl-express.com/ | - | 80 |
skywalking | http://skywalking.sl-express.com/ | - | 48080 |
Redis | - | 123321 | 6379 |
MongoDB | - | sl/123321 | 27017 |
可以看到,每个服务都有对应的域名地址访问,需要在本机配置hosts映射才能访问。
2.2.3、配置本机hosts
修改本机的hosts文件:
一般不建议直接对该文件修改,推荐使用 uTools 工具中的hosts
插件修改:(uTools安装包在资料中有提供)
内如如下:
192.168.150.101 git.sl-express.com
192.168.150.101 maven.sl-express.com
192.168.150.101 jenkins.sl-express.com
192.168.150.101 auth.sl-express.com
192.168.150.101 rabbitmq.sl-express.com
192.168.150.101 nacos.sl-express.com
192.168.150.101 neo4j.sl-express.com
192.168.150.101 xxl-job.sl-express.com
192.168.150.101 eaglemap.sl-express.com
192.168.150.101 seata.sl-express.com
192.168.150.101 skywalking.sl-express.com
192.168.150.101 api.sl-express.com
192.168.150.101 admin.sl-express.com
打开浏览器测试:http://git.sl-express.com/
看到这个页面就说明hosts
已经生效。
2.2.4、环境说明
通过上面的测试,可以通过域名访问各种服务了,访问过程是怎么样的呢?其实,在101机器中安装了nginx,通过反向代理功能访问到各种对应的服务。如下:
说明:
- 通过浏览器按照域名的访问访问,如:http://git.sl-express.com/ ,先通过本地系统的
hosts
文件找到映射的ip地址 - 此时,就会访问到虚拟机环境,由于请求没有加端口号,默认访问80端口
- 由于在101机器部署安装nginx服务并且占用的是80端口,请求就会进入nginx
- nginx会根据不同的域名将请求转发到不同的服务,例如:git.sl-express.com -> 127.0.0.1:18080
通过vim /usr/local/src/nginx/conf/nginx.conf
命令查看nginx的配置文件:
2.2.5、配置Maven私服
在101机器中提供了maven私服,需要本地配置maven(建议版本为3.6.x)才能使用私服,配置文件参考如下:
<?xml version="1.0" encoding="UTF-8"?>
<settings
xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库 这里要改成你自己的本地仓库位置 -->
<localRepository>F:\maven\repository</localRepository>
<!-- 配置私服中deploy的账号 -->
<servers>
<server>
<id>sl-releases</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>sl-snapshots</id>
<username>deployment</username>
<password>deployment123</password>
</server>
</servers>
<!-- 使用阿里云maven镜像,排除私服资源库 -->
<mirrors>
<mirror>
<id>mirror</id>
<mirrorOf>central,jcenter,!sl-releases,!sl-snapshots</mirrorOf>
<name>mirror</name>
<url>https://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>sl</id>
<!-- 配置项目deploy的地址 -->
<properties>
<altReleaseDeploymentRepository>
sl-releases::default::http://maven.sl-express.com/nexus/content/repositories/releases/
</altReleaseDeploymentRepository>
<altSnapshotDeploymentRepository>
sl-snapshots::default::http://maven.sl-express.com/nexus/content/repositories/snapshots/
</altSnapshotDeploymentRepository>
</properties>
<!-- 配置项目下载依赖的私服地址 -->
<repositories>
<repository>
<id>sl-releases</id>
<url>http://maven.sl-express.com/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>sl-snapshots</id>
<url>http://maven.sl-express.com/nexus/content/repositories/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<!-- 激活配置 -->
<activeProfile>sl</activeProfile>
</activeProfiles>
</settings>