Nacos在Linux系统(CentOS7)上的部署与设置开机启动

  • 本文主要讲述Nacos在Linux系统上的部署与设置开机启动,其中Nacos以0.9.0版本(nacos-server-0.9.0.tar.gz)为例,

下载地址:链接:https://pan.baidu.com/s/1WlsV_n7eJXMWZVCWyAXCzw  提取码:hfxc 

环境准备:

  • 64 bit OS Linux/Unix/Mac,推荐使用Linux系统;
  • 64 bit JDK 1.8+;
  • 集群需要依赖mysql (版本5.6.5+),单机可不必
  • 将安装包上传至/usr/local/nacos目录

执行解压,如下:

tar -xvf nacos-server-0.9.0.tar.gz

如图:

Nacos在Linux系统(CentOS7)上的部署与设置开机启动_第1张图片

  • 修改配置文件,支持mysql(选配,单机可跨过此步骤)

在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:

1.安装数据库,版本要求:5.6.5+
2.初始化mysql数据库
3.修改nacos/conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://121.52.33.213:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

Nacos在Linux系统(CentOS7)上的部署与设置开机启动_第2张图片

注:

  1. 这个的application.properties指nacos的解压目录nacos/的conf目录下的application.properties文件
  2. 这里的db具体配置根据自身情况而变

再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql

  • 开机自启动
vim /lib/systemd/system/nacos.service

 添加如下:

[Unit]
Description=nacos
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/local/nacos/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/nacos/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/nacos/bin/shutdown.sh
PrivateTmp=true
 
[Install]  
WantedBy=multi-user.target

保存退出后,执行以下命令

systemctl daemon-reload
systemctl enable nacos.service
systemctl start nacos.service
  • 验证是否安装成功(注:防火墙要开启8848端口方可访问

浏览器登陆:http://127.0.0.0:8848/nacos,用户名:nacos,密码nacos,如下即安装成功

Nacos在Linux系统(CentOS7)上的部署与设置开机启动_第3张图片

  • 踩坑-----------------------------------------------------------------------------------------------------------------------------

按照官方文档的启动方式,windows系统下可以实现正常启动,但是在linux下出现了上述的情况,启动失败,抛出的异常如下:

2019-01-18 20:39:21,965 ERROR read cluster conf fail
 
java.io.FileNotFoundException: /home/test/nacos/conf/cluster.conf (No such file or directory)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.(FileInputStream.java:138)
	at com.alibaba.nacos.common.util.SystemUtils.readClusterConf(SystemUtils.java:157)
	at com.alibaba.nacos.core.listener.StartingSpringApplicationRunListener.logClusterConf(StartingSpringApplicationRunListener.java:129)
	at com.alibaba.nacos.core.listener.StartingSpringApplicationRunListener.contextPrepared(StartingSpringApplicationRunListener.java:79)
	at org.springframework.boot.SpringApplicationRunListeners.contextPrepared(SpringApplicationRunListeners.java:60)
	at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:391)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:331)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1277)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1265)
	at com.alibaba.nacos.Nacos.main(Nacos.java:31)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
2019-01-18 20:39:22,980 INFO Nacos is starting...
 
2019-01-18 20:39:23,980 INFO Nacos is starting...
 
2019-01-18 20:39:24,999 INFO Nacos is starting...
 
2019-01-18 20:39:26,000 INFO Nacos is starting...

由于启动的默认由cluster改成了standalone单机启动模式,但是启动仍然是集群模式启动,并且抛出上述找不到cluster.conf文件。

将官方的启动命令

sh startup.sh -m standalone

替换为

bash startup.sh -m standalone
nohup bash startup.sh -m standalone &      #后台启动

原因是:bash与sh是有区别的,两者是不同的命令,且bash是sh的增强版,而"[[]]"是bash脚本中的命令,因此在执行时,使用sh命令会报错。因而是因为startup.sh文件中的[[ ]] 的问题,sh命令并不能识别,只有bash才行;

另外一种办法是将dash启动改为bash启动(ubuntu默认采用dash,也是导致整个问题的原因!),方法如下:

查看与使用

先用命令ls -l /bin/sh 看看

结果是: /bin/sh -> dash

我们会发现Ubuntu默认采用的是 dash

如果要修改默认的sh,可以采用命令

sudo dpkg-reconfigure dash

然后选择【否】

成功后再执行ls -l /bin/sh 看看

结果是: /bin/sh -> bash

修改成功!

当然我们也可以使用

sudo dpkg-reconfigure dash

把sh修改回去

设置后即可启动。

 

 

你可能感兴趣的:(WEB开发)