文章目录
- 事先准备
- 下载并启动 Nacos
- 设置 Nacos 开机自启动
- 开放 Linux 外部访问权限
- 访问 Nacos 管理界面
- 附录
笔者的运行环境:
安装成功过的 Nacos:
- Nacos 2.2.3
安装成功过的 Java:
- Java 17.0.7
安装成功过的 Linux:
RedHat Enterprise Linux 9 x86_64
CentOS 8 x86_64
事先准备
-
进行这个教程之前,必须要先安装好一个 Linux 操作系统。这个 Linux 操作系统可以安装在虚拟机中,也可以安装在真实的电脑中。关于这方面的内容,可见笔者的其它博客:
各种操作系统安装教程大全:
https://blog.csdn.net/wangpaiblog/article/details/115436520为了方便远程输入命令、将文件加入到 Linux 操作系统中,最好还要在一台 Windows 操作系统上面使用一种终端控制软件,如 Xshell、Xftp 等。关于这方面的内容,可见笔者的另一篇博客:
如何在 Windows 主机上访问本地局域网中的 Linux 主机:
https://blog.csdn.net/wangpaiblog/article/details/120052152 -
Nacos 的运行环境需要 Java,因为 Nacos 本来就是基于 Java 编写的。关于 Linux 下 Java 的安装,请见笔者的另一篇博客:
在 Linux 操作系统中安装 Java:
https://blog.csdn.net/wangpaiblog/article/details/120093325现在,假设读者已经完成 Java 安装的完整过程。至少,需要配置 Java 的
JAVA_HOME
环境变量,以及安装不低于 Java 8 的 Java 版本。
下载并启动 Nacos
-
打开 Nacos 官网,找到 Nacos 免安装版的下载界面。如下面的图片所示。
Nacos 的官网:https://nacos.io/zh-cn/index.html
Nacos 的源码地址:https://github.com/alibaba/nacos
Nacos 2 的文档地址:https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html
Nacos 版本对应表:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
Nacos 下载处的最终网址:https://github.com/alibaba/nacos/releases/
-
可以使用 Xshell 将前面下载的
tar.gz
包置入 Linux 操作系统中。注意,Nacos 是免安装的,所以需要注意 Nacos 的存放路径。假设已经将安装包置入当前目录,输入以下命令进行解压:tar -zxvf nacos-server-2.2.3.tar.gz
-
解压后会得到一个名为
nacos
的目录。此目录就是 Nacos 的安装目录,安装目录下至少会有一个bin
目录。读者可以选择将 Nacos 的安装目录移动至某个固定的目录,这里移动后的 Nacos 安装目录以
/usr/local/nacos
为例,输入以下命令即可。mv nacos /usr/local/nacos
-
进入 Nacos 安装目录下的 bin 目录,使用如下命令以
单机模式
启动 Nacos。cd /usr/local/nacos
sh startup.sh -m standalone
设置 Nacos 开机自启动
-
很遗憾,Nacos 官方没有像其它很多软件一样为开机自启动额外编写一个脚本,所以需要自己改写一个。
Nacos 的启动等脚本同其它很多软件一样,在安装目录下的 bin 目录中。但是不能直接使用该脚本作为开机自启动脚本。原因是该启动脚本使用了 Java 的环境变量,但环境变量一般是在文件
/etc/profile
设置的。文件/etc/profile
是在每一个用户登录 Shell 时才会读取的。在 Linux 启动之时此文件中的环境变量不会起作用。因此,需要将 Java 的环境变量也写进这个启动脚本中。
-
改写这个启动脚本需要知道 Java 的命令所在目录。输入如下命令即可。
which java
[root@192 bin]# which java /usr/bin/java
-
下面开始改写这个启动脚本,因为只有启动脚本中使用了 Java 的环境变量。
输入以下命令将 Nacos 的启动脚本复制一个副本
startupbyos.sh
。cp -p startup.sh startupbyos.sh
-
打开此文件,在该脚本中第一个非注释代码前加入以下命令。此命令是为了添加前面获取到的 Java 的命令所在目录。
JAVA_HOME=/usr/bin/java
-
使用如下命令在目录
/etc/systemd/system
下创建一个关于 Nacos 的.service
文件。touch /etc/systemd/system/nacos.service
-
编辑该文件,在其中写入如下内容。
[Unit] Description=nacos-server After=network.target [Service] ExecStart=/usr/local/nacos/bin/startupbyos.sh -m standalone ExecStop=/usr/local/nacos/bin/shutdown.sh PrivateTmp=true Type=forking [Install] WantedBy=multi-user.target
读者需要根据前面自己安装 Nacos 时各个文件的存放位置来分别修改 ExecStart、ExecReload、ExecStop 的值。
其中,ExecStart 代表 Nacos 后台服务的启动命令。
【踩坑提醒】
前面已经提到过,Shell 中的环境变量会在此处无效,因此这里的命令必须使用全路径。
如果想在 Linux 启动时使用环境变量,可以将此环境变量单独放入一个文件(不妨设为
/etc/systemd/system/nacosenv.conf
)中,然后在本.service
文件/etc/systemd/system/nacos.service
中的[Service]
部分使用EnvironmentFile
属性导入这个环境变量配置文件。[Service] EnvironmentFile=/etc/systemd/system/nacosenv.conf
-
Red Hat 内置了 SELinux(Security-Enhanced Linux)来保障 Linux 的安全,但这有可能会让目录
/etc/systemd/system
中的服务因权限不足无法启动,从而发生如下报错。[root@192 ~]# systemctl status nacos.service × nacos.service - nacos-server Loaded: loaded (/etc/systemd/system/nacos.service; enabled; preset: disabled) Active: failed (Result: exit-code) since Sat 202X-XX-XX XX:XX:XX CST; Xmin XXs ago Process: 979 ExecStart=/usr/local/nacos/bin/startupbyos.sh -m standalone (code=exited, status=203/EXEC) CPU: 4ms XX月 XX XX:XX:XX localhost systemd[1]: Starting nacos-server... XX月 XX XX:XX:XX localhost systemd[979]: nacos.service: Failed to locate executable /usr/local/nacos/bin/startupbyos.sh: Permission denied XX月 XX XX:XX:XX localhost systemd[979]: nacos.service: Failed at step EXEC spawning /usr/local/nacos/bin/startupbyos.sh: Permission denied XX月 XX XX:XX:XX localhost systemd[1]: nacos.service: Control process exited, code=exited, status=203/EXEC XX月 XX XX:XX:XX localhost systemd[1]: nacos.service: Failed with result 'exit-code'. XX月 XX XX:XX:XX localhost systemd[1]: Failed to start nacos-server.
解决办法是修改文件
/etc/selinux/config
,将其中的属性enforcing
由enforcing
改为disabled
。然后重启 Linux。 -
依次输出以下命令设置 Nacos 开机自启动:
systemctl daemon-reload
systemctl enable nacos.service
-
重启电脑试一下是否真正成功。输入以下命令重启电脑:
reboot
重启后,马上输入以下命令:
netstat -na | grep 8848
[root@192 ~]# netstat -na | grep 8848 tcp6 0 0 :::8848 :::* LISTEN
如果输出了端口 8848 被使用的信息,说明 Nacos 开机自启动成功。
开放 Linux 外部访问权限
-
Linux 通常作为服务器操作系统,一般希望能使用远程操作 Nacos。不过,Linux 上有防火墙,默认会阻止远程对 Nacos 的连接。实际上,它会阻止所有的远程连接。对于笔者的
CentOS 8 x86_64
,默认的防火墙为firewalld
,而不是iptables
。(很多早期的 Linux,使用的防火墙是 iptables,但 RedHat 从 RHEL 7 开始就用 firewalld 取代了 iptables。)-
一个偷懒的方法就是,永久地关闭防火墙。关闭的方法如下:
systemctl stop firewalld
systemctl mask firewalld
firewall-cmd --reload
-
另一个方法是,在防火墙中永久开放所属的 Nacos 各种端口。这里以 Nacos 管理界面默认的端口 8848 为例。开放的方法如下:
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --reload
单独开放完端口 8848 之后,可以输入以下命令查看是否生效:
firewall-cmd --zone=public --query-port=8848/tcp
[root@localhost temp]# firewall-cmd --zone=public --query-port=8848/tcp yes
实际上,也可以输入以下命令查看所有开放的端口:
firewall-cmd --zone=public --list-ports
[root@localhost temp]# firewall-cmd --zone=public --list-ports 8848/tcp
-
访问 Nacos 管理界面
-
现在就可以尝试远程登录 Nacos 管理界面了。在浏览器中输入以下网址即可。
http:// Nacos 所在服务器的 IP
:8848/nacos/index.html
附录
-
Spring 官方文档及相关资料的网址集合:https://blog.csdn.net/wangpaiblog/article/details/131881448
-
Spring 官方脚手架:
-
Spring Boot/Cloud 脚手架:https://start.spring.io/
-
Spring Cloud Alibaba 脚手架:https://start.aliyun.com/
-
-
Spring Cloud Alibaba 相关网址:
-
源码地址:https://github.com/alibaba/spring-cloud-alibaba
-
版本对应表:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
-