如何以源码形式运行Nacos Server

系统维
• 阅读 1669

官方标准运行方式

下载解压可运行包

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 模块,其他模块均可删除

如何以源码形式运行Nacos Server

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. 是否以源码形式运行,此问题仁者见仁智者见智 根据你们实际情况来。

如何以源码形式运行Nacos Server

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
Nacos系列:Nacos的Java SDK使用
Maven依赖Nacos提供完整的JavaSDK,便于配置管理和服务发现及管理,以Nacos0.8.0版本为例添加Maven依赖:<dependency<groupIdcom.alibaba.nacos</groupId<artifactIdnacosclient<
Stella981 Stella981
3年前
Nacos跨服务器调用服务报错
利用gateway做springcloud微服务网关路由服务时出现报错情况,发现是和网关不在一个服务器的服务无法使用Nacos服务注册的IPNacos注册中心是:https://github.com/alibaba/nacos各个服务通过Nacos客户端将服务信息注册到Nacos上当Nacos服务注册的IP默认选择出问题时,可以通
Stella981 Stella981
3年前
NacosValue 注解
NacosValue 定义在nacosapi工程中:com.alibaba.nacos.api.config.annotation.NacosValue注解解析在nacosspringproject工程中:com.alibaba.nacos.spring.util.NacosBeanUtilsregisterNacosValueAnn
Stella981 Stella981
3年前
Harbor部署私有镜像仓库
部署私有仓库下载harbor2.1.0安装包下载离线安装包:$wgethttps://github.com/goharbor/harbor/releases/download/v2.1.0rc2/harborofflineinstallerv2.1.0rc2.tgz解压!修改
Stella981 Stella981
3年前
Nacos作为注册中心和配置中心,爱不释手的感觉
在使用SpringCloud做分布式微服务架构时,注册中心是必不可少的一个组件。目前可以用的主要有:Eureka、Consul、Zookeeper。今天,我们就来说一下Alibaba的Nacos怎么样?下载与安装下载地址https://github.com/alibaba/nacos/releases安装:
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
Linux安装Sqlmap等工具
简单记录一下安装过程,都是小白教程,省的哪天又忘了要去百度。1.下载sqlmap源码进行安装wgethttps://github.com/sqlmapproject/sqlmap/tarball/master2.解压运行root@VM_0_13_centossrctarzxvfsqlmap
Stella981 Stella981
3年前
Linux下源码安装redis,编译安装
1.下载redis源码root@localhostoptwgethttp://download.redis.io/releases/redis4.0.10.tar.gz2.解压缩root@localhostopttarzxfredis4.0.10.tar.gz3.切换r
Wesley13 Wesley13
3年前
CENTOS安装REDIS
CENTOS安装REDIS先到http://download.redis.io/releases/官网看看要下载哪个版本。1)下载、解压、安装wgethttp://download.redis.io/releases/redis5.0.5.tar.gztarxzfredis5.0.5.tar.gzcdredis5