后端运行

本机开发环境

so-fast-cloud基于Springboot+SpringCloud&Alibaba构建,数据库基于MySql(后续会丰富数据源),并使用Maven管理工程。开发环境所需软件清单如下:

软件 版本 备注
JAVA 8
Maven >=3.6.3 推荐配置阿里源。
Redis stable 推荐构建在服务器上,Windows平台版本稳定性较差。服务器安装Redis一定要开启认证。
MySql 5.7
Nacos >=1.2 <=1.4 不要使用2.0以上版本,不兼容
IDE IntelliJ IDEA or Spring Tool Suite 推荐使用IDEA。依据个人喜好选择。

代码获取

1.0版本GIT地址:http://101.133.164.217:8099/so_fast_group/so-fast-cloud.git

2.0版本GIT地址:http://101.133.164.217:8099/so_fast_group/so-fast-pl-cloud.git

如有问题请联系国内开发技术委员会。

工程导入

打开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>

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>
配置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

然而,现在域名服务商在逐步禁止私有域名的使用,因此,后续版本我们将取消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

配置文件修改

基础环境和数据准备好之后,请修改配置文件。

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

Reis配置

redis:
  # 地址
  host:  ${your_redis_host}
  port:  ${your_redis_port}
  # 密码
  password:  ${your_redis_password}

工程启动

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

启动nacos

cd your_nacos_home_path/bin
sh startup.sh -m standalone

Nacos启动后,将所有配置导入配置中心,脚本位于工程的nacos目录下,直接在nacos中导入即可。

so-fast-cloud
    |---nacos
          |---nacos_config_export_20210204113116.zip

nacos

2、通过一键启动脚本启动所有微服务

so-fast-cloud
    |-----deploy
                    |------start.sh
                    |------stop.sh

3、或者通过IDE的run功能,启动工程。启动过程中如出现问题请联系国内开发技术委员会。

通过 IDE启动时,需要指定profile变量,在Run/Debug Configurations中配置Active Profilesdev

确认

工程正常启动后,其通过以下方式确认其正常启动。

一、访问nacos页面,能够正常看到所有已经注册的微服务。

​ URL:http://localhost:8848/

​ 默认用户密码:nacos/nacos

二、通过Admin监控各服务健康状况。

​ URL:http://localhost:9101

​ 用户密码:sofast/111111

常见问题

1、so-fast-mpg工程的依赖包无法下载,maven依赖报错等。

原因1:so-fast-mpg工程需要依赖maven私服jar包,私服地址在父pom.xml中已经配置http://101.133.164.217:8091/repository/maven-public/,并确保可以通过外网正常访问。

注意: 如果电脑上安装了某些安全软件,屏蔽了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>
Copyright © 2020. 恩梯梯数据(中国)信息技术有限公司. all right reserved,powered by Gitbook该文件修订时间: 2023-12-19 13:33:35

results matching ""

    No results matching ""