• Category Archives: 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项目

 

阿里云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的模式), 结果一切正常..! 问题到此已经解决…

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

 

close