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分布式存储集群及配置
linux环境 [ubuntu、麒麟等系统] 安装配置Elasticsearch分布式存储集群及配置
简介及应用场景
- Elasticsearch (简称ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在存储、搜索和分析大量的数据。 它通常作为具有复杂搜索场景情况下的核心发动机。ES是由java语言编写的。
- 应用场景,大型分布式日志分析系统 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安装好后,目录结构如下图所示:
type | path |
---|---|
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。
- master node——master节点点主要用于元数据(metadata)的处理,比如索引的新增、删除、分片分配等。
- client node——client 节点起到路由请求的作用,实际上可以看做负载均衡器。
- 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中文乱码怎么办?的主要内容,如果未能解决你的问题,请参考以下文章