Nacos基于Java开发,在部署Nacos前,需要先配置Java运行环境。本例采用Java 11和Nacos 2.1.1。
1.1 下载Java 11
Java下载链接:https://www.oracle.com/java/technologies/downloads/#java11。
1.2 下载Nacos
当前Nacos的版本为2.1.1,建议使用最新版本,下载地址:https://github.com/alibaba/nacos/releases/
将Java和Nacos文件下载到当前用户目录。
创建Java安装文件夹,并进入该文件夹,命令如下所示:
<span class="token function">mkdir</span> /usr/local/java <span class="token builtin class-name">cd</span> /usr/local/java<span class="token function">mkdir</span> /usr/local/java <span class="token builtin class-name">cd</span> /usr/local/javamkdir /usr/local/java cd /usr/local/java
将jdk解压到/usr/local/java文件夹中:
<span class="token function">sudo</span> <span class="token function">tar</span> -zxvf ~/jdk-11.0.16.1_linux-x64_bin.tar.gz -C /usr/local/java/<span class="token function">sudo</span> <span class="token function">tar</span> -zxvf ~/jdk-11.0.16.1_linux-x64_bin.tar.gz -C /usr/local/java/sudo tar -zxvf ~/jdk-11.0.16.1_linux-x64_bin.tar.gz -C /usr/local/java/
打开环境配置文件:
<span class="token function">sudo</span> <span class="token function">nano</span> /etc/profile<span class="token function">sudo</span> <span class="token function">nano</span> /etc/profilesudo nano /etc/profile
将Java配置信息写入profile文件,如下所示:
<span class="token assign-left variable">JAVA_HOME</span><span class="token operator">=</span>/usr/local/java/jdk-11.0.16.1 <span class="token builtin class-name">export</span> JAVA_HOME <span class="token assign-left variable"><span class="token environment constant">PATH</span></span><span class="token operator">=</span><span class="token variable">$JAVA_HOME</span>/bin:<span class="token environment constant">$PATH</span> <span class="token builtin class-name">export</span> <span class="token environment constant">PATH</span> <span class="token assign-left variable">CLASSPATH</span><span class="token operator">=</span>.:<span class="token variable">$JAVA_HOME</span>/lib/ <span class="token builtin class-name">export</span> CLASSPATH<span class="token assign-left variable">JAVA_HOME</span><span class="token operator">=</span>/usr/local/java/jdk-11.0.16.1 <span class="token builtin class-name">export</span> JAVA_HOME <span class="token assign-left variable"><span class="token environment constant">PATH</span></span><span class="token operator">=</span><span class="token variable">$JAVA_HOME</span>/bin:<span class="token environment constant">$PATH</span> <span class="token builtin class-name">export</span> <span class="token environment constant">PATH</span> <span class="token assign-left variable">CLASSPATH</span><span class="token operator">=</span>.:<span class="token variable">$JAVA_HOME</span>/lib/ <span class="token builtin class-name">export</span> CLASSPATHJAVA_HOME=/usr/local/java/jdk-11.0.16.1 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CLASSPATH=.:$JAVA_HOME/lib/ export CLASSPATH
关闭文件后,需要执行以下命令让配置生效:
<span class="token builtin class-name">source</span> /etc/profile<span class="token builtin class-name">source</span> /etc/profilesource /etc/profile
在终端中测试Java是否安装成功:
java --version java version <span class="token string">"11.0.16.1"</span> <span class="token number">2022</span>-08-18 LTS Java<span class="token punctuation">(</span>TM<span class="token punctuation">)</span> SE Runtime Environment <span class="token number">18.9</span> <span class="token punctuation">(</span>build <span class="token number">11.0</span>.16.1+1-LTS-1<span class="token punctuation">)</span> Java HotSpot<span class="token punctuation">(</span>TM<span class="token punctuation">)</span> <span class="token number">64</span>-Bit Server VM <span class="token number">18.9</span> <span class="token punctuation">(</span>build <span class="token number">11.0</span>.16.1+1-LTS-1, mixed mode<span class="token punctuation">)</span>java --version java version <span class="token string">"11.0.16.1"</span> <span class="token number">2022</span>-08-18 LTS Java<span class="token punctuation">(</span>TM<span class="token punctuation">)</span> SE Runtime Environment <span class="token number">18.9</span> <span class="token punctuation">(</span>build <span class="token number">11.0</span>.16.1+1-LTS-1<span class="token punctuation">)</span> Java HotSpot<span class="token punctuation">(</span>TM<span class="token punctuation">)</span> <span class="token number">64</span>-Bit Server VM <span class="token number">18.9</span> <span class="token punctuation">(</span>build <span class="token number">11.0</span>.16.1+1-LTS-1, mixed mode<span class="token punctuation">)</span>java --version java version "11.0.16.1" 2022-08-18 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.16.1+1-LTS-1) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16.1+1-LTS-1, mixed mode)
创建nacos文件夹,并进入该文件夹:
<span class="token function">sudo</span> <span class="token function">mkdir</span> /usr/local/nacos <span class="token builtin class-name">cd</span> /usr/local/nacos<span class="token function">sudo</span> <span class="token function">mkdir</span> /usr/local/nacos <span class="token builtin class-name">cd</span> /usr/local/nacossudo mkdir /usr/local/nacos cd /usr/local/nacos
解压Nacos安装文件到该目录:
<span class="token function">sudo</span> <span class="token function">tar</span> -zxvf ~/nacos-server-2.1.1.tar.gz -C /usr/local/nacos <span class="token function">mv</span> nacos nacos-server-2.1.1 <span class="token builtin class-name">cd</span> nacos-server-2.1.1<span class="token function">sudo</span> <span class="token function">tar</span> -zxvf ~/nacos-server-2.1.1.tar.gz -C /usr/local/nacos <span class="token function">mv</span> nacos nacos-server-2.1.1 <span class="token builtin class-name">cd</span> nacos-server-2.1.1sudo tar -zxvf ~/nacos-server-2.1.1.tar.gz -C /usr/local/nacos mv nacos nacos-server-2.1.1 cd nacos-server-2.1.1
在启动Nacos时,会出现找不到JAVA_HOME的问题,需要手动帮Nacos配置JAVA_HOME信息,打开启动文件startup.sh:
<span class="token builtin class-name">cd</span> bin <span class="token function">sudo</span> <span class="token function">nano</span> startup.sh<span class="token builtin class-name">cd</span> bin <span class="token function">sudo</span> <span class="token function">nano</span> startup.shcd bin sudo nano startup.sh
在启动文件startup.sh中加入JAVA_HOME信息:
<span class="token builtin class-name">export</span> <span class="token assign-left variable">JAVA_HOME</span><span class="token operator">=</span>/usr/local/java/jdk-11.0.16.1<span class="token builtin class-name">export</span> <span class="token assign-left variable">JAVA_HOME</span><span class="token operator">=</span>/usr/local/java/jdk-11.0.16.1export JAVA_HOME=/usr/local/java/jdk-11.0.16.1
现在,就可以启动Nacos,测试一下安装效果了,启动脚本如下:
<span class="token function">sudo</span> ./startup.sh -m standalone<span class="token function">sudo</span> ./startup.sh -m standalonesudo ./startup.sh -m standalone
Nacos启动后,在浏览器中打开http://ip:8848/nacos,可以看到Nacos的界面,输入初始用户名密码(nacos/nacos),即可登录Nacos。
在Nacos使用过程中,如果系统重启或系统出现不可知问题时,在终端手动启动的Nacos服务将关闭而不能提供服务。为保证Nacos持续有效,需要将Nacos配置为自启动服务。
首先,在/usr/local/nacos文件夹下创建nacos.service文件:
<span class="token function">sudo</span> <span class="token function">nano</span> /usr/local/nacos/nacos.service<span class="token function">sudo</span> <span class="token function">nano</span> /usr/local/nacos/nacos.servicesudo nano /usr/local/nacos/nacos.service
然后将服务信息输入到该文件中:
<span class="token punctuation">[</span>Unit<span class="token punctuation">]</span> <span class="token assign-left variable">Description</span><span class="token operator">=</span>nacos <span class="token assign-left variable">After</span><span class="token operator">=</span>network.target <span class="token punctuation">[</span>Service<span class="token punctuation">]</span> <span class="token assign-left variable">Type</span><span class="token operator">=</span>forking <span class="token assign-left variable">ExecStart</span><span class="token operator">=</span>/usr/local/nacos/nacos-server-2.1.1/bin/startup.sh -m standalone <span class="token assign-left variable">ExecReload</span><span class="token operator">=</span>/usr/local/nacos/nacos-server-2.1.1/bin/shutdown.sh <span class="token assign-left variable">ExecStop</span><span class="token operator">=</span>/usr/local/nacos/nacos-server-2.1.1/bin/shutdown.sh <span class="token assign-left variable">Restart</span><span class="token operator">=</span>always <span class="token assign-left variable">PrivateTmp</span><span class="token operator">=</span>true <span class="token punctuation">[</span>Install<span class="token punctuation">]</span> <span class="token assign-left variable">WantedBy</span><span class="token operator">=</span>multi-user.target <span class="token assign-left variable">Alias</span><span class="token operator">=</span>nacos.service<span class="token punctuation">[</span>Unit<span class="token punctuation">]</span> <span class="token assign-left variable">Description</span><span class="token operator">=</span>nacos <span class="token assign-left variable">After</span><span class="token operator">=</span>network.target <span class="token punctuation">[</span>Service<span class="token punctuation">]</span> <span class="token assign-left variable">Type</span><span class="token operator">=</span>forking <span class="token assign-left variable">ExecStart</span><span class="token operator">=</span>/usr/local/nacos/nacos-server-2.1.1/bin/startup.sh -m standalone <span class="token assign-left variable">ExecReload</span><span class="token operator">=</span>/usr/local/nacos/nacos-server-2.1.1/bin/shutdown.sh <span class="token assign-left variable">ExecStop</span><span class="token operator">=</span>/usr/local/nacos/nacos-server-2.1.1/bin/shutdown.sh <span class="token assign-left variable">Restart</span><span class="token operator">=</span>always <span class="token assign-left variable">PrivateTmp</span><span class="token operator">=</span>true <span class="token punctuation">[</span>Install<span class="token punctuation">]</span> <span class="token assign-left variable">WantedBy</span><span class="token operator">=</span>multi-user.target <span class="token assign-left variable">Alias</span><span class="token operator">=</span>nacos.service[Unit] Description=nacos After=network.target [Service] Type=forking ExecStart=/usr/local/nacos/nacos-server-2.1.1/bin/startup.sh -m standalone ExecReload=/usr/local/nacos/nacos-server-2.1.1/bin/shutdown.sh ExecStop=/usr/local/nacos/nacos-server-2.1.1/bin/shutdown.sh Restart=always PrivateTmp=true [Install] WantedBy=multi-user.target Alias=nacos.service
输入完成后,保存退出。接下来让服务生效:
<span class="token function">sudo</span> <span class="token function">ln</span> -s /usr/local/nacos/nacos.service /lib/systemd/system/nacos.service systemctl daemon-reload systemctl <span class="token builtin class-name">enable</span> nacos.service systemctl start nacos<span class="token function">sudo</span> <span class="token function">ln</span> -s /usr/local/nacos/nacos.service /lib/systemd/system/nacos.service systemctl daemon-reload systemctl <span class="token builtin class-name">enable</span> nacos.service systemctl start nacossudo ln -s /usr/local/nacos/nacos.service /lib/systemd/system/nacos.service systemctl daemon-reload systemctl enable nacos.service systemctl start nacos
为测试效果,可以直接重启Ubuntu;当系统重启后,Nacos服务将自动启动。
在Nacos集群中,必须采用MySQL数据库存储配置Nacos信息,且只能使用MySQL(其他数据库会忽略)。
5.1 创建数据库
首先在MySQL中创建一个名称为nacos的schema:
<span class="token keyword">CREATE</span> <span class="token keyword">DATABASE</span> <span class="token identifier"><span class="token punctuation">`</span>nacos<span class="token punctuation">`</span></span> <span class="token keyword">DEFAULT</span> <span class="token keyword">CHARACTER</span> <span class="token keyword">SET</span> utf8mb4 <span class="token keyword">COLLATE</span> utf8mb4_unicode_ci<span class="token punctuation">;</span><span class="token keyword">CREATE</span> <span class="token keyword">DATABASE</span> <span class="token identifier"><span class="token punctuation">`</span>nacos<span class="token punctuation">`</span></span> <span class="token keyword">DEFAULT</span> <span class="token keyword">CHARACTER</span> <span class="token keyword">SET</span> utf8mb4 <span class="token keyword">COLLATE</span> utf8mb4_unicode_ci<span class="token punctuation">;</span>CREATE DATABASE `nacos` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
然后创建用于访问nacos数据库schema的用户并授权:
<span class="token keyword">create</span> <span class="token keyword">user</span> <span class="token string">'nacos'</span><span class="token variable">@'%'</span> identified <span class="token keyword">by</span> <span class="token string">'your-passwd'</span><span class="token punctuation">;</span> <span class="token keyword">grant</span> <span class="token keyword">all</span> <span class="token keyword">privileges</span> <span class="token keyword">on</span> nacos<span class="token punctuation">.</span><span class="token operator">*</span> <span class="token keyword">to</span> <span class="token string">'nacos'</span><span class="token variable">@'%'</span> identified <span class="token keyword">by</span> <span class="token string">'your-passwd'</span> <span class="token keyword">with</span> <span class="token keyword">grant</span> <span class="token keyword">option</span><span class="token punctuation">;</span> flush <span class="token keyword">privileges</span><span class="token punctuation">;</span><span class="token keyword">create</span> <span class="token keyword">user</span> <span class="token string">'nacos'</span><span class="token variable">@'%'</span> identified <span class="token keyword">by</span> <span class="token string">'your-passwd'</span><span class="token punctuation">;</span> <span class="token keyword">grant</span> <span class="token keyword">all</span> <span class="token keyword">privileges</span> <span class="token keyword">on</span> nacos<span class="token punctuation">.</span><span class="token operator">*</span> <span class="token keyword">to</span> <span class="token string">'nacos'</span><span class="token variable">@'%'</span> identified <span class="token keyword">by</span> <span class="token string">'your-passwd'</span> <span class="token keyword">with</span> <span class="token keyword">grant</span> <span class="token keyword">option</span><span class="token punctuation">;</span> flush <span class="token keyword">privileges</span><span class="token punctuation">;</span>create user 'nacos'@'%' identified by 'your-passwd'; grant all privileges on nacos.* to 'nacos'@'%' identified by 'your-passwd' with grant option; flush privileges;
5.2 导入SQL语句
将nacos安装目录中conf文件夹下的nacos-mysql.sql导入数据库nacos中。
5.3 配置Nacos
打开Nacos配置文件:
修改一下内容
spring.datasource.platform<span class="token operator">=</span>mysql db.num<span class="token operator">=</span><span class="token number">1</span> db.url.0<span class="token operator">=</span>jdbc:mysql://IP:3306/nacos?characterEncoding<span class="token operator">=</span>utf8<span class="token operator">&</span><span class="token assign-left variable">connectTimeout</span><span class="token operator">=</span><span class="token number">1000</span><span class="token operator">&</span><span class="token assign-left variable">socketTimeout</span><span class="token operator">=</span><span class="token number">3000</span><span class="token operator">&</span><span class="token assign-left variable">autoReconnect</span><span class="token operator">=</span>true<span class="token operator">&</span><span class="token assign-left variable">useUnicode</span><span class="token operator">=</span>true<span class="token operator">&</span><span class="token assign-left variable">useSSL</span><span class="token operator">=</span>false<span class="token operator">&</span><span class="token assign-left variable">serverTimezone</span><span class="token operator">=</span>UTC db.user.0<span class="token operator">=</span>nacos db.password.0<span class="token operator">=</span>your-passwdspring.datasource.platform<span class="token operator">=</span>mysql db.num<span class="token operator">=</span><span class="token number">1</span> db.url.0<span class="token operator">=</span>jdbc:mysql://IP:3306/nacos?characterEncoding<span class="token operator">=</span>utf8<span class="token operator">&</span><span class="token assign-left variable">connectTimeout</span><span class="token operator">=</span><span class="token number">1000</span><span class="token operator">&</span><span class="token assign-left variable">socketTimeout</span><span class="token operator">=</span><span class="token number">3000</span><span class="token operator">&</span><span class="token assign-left variable">autoReconnect</span><span class="token operator">=</span>true<span class="token operator">&</span><span class="token assign-left variable">useUnicode</span><span class="token operator">=</span>true<span class="token operator">&</span><span class="token assign-left variable">useSSL</span><span class="token operator">=</span>false<span class="token operator">&</span><span class="token assign-left variable">serverTimezone</span><span class="token operator">=</span>UTC db.user.0<span class="token operator">=</span>nacos db.password.0<span class="token operator">=</span>your-passwdspring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://IP:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=nacos db.password.0=your-passwd
配置完成后,重启nacos服务即可。
原文链接:https://blog.csdn.net/houor/article/details/126683909