分类: linux

  • 简易搭建局域网内部dns服务器

    在做APP开发测试,由于手机不能像电脑修改host文件那样方便的映射dns,所以在局域网进行调试时,需要搭建一台DNS服务器用于给移动设备进行解析。

    准备两台最小化Centos 7 服务器,一台用来搭建dns服务器,一台用来测试dns;一台window 10 用来测试dns,机器IP如下:

    • dns 服务器 IP:192.168.122.254
    • linux 客户端IP:192.168.0.71
    • window 客户端IP:192.168.0.254

    实现步骤

    • 我们测试的域名:sway.com.cn
    • 使用bind搭建dns服务器
    • 防火墙开启53端口访问
    • 配置客户端的dsn服务
    • 测试dns使用

    1、配置部署服务端

    在需要搭建dns服务的centos 7机器上操作

    • 安装bind
    yum -y install bind  bind-chroot bind-utils

    安装完后,相关的配置主要涉及以下几个目录的文件:

    /etc/named.conf #主配置文件
    /etc/named.rfc1912.zones #拓展配置文件
    /var/named/ #zone 配置文件目录

    • named的核心配置文件:/etc/named.conf:

    1、修改 listen-on port 53 { 127.0.0.1; }; 为 any

    2、修改 allow-query { localhost; }; 为 any

    listen-on port 53 { any; };
    
    vim /etc/named.conf
    options {
        listen-on port 53 { any; };  #监听0.0.0.0 53端口,ipv4
        listen-on-v6 port 53 { ::1; }; #监听0.0.0.0 53端口,ipv6
        directory   "/var/named";     #zone 目录
        dump-file   "/var/named/data/cache_dump.db"; #服务器存放数据库文件的路径名
        statistics-file "/var/named/data/named_stats.txt";  #
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; }; #允许查询
        recursion yes; #运行迭代
        dnssec-enable yes; 
        dnssec-validation yes;
    
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
    
        managed-keys-directory "/var/named/dynamic";
    
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
    };
    
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    
    zone "." IN {
        type hint;
        file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones"; #扩展配置文件
    include "/etc/named.root.key";
    • 向拓展配置文件加入您的域名信息:/etc/named.rfc1912.zones
    zone "szlz.com" IN {
            type master;
            file "sway.com.cn.zone";
    };
    • 在/var/named/ #zone目录创建您的域名解析文件sway.com.cn.zone:
    $TTL 1D
    @       IN SOA  @ dns.sway.com.cn. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
    @       NS      dns
    dns     A       192.168.122.254
    web1    A       192.168.122.8
    mail    A       192.168.122.2
            MX      10 mail.sway.com.cn.
    test1   A       192.168.0.71
    • 使用named-checkzone命令检测您的配置文件:
    named-checkzone
    named-checkzone sway.com.cn /var/named/sway.com.cn.zone
    • 启动bind并开机自启动
    systemctl start named
    systemctl enable named

     

    2、配置linux客户端的dns

    修改/etc/resolv.conf文件设置dns服务器:

    nameserver 192.168.122.254
    nameserver 114.114.114.114

     

    3、配置windows客户端的dns

    修改网卡属性,设置ipv4协议中的dns服务器为:192.168.122.254

    4、使用ping命令测试

    使用ping dns.sway.com.cn查看解析是否正确即可

    5、开启防火墙(如果有开防火墙的话)

    systemctl stop firewalld
    systemctl disable firewalld
    systemctl status firewalld
    iptables -A INPUT -p tcp --dport 53 -j ACCEPT

     

  • CentOS 7 使用 yum 安装 RabbitMQ 3.6.6

    1、安装erlang

    到https://www.rabbitmq.com/releases/erlang/下载安装erlang的最大rpm版本,如果自行安装erlang会十分麻烦,我已经被坑过了

    1.1、下载erlang

    wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm

    1.2、安装erlang

    rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm

    1.3、测试erlang

    输入erl,出现如下画面即为安装正确:

    Erlang/OTP 19 [erts-8.0.3] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
     
    Eshell V8.0.3  (abort with ^G)
    1>

    2、安装RabbitMQ

    注意不要再官网上安装最新的,安装最新的则需要安装更新版本的erlang,但是erlang能用rpm安装的最大版本只有19,所以我们在这里下载匹配的v3.6.6的RabbitMQ。

    2.1、下载RabbitMQ

    wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

    2.2、安装RabbitMQ

    rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm

    如果提示:#错误:依赖检测失败:socat 被 rabbitmq-server-3.6.6-1.el7.noarch 需要

    则使用以下命令先安装socat:

    yum install socat -y

    2.3、启动RabbitMQ

    systemctl start rabbitmq-server    #启动
    systemctl status rabbitmq-server   #状态
    systemctl stop rabbitmq-server     #关闭

    2.4、配置网页插件

    rabbitmq-plugins enable rabbitmq_management #启用插件

    2.5、配置访问账号密码和权限

    rabbitmqctl add_user mq mq123   #添加用户mq,密码mq123
    rabbitmqctl set_permissions -p / mq ".*" ".*" ".*"  #添加权限
    rabbitmqctl set_user_tags mq administrator  #修改用户角色
     
     
    #其它操作
    rabbitmqctl delete_user Username  #删除一个用户
    rabbitmqctl change_password Username Newpassword  #修改用户密码
    rabbitmqctl list_users  #查看当前用户列表

    2.6、登录网页端

    http://ip:15672

    输入刚刚设置的账号和密码即可。

  • 使用jconsole远程监控tomcat的性能

    1、修改tomcat的启动文件,在启动文件的CATALINA_OPTS(如果是daemon.sh启动则为JAVA_OPTS)变量中加上以下参数:

    -Djava.rmi.server.hostname=[服务器IP] -Dcom.sun.management.jmxremote.port=[用于监控的端口] -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

    2、打开jconsole,输入服务器的IP和监控端口,账号密码为服务器的登录账号和密码,点连接即可。

  • nginx要注意的并发配置

    单核所能产生的线程数问题

    nginx默认只使用cpu的一个核,单核支持的线程数是1024,意味着超过1024就会崩

    需要在配置中加上:worker_processes 4 (数字“4”为您所需要使用的核数)

    单个文件访问数量的问题

    nginx默认只允许单个文件被4096个线程打开,意味着如果nginx的线程超过4096也会崩,哪怕设置CPU核数大于4个

    需要在配置中加上:worker_rlimit_nofile 32768

    123

  • 在CentOS7中使用Jenkins自动化部署SpringBoot项目

    安装Jenkins

    准备工作

    计算机中先安装好JDK、Maven、Git,并记录其安装路径。

    安装Jenkins

    使用 yum install jenkins 来安装jenkins,安装好后使用 systemctl start jenkins启动。

    使用浏览器访问该服务器的8080端口(默认),然后在选择安装插件的时候选择左边的默认插件。

    配置Jenkins的插件

    在Jenkins里面“manage – jenkins”的”manage plugins”点击”可选插件”,筛选maven,安装好Maven Integration plugin。(如果需要中文支持,则安装 locale plugin后在configure system找到Default Language设置为“zh_CN”并勾选“Ignore browser preference and force this language to all users Pipeline Speed/Durability Settings”后保存)

    在Jenkins里面“manage – jenkins”的”global tool configuration”分别设置JDK、GIT、MAVEN的安装路径后保存。

    修改Jenkins的运行权限为ROOT

    修改jenkins的运行权限为ROOT,找到“vim /etc/sysconfig/jenkins”文件并编辑JENKINS_USER=”root”,然后重启jenkins

    使用以下命令更改Jenkins主页,webroot和日志的所有权:

    chown -R root:root /var/lib/jenkins
    chown -R root:root /var/cache/jenkins
    chown -R root:root /var/log/jenkins

     

    创建Maven项目

     

  • Tomcat 警告:consider increasing the maximum size of the cache

    tomcat8布署war包,出现如标题的报错,这是因为tomcat8以上对resource采取了cache,而默认的大小是10M。

    解决的办法很简单,就是在context.xml中调大缓存。

    代码如下:

    <Resources cachingAllowed="true" cacheMaxSize="100000" />

    123

  • 阿里云Centos7使用yum安装MySQL5.6

    centos自带的repo是不会自动更新每个软件的最新版本,所以无法通过yum方式安装MySQL的高级版本。

    先安装带有可用的mysql5系列社区版资源的rpm包

    rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

    查看当前可用的mysql安装资源

    yum repolist enabled | grep "mysql.*-community.*"
    mysql-connectors-community/x86_64 MySQL Connectors Community                  17
    mysql-tools-community/x86_64      MySQL Tools Community                       31
    mysql56-community/x86_64          MySQL 5.6 Community Server                 199

    这个时候我们可以直接使用yum的方式安装MySQL了

    yum -y install mysql-community-server

    加入开机启动

    systemctl enable mysqld

    安装结束

  • mysql:百度地图经纬度,按照经纬度坐标排序查询

    公式:

    第一点经纬度:lng1 lat1
    第二点经纬度:lng2 lat2

     

    round(6378.138*2*asin(sqrt(pow(sin((lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)*  
    pow(sin( (lng1*pi()/180-lng2*pi()/180)/2),2)))*1000)

     

    sql语句:

    SELECT *, ROUND(6378.138*2*ASIN(SQRT(POW(SIN((lat1*PI()/180-lat2*PI()/180)/2),2)+COS(lat1*PI()/180)*COS(lat2*PI()/180)*POW(SIN((lng1*PI()/180-lng2*PI()/180)/2),2)))*1000) AS distance FROM b_cerify ORDER BY distance ASC

     

  • Tomcat的性能与最大并发(1000)

    当一个进程有 500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。
    当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。
    具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。
    操作系统对于进程中的线程数有一定的限制:
    Windows 每个进程中的线程数不允许超过 2000
    Linux 每个进程中的线程数不允许超过 1000
    另外,在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。
    Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。
    Tomcat 默认的 HTTP 实现是采用阻塞式的 Socket 通信,每个请求都需要创建一个线程处理。这种模式下的并发量受到线程数的限制,但对于 Tomcat 来说几乎没有 BUG 存在了。
    Tomcat 还可以配置 NIO 方式的 Socket 通信,在性能上高于阻塞式的,每个请求也不需要创建一个线程进行处理,并发能力比前者高。但没有阻塞式的成熟。
    这个并发能力还与应用的逻辑密切相关,如果逻辑很复杂需要大量的计算,那并发能力势必会下降。如果每个请求都含有很多的数据库操作,那么对于数据库的性能也是非常高的。
    对于单台数据库服务器来说,允许客户端的连接数量是有限制的。
    并发能力问题涉及整个系统架构和业务逻辑。
    系统环境不同,Tomcat版本不同、JDK版本不同、以及修改的设定参数不同。并发量的差异还是满大的。
    maxThreads=”1000″ 最大并发数
    minSpareThreads=”100″///初始化时创建的线程数
    maxSpareThreads=”500″///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
    acceptCount=”700″// 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

    <Connector port="9682" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443"
    			   minSpareThreads="256" maxSpareThreads="8192" maxThreads="8192" acceptCount="2000"
    			   />

     

  • nginx安装ssl证书后, 安卓机下https提示SSL警告, 且微信端打开空白

    西部数码推出了免费的ssl证书, 办法机构是 trustAsia.

    根据流程申请后, 并且使用nginx配置我的证书后, 看上去一切正常.

    但是此时同事发来贺电说打开空白…

    总结情况就是: 苹果机访问一切正常, 但是安卓机的微信端访问空白, 安卓机的自带浏览器提示SSL警告.

    123

    这是 联想乐檬X3 LITE 自带浏览器访问的结果.

     

    于是我怀疑是不是证书域名打错了? 检查了后不是.

    于是在想会不会微信对这个机构颁发的证书不信任? 但是查询了一下腾讯自己也有申请这一个证书的功能, 腾讯不会不支持自家的东西.

    但是我以前弄过另外一个项目是正常的, 为什么这次不正常?

    于是对比了一下nginx的证书配置, 以前的项目我是使用了pem+key证书的搭配, 这个出问题的项目使用的是cer+key的搭配. 于是我通过网站在线合成pem的网页把cer和key合成为pem证书后使用(也就是pem+key的模式), 结果一切正常..! 问题到此已经解决…

    为什么会这样呢? 由于没有时间去深入研究, 所以这个问题留给大家去研究啦..!