ubuntu麒麟系统tomcat中文乱码怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu麒麟系统tomcat中文乱码怎么办?相关的知识,希望对你有一定的参考价值。

参考技术A 在ubuntu麒麟系统中安装tomcat后,用户在搭建Demo程序的过程中有遇到tomcat中文显示乱码的情况,一般乱码都是因为编码问题导致的,而如果大家的编码设置是正确的话就是下面的原因导致的,遇到这种问题的网友可以看看下面为大家准备的解决方法。

ubuntu麒麟系统tomcat中文乱码怎么办?

出现乱码的本质是因为字符集的不统一,如果你的web浏览器发送到服务器的内容字符编码和服务器编码不一致,那么就会出现乱码。

解决方法:

(1)首先统一linux服务器的字符编码,统一配置为utf-8。

(2)配置tomcat配置文件server.xml,将

配置成:

(3)配置mysql数据库my.cnf,将默认字符集设成utf-8。设置完数据库字符集之后再创建数据库,否则前后数据库字符集信息不一致,会导致插入错误。

Tomcat下中文乱码问题的其他解决思路

现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。

1)JSP页面中显示中文乱码??

在JSP文件中使用page命令指定响应结果的MIME类型,如

2)表单提交乱码

表单提交时(post和Get方法),使用request.getParameter方法得到乱码,这是因为tomcat处理提交的参数时默认的是iso-8859-1,表单提交get和post处理乱码问题不同,下面分别说明。

(1)POST处理

对post提交的表单通过编写一个过滤器的方法来解决,过滤器在用户提交的数据被处理之前被调用,可以在这里改变参数的编码方式,过滤器的代码如下:

(2)Get方法的处理

tomcat对post和get的处理方法不一样,所以过滤器不能解决get的乱码问题,它需要在其他地方设置。

打开conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:URIEncoding="GBK"。修改后的Connector设置为:

*注意修改后重新启动tomcat才能起作用。

linux环境 [ubuntu麒麟等系统] 安装Elasticsearch分布式存储集群及配置

简介及应用场景

  1. Elasticsearch (简称ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在存储、搜索和分析大量的数据。 它通常作为具有复杂搜索场景情况下的核心发动机。ES是由java语言编写的。
  2. 应用场景,大型分布式日志分析系统 ELK elasticsearch(存储日志)+logstash(收集日志)+kibana(展示数据)。
    大型电商商品搜索系统、网盘搜索引擎等,主要用于大数据收集。

一、使用离线rpm方式安装

上传zip包到linux安装大家都会,我这里就不多说了;
elasticsearch简称es服务,es服务安装需要jdk环境,需要jdk1.8及以上,我这里已经装好jdk;
我这里使用的是离线安装,上传的rpm源安装,把rpm源上传到服务器,使用rpm -ivh rpm文件名称,如下图:
在这里插入图片描述
安装顺序如下:
先安装 jna-xx.rpm
再安装 elasticsearch-xx.rpm
最后安装 es-config -xx

大部分操作系统rpm安装好后,目录结构如下图所示:

typepath
home/usr/share/elasticsearch/
bin/usr/share/elasticsearch/bin/
config(file)/etc/elasticsearch/
config(env)/etc/sysconfig/elasticsearch
data/var/lib/elasticsearch/
logs/var/log/elasticsearch/
plugins/usr/share/elasticsearch/plugins

Elasticsearch用户及目录权限样式

使用rpm安装的es服务,已自动创建 用户:elasticsearch 用户组:elasticsearch 我们就不用重新创建用户了!
目录权限样式如下图
在这里插入图片描述

二、使用zip压缩包方式安装

直接上传zip包到想要安装的目录,直接解压后即可,解压目录如下:
在这里插入图片描述

Elasticsearch用户及目录权限样式

使用zip方式安装需要创建es用户,因为es服务不能使用root用户启动,这是出于系统安全考虑设置的条件。
由于es服务可以接收用户输入的脚本并且执行,为了系统安全考虑,建议创建一个单独的用户用来运行Elasticsearch,如下图所示,创建es用户组和es用户并授权解压后的文件夹:
在这里插入图片描述

三、集群配置信息,如需要单机配置以下 [192.168.80.130] 对应配置即可

(1)master [192.168.80.130] elasticsearch.yml

# 集群名称 所有节点要相同
cluster.name: my-elasticsearch
# 本节点名称,单机版可不设置默认即可
node.name: node-130
------------------NetWork----------------------
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。 
network.bind_host: 0.0.0.0
# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。
network.publish_host: 0.0.0.0
# 这个参数是用来同时设置bind_host和publish_host上面两个参数,默认默认为0.0.0.0
network.host: 0.0.0.0
# 对外访问的http端口,默认9200
http.port: 9200
# head插件设置,单机版可不设置默认即可
http.cors.enabled: true
#设置可以访问的ip 这里全部设置通过,单机版可不设置默认即可
http.cors.allow-origin: "*"
#作为master节点,单机版可不设置默认即可
node.master: true
#是否存储数据,单机版可不设置默认即可
node.data: false
#设置节点 访问的地址 设置master所在机器的ip,单机版可不设置默认即可
discovery.zen.ping.unicast.hosts: ["192.168.80.130"]

(2)node [192.168.80.131] elasticsearch.yml

# 集群名称 所有节点要相同
cluster.name: my-elasticsearch
# 本节点名称
node.name: node-131
------------------NetWork----------------------
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。 
network.bind_host: 0.0.0.0
# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。
network.publish_host: 0.0.0.0
# 这个参数是用来同时设置bind_host和publish_host上面两个参数,默认默认为0.0.0.0
network.host: 0.0.0.0
# 对外访问的http端口,默认9200
http.port: 9200
# head插件设置
http.cors.enabled: true
#设置可以访问的ip 这里全部设置通过
http.cors.allow-origin: "*"
#作为master节点
node.master: false
#是否存储数据
node.data: true
#设置节点 访问的地址 设置master所在机器的ip
discovery.zen.ping.unicast.hosts: ["192.168.80.130"]

(3)node [192.168.80.132] elasticsearch.yml

# 集群名称 所有节点要相同
cluster.name: my-elasticsearch
# 本节点名称
node.name: node-132
------------------NetWork----------------------
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。 
network.bind_host: 0.0.0.0
# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。
network.publish_host: 0.0.0.0
# 这个参数是用来同时设置bind_host和publish_host上面两个参数,默认默认为0.0.0.0
network.host: 0.0.0.0
# 对外访问的http端口,默认9200
http.port: 9200
# head插件设置
http.cors.enabled: true
#设置可以访问的ip 这里全部设置通过
http.cors.allow-origin: "*"
#作为master节点
node.master: false
#是否存储数据
node.data: true
#设置节点 访问的地址 设置master所在机器的ip
discovery.zen.ping.unicast.hosts: ["192.168.80.130"]

四、启动Elasticsearch

进入master、node服务器进行相应的启动与停止

1.使用rpm安装的启动方式:
#使用root用户设置elasticsearch开启自启
systemctl enable elasticsearch.service
#使用root用户启动elasticsearch
systemctl start elasticsearch.service
#使用root用户查看启动状态、查看启动进程
systemctl status elasticsearch.service
#使用root用户停止服务
systemctl stop elasticsearch.service
ps -ef|grep elasticsearch
# 或者查看es服务启动日志文件
cd /usr/share/elasticsearch/logs
tail -f elasticsearch.log

2.使用zip压缩包安装的启动方式:
#切换为zip解压后创建的es用户启动
su es
#使用es用户,进入解压后的目录bin文件夹,使用./或者sh后台启动es服务如下:-d代表后台启动
cd /usr/local/elasticsearch-5.6.8/bin
./elasticsearch -d
# 查看es服务进程
ps -ef|grep elasticsearch
# 停止es服务进程
kill -9 进程号
# 或者查看es服务日志文件
cd /usr/local/elasticsearch-5.6.8/logs
tail -f elasticsearch.log

五、Elasticearch解释

Elasticsearch集群中有的节点一般有三种角色:master node、data node和client node。

  1. master node——master节点点主要用于元数据(metadata)的处理,比如索引的新增、删除、分片分配等。
  2. client node——client 节点起到路由请求的作用,实际上可以看做负载均衡器。
  3. data node——data 节点上保存了数据分片。它负责数据相关操作,比如分片的CRUD,以及搜索和整合操作。这些操作都比较消耗 CPU、内存和 I/O 资源;
定义发现的节点:
注意,分布式系统整个集群节点个数N要为奇数个!!!
discovery.zen.ping.unicast.hosts:["192.168.80.130:9300", "192.168.80.131:9300", "192.168.80.132:9300"]
是否参与master选举和是否存储数据
#node.master: true
#node.data: true
分片数和副本数
#index.number_of_shards: 5
#index.number_of_replicas: 1

六、Elasticsearch集群是如何工作的?

elasticsearch集群一旦建立起来以后,会选举出一个master,其他都为slave节点。
但是具体操作的时候,每个节点都提供写和读的操作。就是说,你不论往哪个节点中做写操作,这个数据也会分配到集群上的所有节点中。

七、常见错误

异常1

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

解决方案

# 编辑limits.conf文件,添加以下两行即可解决
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

异常2

max number of threads [3818] for user [admin] is too low, increase to at least [4096]

解决方案

# 编辑limits.conf文件,添加以下两行即可解决
vim /etc/security/limits.conf
* soft nproc  4096
* hard nproc  4096

异常3

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方案

# 编辑sysctl.conf文件,添加以下一行即可解决,注意,这里配置完之后需要重启一下linux,否则不一定起效果
vim /etc/sysctl.conf
vm.max_map_count=262144  

以上是关于ubuntu麒麟系统tomcat中文乱码怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

优麒麟和ubuntu的区别 zhihu

解决CentOS7中文乱码(包括Tomcat日志乱码)问题

Ubuntu开机出现乱码问题

wps2019银河麒麟版本怎

解决idea中tomcat 控制台乱码问题

如何在 Ubuntu 操作系统中安装及卸载软件