乐趣区

关于java:如何以源码形式运行Nacos-Server

官网规范运行形式

下载解压可运行包

curl -O https://github.com/alibaba/nacos/releases/download/1.3.2/nacos-server-1.3.2.tar.gz
tar -zxvf nacos-server-1.3.2.tar.gz
cd nacos/bin

执行运行

# Linux/Unix/Mac 启动命令(standalone 代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

# 如果您应用的是 ubuntu 零碎,或者运行脚本报错提醒[[符号找不到,可尝试如下运行:bash startup.sh -m standalone

# Windows 启动命令(或者双击 startup.cmd 运行文件)cmd startup.cmd

为什么要源码化运行

1. 不便开发过程应用

如果从 Spring Cloud Netflix 体系迁徙到 Spring Cloud Alibaba 技术体系,显著的感触是整个体系失去简化。Nacos 承当整个 Spring Cloud 的服务发现、配置管理局部的实现。是整个开发过程中 强依赖,启动微服务业务要去查看 Nacos Server 是否曾经启动,解压装置的形式变的十分不便。

如果把 Nacos Server 作为整个微服务框架的一部分间接 Main 启动,是不是更加不便便当?

2. UI 共性定制化

  • 若以解压运行形式,批改 UI 简直不可能。能够下载 Nacos 源码持续批改 而后从新打包运行。十分的不不便
git clone https://github.com/alibaba/nacos.git

cd nacos/

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
  • 若以源码形式运行,能够试试的调整 UI 而后 build 看到成果。

3. 保障 Server & Client 保持一致

  • pig 作为微服务开源我的项目,更新迭代速度十分快。每个版本依赖的 Nacos Client 版本都可能发生变化,这就意味着对应的 Nacos Server 版本也要对应降级,这须要用户自行下载降级老本很高
  • Nacos 具备良好小版本向下兼容性,然而大版本性能变动挺大,比方 1.2、1.3 权限的变更。所以倡议大家在理论开发过程中放弃版本统一。
  • 若以源码运行的形式,能够很好的解决此问题。

如何实现

1. 下载 Nacos 源码

  • 只需保留 nacos console 模块,其余模块均可删除

2. console 源码构造阐明

├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── alibaba
    │   │           └── nacos
    │   │               ├── Nacos.java  # main 启动类
    │   │               └── console    # 控制台相干源码
    │   └── resources
    │       ├── application.properties  # nacos 配置文件
    │       └── static    # 动态页面目录
    └── test    # 单元测试局部

3. 批改 Nacos.java 类

  • 次要在 main 办法中减少 两个参数,是否是单机启动 & 是否敞开权限校验
@SpringBootApplication(scanBasePackages = "com.alibaba.nacos")
@ServletComponentScan
@EnableScheduling
public class Nacos {public static void main(String[] args) {
        # 通过环境变量的模式 设置 单机启动
            System.setProperty(ConfigConstants.STANDALONE_MODE, "true");

        # 通过环境变量的模式 设置 敞开权限校验
            System.setProperty(ConfigConstants.AUTH_ENABLED, "false");
        SpringApplication.run(Nacos.class, args);
    }
}

4. 批改 console/pom.xml

  • 因为不在应用 nacos bom 治理,须要给所有依赖坐标减少版本号
  • 因为 nacos-config /nacos-naming 等包没有上传至地方参考 无奈下载到,groupId 变更为 com.pig4cloud.nacos 即可下载
  • 变更后参考如下
<dependency>
  <groupId>com.pig4cloud.nacos</groupId>
  <artifactId>nacos-config</artifactId>
  <version>1.3.2</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
  <version>7.0.59</version>
</dependency>
<dependency>
  <groupId>com.pig4cloud.nacos</groupId>
  <artifactId>nacos-naming</artifactId>
  <version>1.3.2</version>
</dependency>
...

总结

    1. 以上批改后源码参考:https://gitee.com/log4j/pig
    1. 是否以源码模式运行,此问题仁者见仁智者见智 依据你们理论状况来。

退出移动版