2019年9月

CentOS7.x 设置系统时间

硬件时钟和系统时钟
(1) 硬件时钟
RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。

(2) 系统时钟
一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。

CentOS7开始,使用timedatectl设置日期时间:
(1) 读取时间

timedatectl //等同于 timedatectl status

(2) 设置时间

timedatectl set-time "YYYY-MM-DD HH:MM:SS"

(3) 列出所有时区

timedatectl list-timezones

(4) 设置时区

timedatectl set-timezone Asia/Shanghai

(5) 是否NTP服务器同步

timedatectl set-ntp yes //yes或者no

(6) 将硬件时钟调整为与本地时钟一致

timedatectl set-local-rtc 1
hwclock --systohc --localtime //与上面命令效果一致

注意: 硬件时钟默认使用UTC时间,因为硬件时钟不能保存时区和夏令时调整,修改后就无法从硬件时钟中读取出准确标准时间,因此不建议修改。修改后系统会出现下面的警告。

GMT、UTC、CST、DST 时间

(1) UTC

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。

(2) GMT

格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)

(3) CST

中国标准时间 (China Standard Time)

(4) DST

夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)

GMT + 8 = UTC + 8 = CST

zabbix3.x中文图片乱码终极解决

zabbix-logo.png
Zabbix乱码是由于默认使用DejaVuSan.ttf字体,该字体不支持中文,切换语言成中文Zh_cn后,在图表上中文出现乱码,如下图:
lm.png

解决zabbix乱码方法如下:
找到本地C:WindowsFontsmsyh.ttf(微软雅黑)上传到服务器zabbix网站目录fonts目录下
修改includedefines.inc.php中的DejaVuSans为msyh

define('ZBX_GRAPH_FONT_NAME',        'msyh');
define('ZBX_FONT_NAME', 'msyh');

再次刷新即可正常;
tb.png

如果还乱码,就需要检查数据库编码是否是utf8编码了

show create database zabbixdb; #查看数据库创建编码
root@monitor-db 09:23:05 [(none)]>show create database zabbixdb;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| zabbixdb | CREATE DATABASE `zabbixdb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)

若数据库是utf8编码,但还乱码,就需要继续盘查,php编译参数中是否编译了jpeg、png、freetype等组件,
编译顺序如下:

安装libmcrypt:
cd /opt
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure && make && make install

安装 jpeg6

 mkdir /usr/local/jpeg6
 mkdir /usr/local/jpeg6/bin
 mkdir /usr/local/jpeg6/lib
 mkdir /usr/local/jpeg6/include
 mkdir /usr/local/jpeg6/man
 mkdir /usr/local/jpeg6/man/man1
cd /opt
tar zxf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
make && make install

安装png

cd /opt
tar zxvf libpng-1.6.10.tar.gz
./configure --prefix=/usr/local/png --enable-shared
make && make install

安装freetype

cd /opt
tar zxvf freetype-2.5.3.tar.gz
cd freetype-2.5.3
./configure --prefix=/usr/local/freetype --enable-shared
make && make install

最后编译php参数如下:

./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql --with-mysqli=/usr/bin/mysql_config --with-mysql-sock=/var/lib/mysql/mysql.sock --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gd --with-iconv --with-zlib --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --with-jpeg-dir=/usr/local/jpeg6 --with-png-dir=/usr/local/png --with-freetype-dir=/usr/local/freetype --with-mcrypt=/usr/local/libmcrypt --enable-maintainer-zts --with-ldap=shared --without-gdbm 
make -j 8
make install

CentOS7.x 快速申请部署Let’s Encrypt 证书

Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。
https.jpg
申请步骤如下:

#安装git及其他用到的包
yum install git zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel -y

#获取letsencrypt
git clone https://github.com/letsencrypt/letsencrypt

#进入letsencrypt目录
cd letsencrypt

#生成证书
./letsencrypt-auto certonly --standalone --email ice@mail.com -d unixso.com -d www.unixso.com

#证书位置
/etc/letsencrypt/live/unixso.com
cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件

#Nginx环境中,对应的ssl_certificate和ssl_certificate_key路径设置成的2个文件就可以。

附nginx ssl参数配置文件其他省略:

ssl_certificate cert/unixso.com.pem;
ssl_certificate_key cert/unixso.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;

Let's Encrypt证书有效期90天的,需要定时更新续期:

./letsencrypt-auto certonly --renew-by-default --email ice@mail.com -d unixso.com -d www.unixso.com

或者加入crontab定时任务执行即可;

0 0 1 */2 *  /data/letsencrypt/up.sh

每两个月的1日0点执行up.sh更新证书续期;
如果报错"Problem binding to port 80: Could not bind to IPv4 or IPv6."
停掉nginx进程重新执行即可;

蓝天

天很蓝,云很低,这样的天气不错,适合出去转转;

IMG_20190916_082932.jpg

微信小程序开发-js判断是否为空

1、判断undefined:

var tmp = undefined; 
if (typeof(tmp) == "undefined"){ 
   console.log("undefined"); 
}

说明:typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"
2、判断null:

var tmp = 0/0; 
if (isNaN(tmp) ){ 
   console.log("NaN"); 
}

3、判断NaN:

var tmp = 0/0; 
if (isNaN(tmp) ){ 
   console.log("NaN"); 
}

说明:NaN 表示非法,如果把 NaN 与任何值(包括其自身)相比得到的结果均是 false,所以要判断某个值是否是 NaN,不能使用 == 或 === 运算符。

提示:isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字。当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况。
4.判断undefined和null:

var tmp = undefined; 
if (tmp== undefined) 
{ 
   console.log("null or undefined"); 
}
var tmp = undefined; 
if (tmp== null) 
{ 
   console.log("null or undefined"); 
}

说明:null==undefined
5、判断undefined、null与NaN:

var tmp = null; 
if (!tmp) 
{ 
   console.log("null or undefined or NaN"); 
}

提示:一般不那么区分就使用这个足够,举例说明:

    if (typeof (username) == '' || typeof (username) == 'undefined') {
      wx.showModal({
        title: "系统提示",
        content: "资产管理员账号不能为空!",
        showCancel: false
      })
    }else if (typeof (pwd) == '' || typeof (pwd) == 'undefined') {
      wx.showModal({
        title: "系统提示",
        content: "资产管理员密码不能为空!",
        showCancel: false
        
      })
    } else {
      console.log("账号:" + username + "密码:" + pwd)
}
 },

Oracle11g查询数据量最大的表及存储空间大小

数据量最大的表:

select * from user_tables t where t.NUM_ROWS is not  null  order by t.NUM_ROWS  desc

table.png

存储空间可以用如下语句查:

select tablespace_name, sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;

tablespace.png

查询最大表记录:

select count(1) from LBPM_RT_NODEHANDLER_DEFINE;

select_max_row.png
最大记录数量两千三百多万;

最新

分类

归档

评论

其它