快速上手
# so-fast-cloud 微服务框架介绍
# 前端运行
# 本机开发环境
so-fast-web 基于 element-ui + vue-cli3 开发。开发环境所需软件清单如下:
软件 | 版本 | 备注 |
---|---|---|
节点 | >=v8.12.0 <=v16 | v17 以上有金融问题 |
查看命令行 | >=3.0 | |
npm | >=6.4.1 | |
去 | WebStorm or VSCode | 依据个人喜好选择。 |
使用 vue -v 查看 vue-cli 版本 如发现版本为 2.* 则需要卸载后重新安装
# 卸载旧版本vue-cli
npm uninstall vue-cli -g
# 安装新版本的vue-cli
npm install -g @vue/cli
2
3
4
5
2
3
4
5
# 代码获取
GIT 地址:https://gitee.com/daoxincc/sofast-web.git (opens new window) 并切换分支到 cloud。
如有问题请联系国内开发技术委员会。
# 工程导入
打开 IDE,选择导入或者打开选项,选择项目目录进行导入
# 配置文件修改
修改vue.config.js配置对应的代理配置
/api为后端接口地址代理
/files为后端显示图片代理
*修改对应的环境变量 如果配置中无http://则会走devServer
.env.development(开发)
.env.production(生产)
.env.staging(测试)
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 工程启动
# 确认
工程正常启动后,其通过以下方式确认其正常启动。(默认使用 8080 端口)
一、访问页面,能够正常看到登录页面。 URL:http://localhost:8080/ (opens new window)
# 后端运行
# 本机开发环境
so-fast-cloud 基于 Springboot+SpringCloud&Alibaba 构建,数据库基于 MySql(后续会丰富数据源),并使用 Maven 管理工程。开发环境所需软件清单如下:
软件 | 版本 | 备注 |
---|---|---|
爪哇 | 8 | |
Maven | >=3.6.3 | 推荐配置阿里源。 |
Redis | stable | 推荐构建在服务器上,Windows 平台版本稳定性较差。服务器安装 Redis 一定要开启认证。 |
MySQL 的 | 5.7 | |
Nacos | >=1.2 <=1.4 | 不要使用 2.0 以上版本,不兼容 |
去 | IntelliJ IDEA or Spring Tool Suite | 推荐使用 IDEA。依据个人喜好选择。 |
# 代码获取
1.0 版本 GIT 地址:http://101.133.164.217:8099/so_fast_group/so-fast-cloud.git (opens new window)
2.0 版本 GIT 地址:http://101.133.164.217:8099/so_fast_group/so-fast-pl-cloud.git (opens new window)
如有问题请联系国内开发技术委员会。
# 工程导入
打开 IDE,选择导入或者打开选项(STS 选择打开 MAVEN 工程,IDEA 选择工程目录打开),工程导入后 MAVEN 会执行工程的构建,所需时间较长,请耐心等待。
推荐在 IDE 里面把 MAVEN 配置为本地安装的 MAVEN 工具。
针对 property 等文件的中文乱码请自行配置 IDE。
# Maven 配置
在本地 maven 配置文件中 settings.xml 中 servers
节点添加如下私服认证信息配置:
<server>
<id>sofast-proxy</id>
<username>ntt-read</username>
<password>(Nttdata)</password>
</server>
2
3
4
5
6
2
3
4
5
6
在 mirrors
节点中追加阿里云 maven 仓库代理,提升下载速度
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
2
3
4
5
6
2
3
4
5
6
# 配置 hosts
在开发时,为了防止因服务器 IP 变更而导致 maven 私服地址变化,特意通过 hosts 配置了 IP 和私有域名的映射。
配置如下(hosts 文件位置:linux 在 /etc/hosts;windowns 在 C:¥¥Windows¥System32¥drivers¥etc¥hosts
101.133.164.217 so-fast
101.133.164.217 sofast.com
101.133.164.217 maven.sofast
2
3
2
3
然而,现在域名服务商在逐步禁止私有域名的使用,因此,后续版本我们将取消 hosts 配置,直接使用 IP 地址的方式, 开发人员遇到无法访问时,可将 pom.xml 中的 sofast-proxy 标签对应的域名换成上述的 ip 地址。
# 数据导入
由于基础框架内置了 UPMS、字典、CMS 等基础功能,请将工程中的基础数据,导入项目数据库。
so-fast-cloud
|---------db
|----sf-cms.sql
|----sf-log.sql
|----sf-log-slave.sql
|----sf-nacos-config.sql
|----sf-system.sql
|----sf-upms.sql
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 配置文件修改
基础环境和数据准备好之后,请修改配置文件。
bootstrap.yml
系统级参数配置
本文件内配置了服务端口、环境、nacos、swagger。
application-dev.yml
开发环境参数配置(微服务配置已全部放入 nacos 配置中心)
本文件内配置了各种项目控制信息,如数据库、redis、日志级别、安全相关、文件存储、日志等。
一定要修改的是数据库以及 redis 的相关配置,其中 URL、PORT、DataBase、PassWord 等为必须修改项。其余性能相关参数不建议修改,如需修改请慎重。
数据库配置
datasource:
# 主库数据源
master:
url: jdbc:mysql://xxxx:3306/sf-log?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
slave:
url: jdbc:mysql://xxxx:3306/sf-log-slave?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Reis 配置
redis:
# 地址
host: ${your_redis_host}
port: ${your_redis_port}
# 密码
password: ${your_redis_password}
2
3
4
5
6
2
3
4
5
6
# 工程启动
1、首先启动 Nacos 注册 / 配置中心
修改 nacos 的配置文件:启用 mysql 持久化并配置 mysql 连接
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/sf-nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=mysql-user
db.password=mysql-password
2
3
4
5
6
7
2
3
4
5
6
7
启动 nacos
cd your_nacos_home_path/bin
sh startup.sh -m standalone
2
2
Nacos 启动后,将所有配置导入配置中心,脚本位于工程的 nacos 目录下,直接在 nacos 中导入即可。
so-fast-cloud
|---nacos
|---nacos_config_export_20210204113116.zip
2
3
2
3
2、通过一键启动脚本启动所有微服务
so-fast-cloud
|-----deploy
|------start.sh
|------stop.sh
2
3
4
2
3
4
3、或者通过 IDE 的 run 功能,启动工程。启动过程中如出现问题请联系国内开发技术委员会。
通过 IDE 启动时,需要指定 profile 变量,在
Run/Debug Configurations
中配置Active Profiles
为dev
。
# 确认
工程正常启动后,其通过以下方式确认其正常启动。
一、访问 nacos 页面,能够正常看到所有已经注册的微服务。
网址:http://localhost:8848/ (opens new window)
默认用户密码:nacos/nacos
二、通过 Admin 监控各服务健康状况。
网址:http://localhost:9101 (opens new window)
用户密码:sofast/111111
# 常见问题
1、 so-fast-mpg
工程的依赖包无法下载,maven 依赖报错等。
原因 1: so-fast-mpg
工程需要依赖 maven 私服 jar 包,私服地址在父 pom.xml 中已经配置 http://101.133.164.217:8091/repository/maven-public/,并确保可以通过外网正常访问。 (opens new window)
注意: 如果电脑上安装了某些安全软件,屏蔽了 ip 的,请自行申请开通,如 zscala 等
原因 2:请确认修改的本地 setting.xml 位置是否正确(当存在多个 setting.xml 时);请确认是否在 setting.xml 中已经配置了其他全局的镜像代理库?可以尝试注释其他配置,下面给出一个可用的 setting,xml 示例文件供参考:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!--
| This is the configuration file for Maven. It can be specified at two levels:
|
| 1. User Level. This settings.xml file provides configuration for a single user,
| and is normally provided in ${user.home}/.m2/settings.xml.
|
| NOTE: This location can be overridden with the CLI option:
|
| -s /path/to/user/settings.xml
|
| 2. Global Level. This settings.xml file provides configuration for all Maven
| users on a machine (assuming they're all using the same Maven
| installation). It's normally provided in
| ${maven.conf}/settings.xml.
|
| NOTE: This location can be overridden with the CLI option:
|
| -gs /path/to/global/settings.xml
|
| The sections in this sample file are intended to give you a running start at
| getting the most out of your Maven installation. Where appropriate, the default
| values (values used when the setting is not specified) are provided.
|
|-->
<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
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<!-- interactiveMode
| This will determine whether maven prompts you when it needs input. If set to false,
| maven will use a sensible default value, perhaps based on some other setting, for
| the parameter in question.
|
| Default: true
<interactiveMode>true</interactiveMode>
-->
<!-- offline
| Determines whether maven should attempt to connect to the network when executing a build.
| This will have an effect on artifact downloads, artifact deployment, and others.
|
| Default: false
<offline>false</offline>
-->
<!-- pluginGroups
| This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
| when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
| "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
|-->
<pluginGroups>
<!-- pluginGroup
| Specifies a further group identifier to use for plugin lookup.
<pluginGroup>com.your.plugins</pluginGroup>
-->
</pluginGroups>
<!-- proxies
| This is a list of proxies which can be used on this machine to connect to the network.
| Unless otherwise specified (by system property or command-line switch), the first proxy
| specification in this list marked as active will be used.
|-->
<proxies>
<!-- proxy
| Specification for one proxy, to be used in connecting to the network.
|
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
-->
</proxies>
<!-- servers
| This is a list of authentication profiles, keyed by the server-id used within the system.
| Authentication profiles can be used whenever maven must make a connection to a remote server.
|-->
<servers>
<server>
<id>sofast-proxy</id>
<username>ntt-read</username>
<password>(Nttdata)</password>
</server>
<!-- server
| Specifies the authentication information to use when connecting to a particular server, identified by
| a unique name within the system (referred to by the 'id' attribute below).
|
| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
| used together.
|
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
-->
<!-- Another sample, using keys to authenticate.
<server>
<id>siteServer</id>
<privateKey>/path/to/private/key</privateKey>
<passphrase>optional; leave empty if not used.</passphrase>
</server>
-->
</servers>
<!-- mirrors
| This is a list of mirrors to be used in downloading artifacts from remote repositories.
|
| It works like this: a POM may declare a repository to use in resolving certain artifacts.
| However, this repository may have problems with heavy traffic at times, so people have mirrored
| it to several places.
|
| That repository definition will have a unique id, so we can create a mirror reference for that
| repository, to be used as an alternate download site. The mirror site will be the preferred
| server for that repository.
|-->
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<!--
<mirror>
<id>sofast-proxy</id>
<mirrorOf>*</mirrorOf>
<name>NCIT Maven</name>
<url>http://101.133.164.217:8091/repository/maven-public/</url>
</mirror>
-->
</mirrors>
<!-- profiles
| This is a list of profiles which can be activated in a variety of ways, and which can modify
| the build process. Profiles provided in the settings.xml are intended to provide local machine-
| specific paths and repository locations which allow the build to work in the local environment.
|
| For example, if you have an integration testing plugin - like cactus - that needs to know where
| your Tomcat instance is installed, you can provide a variable here such that the variable is
| dereferenced during the build process to configure the cactus plugin.
|
| As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
| section of this document (settings.xml) - will be discussed later. Another way essentially
| relies on the detection of a system property, either matching a particular value for the property,
| or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
| value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.
| Finally, the list of active profiles can be specified directly from the command line.
|
| NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
| repositories, plugin repositories, and free-form properties to be used as configuration
| variables for plugins in the POM.
|
|-->
<profiles>
<!-- profile
| Specifies a set of introductions to the build process, to be activated using one or more of the
| mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
| or the command line, profiles have to have an ID that is unique.
|
| An encouraged best practice for profile identification is to use a consistent naming convention
| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
| This will make it more intuitive to understand what the set of introduced profiles is attempting
| to accomplish, particularly when you only have a list of profile id's for debug.
|
| This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
<profile>
<id>jdk-1.4</id>
<activation>
<jdk>1.4</jdk>
</activation>
<repositories>
<repository>
<id>jdk14</id>
<name>Repository for JDK 1.4 builds</name>
<url>http://www.myhost.com/maven/jdk14</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
</repositories>
</profile>
-->
<!--
| Here is another profile, activated by the system property 'target-env' with a value of 'dev',
| which provides a specific path to the Tomcat instance. To use this, your plugin configuration
| might hypothetically look like:
|
| ...
| <plugin>
| <groupId>org.myco.myplugins</groupId>
| <artifactId>myplugin</artifactId>
|
| <configuration>
| <tomcatLocation>${tomcatPath}</tomcatLocation>
| </configuration>
| </plugin>
| ...
|
| NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
| anything, you could just leave off the <value/> inside the activation-property.
|
<profile>
<id>env-dev</id>
<activation>
<property>
<name>target-env</name>
<value>dev</value>
</property>
</activation>
<properties>
<tomcatPath>/path/to/tomcat/instance</tomcatPath>
</properties>
</profile>
-->
</profiles>
<!-- activeProfiles
| List of profiles that are active for all builds.
|
<activeProfiles>
<activeProfile>alwaysActiveProfile</activeProfile>
<activeProfile>anotherAlwaysActiveProfile</activeProfile>
</activeProfiles>
-->
</settings>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281