首页
友链
关于
免责声明
Search
1
王者营地战绩数据王者荣耀查询网页源码
6,578 阅读
2
群晖Active Backup for Business套件备份Linux服务器教程
4,419 阅读
3
影视分享
4,338 阅读
4
(亲测)Jrebel激活破解方式2019-08-21
4,326 阅读
5
centos7 安装及卸载 jekenis
3,611 阅读
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
登录
Search
标签搜索
docker
springboot
Spring Boot
java
linux
Shiro
Graphics2D
图片
游戏账号交易
Mybatis
Spring Cloud
centos
脚本
Web Station
群辉
王者营地
战绩查询
平台对接
Spring Cloud Alibaba
nacos
绿林寻猫
累计撰写
249
篇文章
累计收到
26
条评论
首页
栏目
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
页面
友链
关于
免责声明
搜索到
195
篇与
后端
的结果
2021-12-08
Java 8 Lambda 表达式
package com.example.demo; public class Java8Tester { public static void main(String args[]){ Java8Tester tester = new Java8Tester(); // 类型声明 MathOperation addition = (int a, int b) -> a + b; // 不用类型声明 MathOperation subtraction = (a, b) -> a - b; // 大括号中的返回语句 MathOperation multiplication = (int a, int b) -> { return a * b; }; // 没有大括号及返回语句 MathOperation division = (int a, int b) -> a / b; System.out.println("10 + 5 = " + tester.operate(10, 5, addition)); System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction)); System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication)); System.out.println("10 / 5 = " + tester.operate(10, 5, division)); // 不用括号 GreetingService greetService1 = message -> System.out.println("Hello " + message); // 用括号 GreetingService greetService2 = (message) -> System.out.println("Hello " + message); greetService1.sayMessage("Runoob"); greetService2.sayMessage("Google"); } interface MathOperation { int operation(int a, int b); } interface GreetingService { void sayMessage(String message); } private int operate(int a, int b, MathOperation mathOperation){ return mathOperation.operation(a, b); } } 输出结果:
2021年12月08日
151 阅读
0 评论
0 点赞
2021-12-08
java生成微信Sign签名
目录 Sign签名生成方法工具类工具类Sign签名生成方法工具类 import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.security.MessageDigest; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; /** * 微信工具类 * @Author: LiuYong * @Date:2019/12/11 11:06 * @Description: TODO 微信工具类 */ public class WeChatTool { private static Logger logger = Logger.getLogger(WeChatTool.class.getName()); /**签名类型*/ public static final String MD5="MD5"; public static final String HMACSHA256="HMACSHA256"; public static void main(String[] args) { Map<String,Object> map = new HashMap<>(); map.put("appid","wxd930ea5d5a258f4f"); map.put("auth_code","123456"); map.put("body","test"); map.put("device_info","123"); map.put("mch_id","1900000109"); System.out.println(getSign(map,WeChatConstants.KEY,WeChatTool.HMACSHA256)); } /** * Sign签名生成方法 * @Author LiuYong * @Date 2019/12/11 11:13 * @Description TODO Sign签名生成方法 * @param map 自定义参数 * @param key 商户KEY * @param type 签名类型 * @return **/ public static String getSign(Map<String,Object> map,String key,String type){ StringBuilder sb = new StringBuilder(); String result =null; try{ ArrayList<String> list = new ArrayList<String>(); for(Map.Entry<String,Object> entry:map.entrySet()){ if(entry.getValue()!=""){ list.add(entry.getKey() + "=" + entry.getValue() + "&"); } } int size = list.size(); String [] arrayToSort = list.toArray(new String[size]); Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER); for(int i = 0; i < size; i ++) { sb.append(arrayToSort[i]); } sb.append("key=" + key); result = sb.toString(); if(type.equals(MD5)){ result=MD5(result); }else if(type.equals(HMACSHA256)){ result=HMACSHA256(result,key); } }catch (Exception e){ logger.info("ERROR com.slf.utils.utils.wechat.WeChatTool.getSign :"+e.getMessage()); return null; } return result; } /** * 生成 MD5 * @Author LiuYong * @Date 2019/12/11 17:08 * @Description TODO 生成 MD5 * @param data 待处理数据 * @return 加密结果 **/ public static String MD5(String data) { StringBuilder sb = new StringBuilder(); try{ java.security.MessageDigest md = MessageDigest.getInstance("MD5"); byte[] array = md.digest(data.getBytes("UTF-8")); for (byte item : array) { sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3)); } }catch (Exception e){ logger.info("ERROR com.slf.utils.utils.wechat.WeChatTool.MD5 :"+e.getMessage()); return null; } return sb.toString().toUpperCase(); } /** * 生成 HMACSHA256 * @Author LiuYong * @Date 2019/12/11 17:00 * @Description TODO 生成 HMACSHA256 * @param data 待处理数据 * @param key 密钥 * @return 加密结果 **/ public static String HMACSHA256(String data, String key) { StringBuilder sb = new StringBuilder(); try{ Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256"); sha256_HMAC.init(secret_key); byte[] array = sha256_HMAC.doFinal(data.getBytes("UTF-8")); for (byte item : array) { sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3)); } }catch (Exception e){ logger.info("ERROR com.slf.utils.utils.wechat.WeChatTool.HMACSHA256 :"+e.getMessage()); return null; } return sb.toString().toUpperCase(); } } 工具类 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.security.MessageDigest; /** * Md5加密方法 * @Author LiuYong * @Date 2019/12/11 11:17 * @Description TODO Md5加密方法 **/ public class Md5Utils { private static final Logger log = LoggerFactory.getLogger(Md5Utils.class); private static byte[] md5(String s) { MessageDigest algorithm; try { algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); algorithm.update(s.getBytes("UTF-8")); byte[] messageDigest = algorithm.digest(); return messageDigest; } catch (Exception e) { log.error("MD5 Error...", e); } return null; } private static final String toHex(byte hash[]) { if (hash == null) { return null; } StringBuffer buf = new StringBuffer(hash.length * 2); int i; for (i = 0; i < hash.length; i++) { if ((hash[i] & 0xff) < 0x10) { buf.append("0"); } buf.append(Long.toString(hash[i] & 0xff, 16)); } return buf.toString(); } public static String hash(String s) { try { return new String(toHex(md5(s)).getBytes("UTF-8"), "UTF-8"); } catch (Exception e) { log.error("not supported charset...{}", e); return s; } } }
2021年12月08日
188 阅读
0 评论
0 点赞
2021-12-08
java 最简单的xml与json相互转换
导入依赖 <!--xml转换--> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.9.8</version> <scope>compile</scope> </dependency> 工具类 import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import java.util.logging.Logger; /** * json对象或字符串转xml * @Author: LiuYong * @Date:2019/12/11 11:21 * @Description: TODO json对象或字符串转xml */ public class JsonAndXmlUtils { private static Logger logger = Logger.getLogger(JsonAndXmlUtils.class.getName()); public static void main(String[] args) throws Exception { String jsonInput = "{\"nonce_str\":\"b927722419c52622651a871d1d9ed8b2\",\"device_info\":\"1000\",\"out_trade_no\":\"1405713376\",\"appid\":\"wx2421b1c4370ec43b\",\"total_fee\":\"1\",\"sign\":\"3CA89B5870F944736C657979192E1CF4\",\"trade_type\":\"JSAPI\",\"attach\":\"att1\",\"body\":\"JSAPI支付测试\",\"mch_id\":\"10000100\",\"notify_url\":\"http://wxpay.weixin.qq.com/pub_v2/pay/notify.php\",\"spbill_create_ip\":\"127.0.0.1\"}\n"; String jsonToXml = JsonAndXmlUtils.jsonToXml(jsonInput); System.out.println("jsonToXml:"+jsonToXml); JSONObject jsonObject = xmlToJson(jsonToXml); System.out.println("xmlToJson:"+jsonObject.toJSONString()); } /** * xml字符串转json对象 * @Author LiuYong * @Date 2019/12/11 11:40 * @Description TODO xml字符串转json对象 * @param xmlStr * @return JSONObject **/ public static JSONObject xmlToJson(String xmlStr){ XmlMapper xmlMapper = new XmlMapper(); JSONObject jsonObject1=null; try{ jsonObject1 = xmlMapper.readValue(xmlStr, JSONObject.class); }catch (Exception e){ logger.info("ERROR com.slf.utils.utils.JsonAndXmlUtils.xmlToJson 异常:"+e.getMessage()); } return jsonObject1; } /** * json字符串转xml字符串 * @Author LiuYong * @Date 2019/12/11 11:45 * @Description TODO json字符串转xml字符串 * @param json * @return String **/ public static String jsonToXml(String json){ JSONObject jsonObject = JSONObject.parseObject(json); XmlMapper xmlMapper = new XmlMapper(); String s = null; try{ s = xmlMapper.writeValueAsString(jsonObject); }catch (Exception e){ logger.info("ERROR com.slf.utils.utils.JsonAndXmlUtils.jsonToXml 异常:"+e.getMessage()); } return s; } }
2021年12月08日
215 阅读
0 评论
0 点赞
2021-12-08
java获取视频时长及判断视频横竖拍摄
<dependency> <groupId>ws.schild</groupId> <artifactId>jave-all-deps</artifactId> <version>2.5.1</version> </dependency> public AjaxResult uploadFileVideo(MultipartFile file) throws Exception { try { // 上传文件路径 String filePath = Global.getUploadPath(); // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file , MimeTypeUtils.MEDIA_EXTENSION); String url = serverConfig.getUrl() + fileName; String actualFileName = fileName.substring(fileName.indexOf("/",10)); String actualUrl = filePath + actualFileName; File temp = new File(actualUrl); AjaxResult ajax = AjaxResult.success(); try { double duration = getVedioTime(temp); Long limit = 10L; if(duration <=0 ){ temp.delete(); return AjaxResult.error("视频损坏"); }else if(duration > limit){ temp.delete(); return AjaxResult.error("视频时长不能超过"+limit+"秒"); } ajax.put("duration", duration); } catch (Exception e){ e.printStackTrace(); temp.delete(); return AjaxResult.error("视频解析失败"); } ajax.put("fileName", fileName); ajax.put("url", url); ajax.put("judge", judgeVerticalAndHorizontal(file)); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } /** * @author Uncle * @Description TODO 判断视频纵向还是横向 * @Date 2020/07/27 11:50 * @param * @return 1 横 0 竖 */ public int judgeVerticalAndHorizontal(MultipartFile file){ float v = 0F; try{ File tempFile = FileUploadUtils.MultipartFileToFile(file); MultimediaObject instance = new MultimediaObject(tempFile); ws.schild.jave.MultimediaInfo m = instance.getInfo(); //> 1 说明是横的。< 1说明是竖着的 v = ((float) m.getVideo().getSize().getWidth()) / ((float) m.getVideo().getSize().getHeight()); }catch (Exception e){ e.printStackTrace(); } return v>1?1:0; } /** 获取视频时长:秒 * * @param file * @return */ public static Long getVedioTime(File file) { try { MultimediaObject instance = new MultimediaObject(file); ws.schild.jave.MultimediaInfo result = instance.getInfo(); long ls = result.getDuration() / 1000; return ls; } catch (Exception e) { e.printStackTrace(); } return 0L; }/** * 功能描述 :MultipartFile转file对象 * @author Mr.LiuYong * @date 2019/5/10 18:30 * @param * @return */ public static File MultipartFileToFile(MultipartFile multiFile) { // 获取文件名 String fileName = multiFile.getOriginalFilename(); // 获取文件后缀 String prefix = fileName.substring(fileName.lastIndexOf(".")); // 用当前时间作为文件名,防止生成的临时文件重复 try { File file = File.createTempFile(System.currentTimeMillis() + "", prefix); multiFile.transferTo(file); return file; } catch (Exception e) { e.printStackTrace(); } return null; }
2021年12月08日
149 阅读
0 评论
0 点赞
2021-12-08
Centos 服务器 安装 JDK、Tomcat、Mysql
配置JAVA环境 查看yum库中的Java安装包 yum -y list java* 输入之后回车,会看到各种不同版本的jdk包使用yum安装Java环境安装java-1.8.0版本的所有相关程序yum -y install java-1.8.0-openjdk* 出现complete!说明安装结束 查看刚安装的Java版本信息 java -version 出现下图信息,说明安装成功 配置环境变量由上可知java的路径为: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64打开文件vi /etc/profile 在文件最后一行添加export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH使其生效 source /etc/profile//查看是否配置成功echo $PATH 配置Tomcat转自 https://blog.csdn.net/TheBlackbeard/article/details/52549763 关于LINUX权限-bash: ./startup.sh: Permission denied在执行./startup.sh,或者./shutdown.sh的时候,爆出了Permission denied,其实很简单,就是今天在执行tomcat的时候,用户没有权限,而导致无法执行,用命令chmod 修改一下bin目录下的.sh权限就可以了执行chmod u+x *.sh在此执行,OK了 Tomcat无法访问项目404的原因可能是防火墙的原因也有可能是项目的jdk版本与linux的jdk版本不一致开启防火墙开启防火墙(systemctl start firewalld)1.使用命令 firewall-cmd --state查看防火墙状态。得到结果是running或者not running2.为running 时,向firewall 添加需要开放的端口命令为firewall-cmd --permanent --zone=public --add-port=8080/tcp//永久的添加该端口。去掉--permanent则表示临时。4.firewall-cmd --reload//加载配置,使得修改有效。5.使用命令firewall-cmd --permanent --zone=public --list-ports//查看开启的端口,出现8080/tcp这开启正确6.再次使用外部浏览器访问,这出现tomcat的欢迎界面。 安装mysql (其他方法)一、系统环境yum update升级以后的系统版本为[root@yl-web yl]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)二、mysql安装一般网上给出的资料都是#yum install mysql #yum install mysql-server #yum install mysql-devel安装mysql和mysql-devel都成功,但是安装mysql-server失败,如下:[root@yl-web yl]# yum install mysql-server Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.sina.cn * extras: mirrors.sina.cn * updates: mirrors.sina.cn No package mysql-server available. Error: Nothing to do查资料发现是CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了。有两种解决办法:1、方法一:安装mariadbMariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。安装mariadb,大小59 M。[root@yl-web yl]# yum install mariadb-server mariadbmariadb数据库的相关命令是:systemctl start mariadb #启动MariaDBsystemctl stop mariadb #停止MariaDBsystemctl restart mariadb #重启MariaDBsystemctl enable mariadb #设置开机启动所以先启动数据库[root@yl-web yl]# systemctl start mariadb然后就可以正常使用mysql了[root@yl-web yl]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.41-MariaDB MariaDB Server Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) MariaDB [(none)]>安装mariadb后显示的也是 MariaDB [(none)]> ,可能看起来有点不习惯。下面是第二种方法。2、方法二:官网下载安装mysql-server# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm # rpm -ivh mysql-community-release-el7-5.noarch.rpm # yum install mysql-community-server安装成功后重启mysql服务。# service mysqld restart初次安装mysql,root账户没有密码。[root@yl-web yl]# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.6.26 MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.01 sec) mysql>设置密码mysql> set password for 'root'@'localhost' =password('password'); Query OK, 0 rows affected (0.00 sec) mysql>不需要重启数据库即可生效。在mysql安装过程中如下内容:Installed: mysql-community-client.x86_64 0:5.6.26-2.el7 mysql-community-devel.x86_64 0:5.6.26-2.el7 mysql-community-libs.x86_64 0:5.6.26-2.el7 mysql-community-server.x86_64 0:5.6.26-2.el7 Dependency Installed: mysql-community-common.x86_64 0:5.6.26-2.el7 Replaced: mariadb.x86_64 1:5.5.41-2.el7_0 mariadb-devel.x86_64 1:5.5.41-2.el7_0 mariadb-libs.x86_64 1:5.5.41-2.el7_0 mariadb-server.x86_64 1:5.5.41-2.el7_0所以安装完以后mariadb自动就被替换了,将不再生效。[root@yl-web yl]# rpm -qa |grep mariadb [root@yl-web yl]#三、配置mysql1、编码mysql配置文件为/etc/my.cnf最后加上编码配置[mysql] default-character-set =utf8这里的字符编码必须和/usr/share/mysql/charsets/Index.xml中一致。2、远程连接设置把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户。mysql> grant all privileges on *.* to root@'%'identified by 'password';如果是新用户而不是root,则要先新建用户mysql>create user 'username'@'%' identified by 'password';此时就可以进行远程连接了。如果是连接服务器上的mysql记得配置安全组安装mysql转自https://www.cnblogs.com/starof/p/4680083.html
2021年12月08日
295 阅读
0 评论
0 点赞
2021-12-08
Centos忘记mysql密码
1.vi /etc/my.cnf2.在里面添加 skip-grant-tables例如:[mysqld]skip-grant-tablesdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock3.重启mysql service mysql restart4.登录mysql -uroot -p (直接点击回车,密码为空)5.选择数据库use mysql;6.修改root密码update user set authentication_string=password('password') where user='root';7.执行 刷新权限 flush privileges;8.退出exit;9.删除skip-grant-tables10.重启mysqlservice mysql restart再次登录就可以用密码了
2021年12月08日
162 阅读
0 评论
0 点赞
2021-12-08
Centos7 yum 安装redis
centos7 yum安装配置redis 并设置密码centos7 yum安装配置redis 并设置密码 1.设置Redis的仓库地址yum install epel-release2.安装redisyum install redis 修改配置文件,监听所有的IP地址vim /etc/redis.conf 找到下面这一行 bind 127.0.0.1 注释掉 #bind 127.0.0.1 修改redis的守护进程为no ,不启用 127.0.0.1:6379> config set daemonize "no" OK 修改redis的保护模式为no,不启用 127.0.0.1:6379> config set protected-mode "no" OK 3.启动redis,到此完成cd usr/bin 命令目录 ./redis-server 启动服务 ./redis-cli 启动客户端 如果需要设置开机自动启动 chkconfig redis on如果需要redis配置认证密码1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到#requirepass foobared去掉行前的注释,并修改密码为所需的密码,保存文件requirepass youpwd通过命令设置密码127.0.0.1:6379> config set requirepass youpassword OK设置密码后就可以通过redis连接工具远程连接了查看redis安装目录rpm -ql redis
2021年12月08日
221 阅读
0 评论
0 点赞
2021-12-08
Centos7安装ActiveMQ
安装ActiveMQ之前先安装JDK:jdk安装1.创建activemq文件夹[root@izwz91m0zmp2dk7b4n7afiz ~]# cd /home [root@izwz91m0zmp2dk7b4n7afiz home]# mkdir acticemq 查看:[root@izwz91m0zmp2dk7b4n7afiz home]# ls acticemq 2.下载压缩包[root@izwz91m0zmp2dk7b4n7afiz home]# cd activemq [root@izwz91m0zmp2dk7b4n7afiz activemq]# wget http://archive.apache.org/dist/activemq/5.14.5/apache-activemq-5.14.5-bin.tar.gz 3.解压[root@izwz91m0zmp2dk7b4n7afiz activemq]# ls apache-activemq-5.14.5-bin.tar.gz [root@izwz91m0zmp2dk7b4n7afiz activemq]# tar -zxvf apache-activemq-5.14.5-bin.tar.gz 4.查看下载后的文件,修改文件名[root@izwz91m0zmp2dk7b4n7afiz activemq]# ls apache-activemq-5.14.5 apache-activemq-5.14.5-bin.tar.gz [root@izwz91m0zmp2dk7b4n7afiz activemq]# mv apache-activemq-5.14.5 activemq 5.进入bin目录,启动activemq[root@izwz91m0zmp2dk7b4n7afiz activemq]# cd activemq [root@izwz91m0zmp2dk7b4n7afiz activemq]# ls LICENSE NOTICE README.txt activemq-all-5.14.5.jar bin conf data docs examples lib webapps webapps-demo [root@izwz91m0zmp2dk7b4n7afiz activemq]# cd bin [root@izwz91m0zmp2dk7b4n7afiz bin]# ls activemq activemq-diag activemq.jar env linux-x86-32 linux-x86-64 macosx wrapper.jar [root@izwz91m0zmp2dk7b4n7afiz bin]# ./activemq start 查看进程:[root@izwz91m0zmp2dk7b4n7afiz bin]# ps -ef| grep activemq开放端口:添加端口→加载生效→查看[root@izwz91m0zmp2dk7b4n7afiz bin]# firewall-cmd --zone=public --add-port=8161/tcp --permanent success [root@izwz91m0zmp2dk7b4n7afiz bin]# firewall-cmd --zone=public --add-port=61616/tcp --permanent success [root@izwz91m0zmp2dk7b4n7afiz bin]# firewall-cmd --reload success [root@izwz91m0zmp2dk7b4n7afiz bin]# firewall-cmd --zone=public --list-ports 8161/tcp 61616/tcp (如果是云服务器记得在安全组添加服务器的端口,否则访问不了)6.登录验证http://ip地址:8161/admin 用户名:admin 密码:admin 至此安装成功
2021年12月08日
246 阅读
0 评论
0 点赞
2021-12-08
Centos7 安装RabbitMQ及配置(亲测)
Rabbit MQ Linux 安装Centos7如果是重装先把erlang和rabbitmq卸载干净,不然还会重装失败《rabbitmq和erlang卸载》记得删除/var/lib/rabbitmq目录和/etc/rabbitmq目录1 erlang安装1.1 安装依赖环境C++编译yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC unixODBC-devel httpd python-simplejson1.2 erlang语言环境的安装wget http://erlang.org/download/otp_src_21.3.tar.gz 1.3 解压erlang安装包tar -xzvf otp_src_21.3.tar.gz 1.4 进入目录cd otp_src_21.31.5 配置./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac1.6 开始安装编译make make install1.7 配置erlang环境变量在原有的PATH后面添加:/usr/local/erlang/binvim /etc/profile export PATH=$PATH:/usr/local/erlang/bin source /etc/profile #使其生效 echo $PATH1.8 检查erl2. RabbitMQ安装 2.1下载切换目录,把rabbitmq下载到此目录,这里安装的版本是:rabbitmq-server-generic-unix-3.7.9.tarcd /usr/local 2.2 解压tar -xvf rabbitmq-server-generic-unix-3.7.9.tar2.3 配置首先重命名mv rabbitmq_server-3.7.9/ rabbitmqvi /etc/profile #set rabbitmq environment export PATH=$PATH:/usr/local/rabbitmq/sbin source /etc/profile #使其生效 echo $PATH2.4 启动服务rabbitmq-server -detached //启动rabbitmq,-detached代表后台守护进程方式启动。 启动后可能提示Warning: PID file not written; -detached was passed.但是通过浏览器是可以访问的如果启动失败,查看是否端口:5672被占用netstat -lnp|grep 5672 #检查端口被哪个进程占用 ps 762 #查看进程的详细信息,加入进程号是762 kill -9 762 #杀掉编号为762的进程(请根据实际情况输入)2.5 查看状态rabbitmqctl status启动成功如下:2.6 配置网页插件创建目录mkdir /etc/rabbitmq启用插件rabbitmq-plugins enable rabbitmq_management2.7 开放防火墙端口//永久的添加该端口。去掉--permanent则表示临时。 firewall-cmd --permanent --zone=public --add-port=5672/tcp firewall-cmd --permanent --zone=public --add-port=15672/tcp //重新加载配置,使得修改有效。 firewall-cmd --reload //查看开启的端口,出现5672/15672这开启正确 firewall-cmd --permanent --zone=public --list-ports 2.8 相关命令启动服务:rabbitmq-server -detached 查看状态:rabbitmqctl status 关闭服务:rabbitmqctl stop 列出角色:rabbitmqctl list_users2.9 配置账户默认网页是不允许访问的,需要增加一个用户修改一下权限,代码如下:rabbitmqctl add_user username password //添加用户,后面两个参数分别是用户名和密码 rabbitmqctl set_permissions -p / username ".*" ".*" ".*" //添加权限 rabbitmqctl set_user_tags username administrator //修改用户角色2.10 访问浏览器输入:http://ip:15672登录之后到这rabbitmq的安装就完成啦
2021年12月08日
200 阅读
0 评论
0 点赞
2021-12-08
centos安装mosquitto支持websocket
下载libwebsocketshttps://github.com/warmcat/libwebsockets/archive/v1.5-chrome47-firefox41.tar.gz安装基础软件yum install gcc-c++ yum install cmake yum install openssl-devel //mosquitto默认支持openssl解压、编译、安装libwebsockets tar zxvf libwebsockets-1.5-chrome47-firefox41.tar.gz cd libwebsockets-1.5-chrome47-firefox41 mkdir build cd build cmake .. make make install安装mosquittoyum install mosquitto修改配置文件mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf# ================================================================= # General configuration # ================================================================= # 客户端心跳的间隔时间 #retry_interval 20 # 系统状态的刷新时间 #sys_interval 10 # 系统资源的回收时间,0表示尽快处理 #store_clean_interval 10 # 服务进程的PID #pid_file /var/run/mosquitto.pid # 服务进程的系统用户 user root # 客户端心跳消息的最大并发数 #max_inflight_messages 10 # 客户端心跳消息缓存队列 #max_queued_messages 100 # 用于设置客户端长连接的过期时间,默认永不过期 #persistent_client_expiration # ================================================================= # Default listener # ================================================================= # 服务绑定的IP地址 #bind_address # 服务绑定的端口号 port 1883 listener 9001 protocol websockets # 允许的最大连接数,-1表示没有限制 #max_connections -1 # cafile:CA证书文件 # capath:CA证书目录 # certfile:PEM证书文件 # keyfile:PEM密钥文件 #cafile #capath #certfile #keyfile # 必须提供证书以保证数据安全性 #require_certificate false # 若require_certificate值为true,use_identity_as_username也必须为true #use_identity_as_username false # 启用PSK(Pre-shared-key)支持 #psk_hint # SSL/TSL加密算法,可以使用“openssl ciphers”命令获取 # as the output of that command. #ciphers # ================================================================= # Persistence # ================================================================= # 消息自动保存的间隔时间 #autosave_interval 1800 # 消息自动保存功能的开关 #autosave_on_changes false # 持久化功能的开关 persistence true # 持久化DB文件 #persistence_file mosquitto.db # 持久化DB文件目录 #persistence_location /var/lib/mosquitto/ # ================================================================= # Logging # ================================================================= # 4种日志模式:stdout、stderr、syslog、topic # none 则表示不记日志,此配置可以提升些许性能 log_dest none # 选择日志的级别(可设置多项) #log_type error #log_type warning #log_type notice #log_type information # 是否记录客户端连接信息 #connection_messages true # 是否记录日志时间 #log_timestamp true # ================================================================= # Security # ================================================================= # 客户端ID的前缀限制,可用于保证安全性 #clientid_prefixes # 允许匿名用户 allow_anonymous false # 用户/密码文件,默认格式:username:password password_file /etc/mosquitto/pwfile.example # PSK格式密码文件,默认格式:identity:key #psk_file # pattern write sensor/%u/data # ACL权限配置,常用语法如下: # 用户限制:user <username> # 话题限制:topic [read|write] <topic> # 正则限制:pattern write sensor/%u/data # 配置topic和用户 acl_file /etc/mosquitto/aclfile # ================================================================= # Bridges # ================================================================= # 允许服务之间使用“桥接”模式(可用于分布式部署) #connection <name> #address <host>[:<port>] #topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix] # 设置桥接的客户端ID #clientid # 桥接断开时,是否清除远程服务器中的消息 #cleansession false # 是否发布桥接的状态信息 #notifications true # 设置桥接模式下,消息将会发布到的话题地址 # $SYS/broker/connection/<clientid>/state #notification_topic # 设置桥接的keepalive数值 #keepalive_interval 60 # 桥接模式,目前有三种:automatic、lazy、once #start_type automatic # 桥接模式automatic的超时时间 #restart_timeout 30 # 桥接模式lazy的超时时间 #idle_timeout 60 # 桥接客户端的用户名 #username # 桥接客户端的密码 #password # bridge_cafile:桥接客户端的CA证书文件 # bridge_capath:桥接客户端的CA证书目录 # bridge_certfile:桥接客户端的PEM证书文件 # bridge_keyfile:桥接客户端的PEM密钥文件 #bridge_cafile #bridge_capath #bridge_certfile #bridge_keyfile修改文件mv /etc/mosquitto/aclfile.example /etc/mosquitto/aclfileuser test topic read test/# topic write test/# # This affects access control for clients with no username. topic read $SYS/# # This only affects clients with username "roger". user roger topic foo/bar # This affects all clients. pattern write $SYS/broker/connection/%c/state配置用户名和密码groupadd mosquitto useradd -g mosquitto mosquitto添加启动用户(默认mosquitto用户启动)groupadd mosquitto useradd -g mosquitto mosquitto后台启动mosquitto -c /etc/mosquitto/mosquitto.conf -d如果报错查看命令所在目录find / -name mosquitto复制命令到对应文件夹cp mosquitto /usr/local/sbin/
2021年12月08日
182 阅读
0 评论
0 点赞
1
...
14
15
16
...
20