elasticsearch
docker安装与配置
docker pull elasticsearch:7.4.2 #
docker pull kibana:7.4.2 ##图形化界面工具
mkdir -p /mydata/elasticsearch/config #配置文件
mkdir -p /mydata/elasticsearch/data # 宿主机存一些数据
echo "http.host : 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml ###配置
#运行命令
docker run -it --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
运行成功之后访问:
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 \
-d kibana:7.4.2
###kibana运行命令
运行成功:
elasticsearch的使用
http://192.168.56.10:9200/_cat/nodes
http://192.168.56.10:9200/_cat/health
http://192.168.56.10:9200/_cat/master
http://192.168.56.10:9200/_cat/indices 查看索引
启动报错问题
docker run ... 报错
yml配置文件格式写错了:
name[空格]:[空格] value 正确格式
[root@centos7-01 config]# docker logs elasticsearch
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Exception in thread "main" 2020-07-08 12:47:22,006 main ERROR No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]];
at org.elasticsearch.common.settings.Settings$Builder.loadFromStream(Settings.java:1097)
at org.elasticsearch.common.settings.Settings$Builder.loadFromPath(Settings.java:1070)
at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:83)
at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:95)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
Caused by: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]
at org.elasticsearch.common.xcontent.XContentParserUtils.ensureExpectedToken(XContentParserUtils.java:78)
at org.elasticsearch.common.settings.Settings.fromXContent(Settings.java:617)
at org.elasticsearch.common.settings.Settings.access$400(Settings.java:82)
at org.elasticsearch.common.settings.Settings$Builder.loadFromStream(Settings.java:1093)
... 8 more
运行环境搭建
virtual box 安装 6.0
vagrant 安装 2.2.9
vagrant init centos/7 初始化一个虚拟环境
vagrant up 启动虚拟容器
按照此教程配置虚拟机:
https://www.jianshu.com/p/2207f730e64e
报错
No usable default provider could be found for your system.
解决办法:virtualbox6.1和vagrant2.2.9不兼容,换成6.0版本。
docker安装
https://www.runoob.com/docker/centos-docker-install.html
docker-mysql安装
docker pull mysql:5.7
mysql 启动:
sudo docker run -p 3306:3306 --name mysql02 --privileged=true \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf/:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
修改配置:vi /mydata/mysql/conf/mysql.conf 新增以下配置并保存
【client】
default-character-set=utf8
【mysql】
default-character-set=utf8
【mysqld】
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collection-server=utf8_unicode_ci
skip-character-set-client-handshake
docker-reids
skip-name-resolvedocker安装redis命令
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis --privileged=true \
-v /mydata/redis/data:/data \
-v/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
修改配置:vi /mydata/redis/conf/redis.conf ,新增一行appendonly yes并保存
问题记录
git push报错
$ git push
remote: Incorrect username or password ( access token )
fatal: Authentication failed for 'https://gitee.com/zhipanwang/gulimall.git/'
push的时候出现以上错误,原因是这里的凭据写错了,当这里有的时候,再push时不会让重新输入用户名密码,要么修改此处,要么删除此处push时填入正确的用户名密码。
vue导入前台项目 启动报错
ERROR Failed to compile with 1 errors 15:42:24
Module build failed: Error: No ESLint configuration found.
at getLocalConfig (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\_eslint@3.19.0@eslint\lib\config.js:162:35)
at Config.getConfig (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\_eslint@3.19.0@eslint\lib\config.js:260:26)
at processText (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\_eslint@3.19.0@eslint\lib\cli-engine.js:224:33)
at CLIEngine.executeOnText (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\_eslint@3.19.0@eslint\lib\cli-engine.js:754:26)
at lint (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\_eslint-loader@1.7.1@eslint-loader\index.js:211:17)
at Object.module.exports (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\_eslint-loader@1.7.1@eslint-loader\index.js:206:21)
解决办法
使用eslint时报错:No ESLint configuration found.
因为使用eslint时,项目目录下默认有一个.eslintrc.js文件
如果遇到这个错误,可以在项目下新建一个.eslintrc.js文件,然后进行配置就行了
具体配置根据项目配置,附上我的配置供参考
module.export = {
rout: true,
env: {
browser: true,
node: true
},
parserOptions: {
parser: 'babel-eslint'
},
extends: [
'plugin:vue/recommended'
],
plugins: [
'vue'
],
// 添加自定义规则
rules: {}
}
node-sass 安装失败
node-sass安装失败,编译失败
cnpm install node-sass --save
npm install 都会有报错
Module build failed: Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (72)
For more information on which environments are supported please see:
https://github.com/sass/node-sass/releases/tag/v4.9.0
at module.exports (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\_node-sass@4.9.0@node-sass\lib\binding.js:13:13)
at Object.<anonymous> (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\_node-sass@4.9.0@node-sass\lib\index.js:14:35)
at Module._compile (internal/modules/cjs/loader.js:959:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
at Module.load (internal/modules/cjs/loader.js:815:32)
at Function.Module._load (internal/modules/cjs/loader.js:727:14)
at Module.require (internal/modules/cjs/loader.js:852:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\sass-loader\lib\loader.js:3:14)
at Module._compile (internal/modules/cjs/loader.js:959:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
at Module.load (internal/modules/cjs/loader.js:815:32)
at Function.Module._load (internal/modules/cjs/loader.js:727:14)
at Module.require (internal/modules/cjs/loader.js:852:19)
at require (internal/modules/cjs/helpers.js:74:18)
at loadLoader (E:\Java\java项目\mygulimall\renren-fast-vue\node_modules\loader-runner\lib\loadLoader.js:18:17)
node版本是12 node-sass应该是4.12+ 此项目配置的4.9 所以才安装失败,改完之后成功。
package.json中配置了依赖的版本。
启动应用时报端口被占用
window环境下查看端口被某个进程占用:
cmd
netstat -ano |findstr 8080
任务管理器结束任务
nacos
nacos server 部署
下载之后解压,运行:
E:\Toos\nacos\nacos\1.1.4\nacos-server-1.1.4\nacos\bin
服务注册实现
参考官网:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
1.导入依赖
依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.注解开启
@EnableDiscoveryClient
3.配置
3.1应用名
3.2注册中心 spring.nacos.config.server-addr=127.0.0.1:8848
远程调用
导入openFeign
两个注解
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
nacos配置中心
依赖
此处不能会用带starter的,那个里面根本就没有config配置。
<!--配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-config</artifactId>
</dependency>
这个是官网提供的,埋了一个大坑,这个导入之后根本不能用。害我尝试的大半天。。。。。。。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
配置
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=gulimall-coupon
在controller加上@RefreshScope 之后配置就可以动态更新:
网关使用
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
配置
bootstrap.properties
配置中心,注册中心,
根据配置命名空间和后缀,读取远程配置 guliamll-gateway.yml
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=264a052a-fc96-49c7-8fa8-0e4c8c371b02
spring.cloud.nacos.config.file-extension=yml
gulimall-gateway.yml 配置 简单的路由断言使用
server:
port: 88
spring:
cloud:
gateway:
routes:
#请求路由
- id: go-baidu
uri: https://baidu.com
#断言
predicates:
#请求中有go并且等于baidu时转发请求到uri
- Query=go,baidu
- id: go-nacos
uri: http://localhost:8848/
predicates:
- Query=go,nacos
详细配置,查看官网文档
跨域解決
端口包括端口之前的任意部分不同,就是跨域請求:
package com.wang.gulimall.gateway.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsConfigurationSource;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
@Configuration
public class CorsConfigurationFilter {
/**
* 跨越配置
* @return
*/
@Bean
public CorsWebFilter corsWebFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.addAllowedHeader("*");
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.setAllowCredentials(true);
source.registerCorsConfiguration("/**",config);
return new CorsWebFilter(source);
}
}
還是報錯:
The 'Access-Control-Allow-Origin' header contains multiple values
原來微服務還設置了一次跨域,注釋掉之後問題解決。。。
Unable to find instance
服務不可用,等一段時間之後就好了。
This application has no configured error view, so you are seeing this as a fallback.
Wed May 27 11:01:30 GMT+08:00 2020
[754bc5b2-31] There was an unexpected error (type=Service Unavailable, status=503).
Unable to find instance for gulimall-product
org.springframework.cloud.gateway.support.NotFoundException: 503 SERVICE_UNAVAILABLE "Unable to find instance for gulimall-product" at org.springframework.cloud.gateway.support.NotFoundException.create(NotFoundException.java:46) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s): |_ checkpoint ⇢ org.springframework.web.cors.reactive.CorsWebFilter [DefaultWebFilterChain] |_ checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain] |_ checkpoint ⇢ HTTP GET "/api/product/category/list/tree" [ExceptionHandlingWebHandler] Stack trace: