CentOS清除用户登录记录和命令历史

清除登陆系统成功的记录

[root@localhost root]# echo > /var/log/wtmp //此文件默认打开时乱码,可查到ip等信息
[root@localhost root]# last //此时即查不到用户登录信息

清除登陆系统失败的记录

[root@localhost root]# echo > /var/log/btmp //此文件默认打开时乱码,可查到登陆失败信息
[root@localhost root]# lastb //查不到登陆失败信息

清除历史执行命令

[root@localhost root]# history -c //清空历史执行命令
[root@localhost root]# echo > ./.bash_history //或清空用户目录下的这个文件即可

导入空历史记录

[root@localhost root]# vi /root/history //新建记录文件
[root@localhost root]# history -c //清除记录 
[root@localhost root]# history -r /root/history.txt //导入记录 
[root@localhost root]# history //查询导入结果

AWS上快速创建LVM

名词解释:
PV(Physical Volume) - 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备

VG(Volume Group) - 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组

LV(Logical Volume) - 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组
929849-20180511172228368-364897317.png

创建LVM步骤

添加新硬盘;
给新硬盘创建分区;
创建PV;
创建VG;
创建LV;
格式化LV;
挂载LV到指定目录;

在AWS上创建LVM步骤如下:

1、先在控制台上添加存储;
2、查看添加的硬盘,

[root@hongsinvm ~]# fdisk -l

Disk /dev/nvme1n1: 483.2 GB, 483183820800 bytes, 943718400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/nvme0n1: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c7ec9

        Device Boot      Start         End      Blocks   Id  System
/dev/nvme0n1p1   *        2048     2099199     1048576   83  Linux
/dev/nvme0n1p2         2099200    41943039    19921920   8e  Linux LVM

Disk /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

创建lvm 8e分区:

[root@hongsinvm ~]# fdisk /dev/nvme1n1
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x56ce9c54.

Command (m for help): o
Building a new DOS disklabel with disk identifier 0x98e04e99.

Command (m for help): p

Disk /dev/nvme1n1: 483.2 GB, 483183820800 bytes, 943718400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x98e04e99

        Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-943718399, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-943718399, default 943718399):
Using default value 943718399
Partition 1 of type Linux and of size 450 GiB is set

Command (m for help): p

Disk /dev/nvme1n1: 483.2 GB, 483183820800 bytes, 943718400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x98e04e99

        Device Boot      Start         End      Blocks   Id  System
/dev/nvme1n1p1            2048   943718399   471858176   83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/nvme1n1: 483.2 GB, 483183820800 bytes, 943718400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x98e04e99

        Device Boot      Start         End      Blocks   Id  System
/dev/nvme1n1p1            2048   943718399   471858176   8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

重新读取分区

partprobe

创建PV

[root@hongsinvm ~]# pvcreate /dev/nvme1n1p1
  Physical volume "/dev/nvme1n1p1" successfully created.

创建VG

[root@hongsinvm ~]# vgcreate datavg /dev/nvme1n1p1
  Volume group "datavg" successfully created

创建LV

[root@hongsinvm ~]# lvcreate -l 100%free -n datalv datavg
  Logical volume "datalv" created.

格式化LV

[root@hongsinvm ~]# mkfs.ext4 /dev/datavg/datalv
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
29491200 inodes, 117963776 blocks
5898188 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2267021312
3600 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

创建分区并挂载

[root@hongsinvm ~]# mkdir /data
[root@hongsinvm ~]# mount /dev/datavg/datalv /data/
[root@hongsinvm ~]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
devtmpfs                    16G     0   16G   0% /dev
tmpfs                       16G     0   16G   0% /dev/shm
tmpfs                       16G   17M   16G   1% /run
  pfs                       16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/centos-root     17G  1.9G   16G  12% /
/dev/nvme0n1p1            1014M  265M  750M  27% /boot
tmpfs                      3.1G     0  3.1G   0% /run/user/0
/dev/mapper/datavg-datalv  443G   73M  421G   1% /data

加入开机启动

[root@hongsinvm ~]# blkid
/dev/mapper/centos-root: UUID="2489f74a-946e-452a-bf62-1a1890668844" TYPE="xfs"
/dev/nvme0n1p2: UUID="c6AGGx-gtd0-N6XE-5qP2-phqY-V4Hr-BurxpM" TYPE="LVM2_member"
/dev/nvme0n1p1: UUID="75eb43ef-927b-4b24-af8e-bfc46bd0c2c2" TYPE="xfs"
/dev/mapper/centos-swap: UUID="9424b55f-2eb2-4156-b6ea-8d4bacf27d02" TYPE="swap"
/dev/nvme1n1p1: UUID="D0fh8n-ezI3-2Ork-bdAY-d0mE-R8eC-DrtDSy" TYPE="LVM2_member"
/dev/mapper/datavg-datalv: UUID="35c5eb3d-a7a0-4365-9ab9-91e1069c1d65" TYPE="ext4"
/dev/nvme1n1: PTTYPE="dos"
/dev/nvme0n1: PTTYPE="dos"
[root@hongsinvm ~]# vim /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Aug 13 06:35:13 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /       xfs     defaults        0 0
UUID=75eb43ef-927b-4b24-af8e-bfc46bd0c2c2       /boot   xfs     defaults        0 0
UUID=35c5eb3d-a7a0-4365-9ab9-91e1069c1d65       /data   ext4    defaults        0 0
/dev/mapper/centos-swap swap    swap    defaults        0 0

"/etc/fstab" 12L, 458C written
[root@hongsinvm ~]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
devtmpfs                    16G     0   16G   0% /dev
tmpfs                       16G     0   16G   0% /dev/shm
tmpfs                       16G   17M   16G   1% /run
tmpfs                       16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/centos-root     17G  1.9G   16G  12% /
/dev/nvme0n1p1            1014M  265M  750M  27% /boot
tmpfs                      3.1G     0  3.1G   0% /run/user/0
/dev/mapper/datavg-datalv  443G   73M  421G   1% /data

firewall防火墙规则设置整理

在 CentOS 7 中,引入了一个新的服务,Firewalld,一个信任级别的概念来管理与之相关联的连接与接口,支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
shutterstock_639963214-firewall-59c5498b0d327a0011ecae0d.png
安装firewalld:

yum install firewalld

如果需要图形界面的话,则再安装

yum install firewall-config

firewall的配置文件:/etc/lib/firewalld/和/etc/firewalld/下的XML文件。配置firewall可以直接编辑配置文件,也可以使用firewall-cmd命令行工具。
一、常见命令:
启动, 停止, 重启firewalld

1、停止
systemctl stop firewalld.service 

2、启动
systemctl start firewalld.service 

3、重启
systemctl restart firewalld.service

4、查看状态: 
systemctl status firewalld 

5、禁止firewall开机启动
systemctl disable firewalld

6、设置开机启用防火墙:
systemctl enable firewalld.service

7、查看服务是否开机启动:
systemctl is-enabled firewalld.service

8、查看已启动的服务列表:
systemctl list-unit-files|grep enabled

9、查看启动失败的服务列表:
systemctl --failed

二、查看firewall规则与状态

1. 查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state              

2. 查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略)
firewall-cmd --list-all           

3. 查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)
firewall-cmd --list-all-zones     

4. 重新加载配置文件
firewall-cmd --reload

三、配置firewalld-cmd

查看版本: firewall-cmd --version

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

查看所有打开的端口: firewall-cmd --zone=public --list-ports

更新防火墙规则: firewall-cmd --reload

查看区域信息:  firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

四、设置firewall规则
1、对外暴露8000端口

firewall-cmd --permanent --add-port=8000/tcp

2、mysql服务的3306端口只允许192.168.1.1/24网段的服务器能访问

#添加规则
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.1/24" port protocol="tcp" port="3306" accept"

#reload使生效
firewall-cmd --reload

3、端口转发,将到本机的3306端口的访问转发到192.168.1.1服务器的3306端口

# 开启伪装IP
firewall-cmd --permanent --add-masquerade
# 配置端口转发
firewall-cmd --permanent --add-forward-port=port=3306:proto=tcp:toaddr=192.168.1.2:toport=13306
因为在/usr/lib/firewalld/services/中事先定义了ssh.xml的相应的规则
注意:如果不开启伪装IP,端口转发会失败;其次,要确保源服务器上的端口(3306)和目标服务器上的端口(13306)是开启的。
4、添加(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
5、重新载入(修改规则后使其生效)
firewall-cmd --reload
6、查看
firewall-cmd --zone= public --query-port=80/tcp
7、删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

Oracle11g服务器ip地址变更后监听修改

Oracle服务器IP地址发生变更后需要修改下监听,要么就会连不上数据库,操作方法如下:
1、修改Oracle监听 listener.ora

su - oracle
cd $ORACLE_HOME/network/admin/
[oracle@hd_nc_db admin]$ pwd
/data/app/oracle/product/11.2.0/db_1/network/admin
[oracle@hd_nc_db admin]$ cat listener.ora
# listener.ora Network Configuration File: /data/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hd_nc_db)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /data/app/oracle

此处使用的是主机名hd_nc_db,直接修改/etc/hosts,将主机名对应的IP修改为服务器新IP保存即可,如果是IP地址直接修改为新IP地址保存;
2、重启服务器的listener

lsnrctl stop
lsnrctl start

3、修改客户端的tnsnames.ora(打开PL/SQL,工具栏找到 帮助->支持即可定位到tnsnames.ora文件位置),服务器如果配置了RAC,要更改参数文件中的节点地址、心跳地址等;

使用SQL查看SQLServer数据库还原进度

在做数据库备份还原的时候,忘记添加stats关键字了,Messages窗口什么也没有提示。这种情况下,该如何去监控我的备份或者还原数据库进度呢? 其实,这种情况也无需紧张,我们同样有办法来监控数据库备份还原的进度,方法是使用动态管理视图sys.dm_exec_requests配合一些关键信息字段来监控进度。方法如下:

USE master
GO

SELECT 
    req.session_id, 
    database_name = db_name(req.database_id),
    req.status,
    req.blocking_session_id, 
    req.command,
    [sql_text] = Substring(txt.TEXT, (req.statement_start_offset / 2) + 1, (
                (
                    CASE req.statement_end_offset
                        WHEN - 1 THEN Datalength(txt.TEXT)
                        ELSE req.statement_end_offset
                    END - req.statement_start_offset
                    ) / 2
                ) + 1),
    req.percent_complete,
    req.start_time,
    cpu_time_sec = req.cpu_time / 1000,
    granted_query_memory_mb = CONVERT(NUMERIC(8, 2), req.granted_query_memory / 128.),
    req.reads,
    req.logical_reads,
    req.writes,
    eta_completion_time = DATEADD(ms, req.[estimated_completion_time], GETDATE()),
    elapsed_min = CONVERT(NUMERIC(6, 2), req.[total_elapsed_time] / 1000.0 / 60.0),
    remaning_eta_min = CONVERT(NUMERIC(6, 2), req.[estimated_completion_time] / 1000.0 / 60.0),
    eta_hours = CONVERT(NUMERIC(6, 2), req.[estimated_completion_time] / 1000.0 / 60.0/ 60.0),
    wait_type,
    wait_time_sec = wait_time/1000, 
    wait_resource
FROM sys.dm_exec_requests as req WITH(NOLOCK)
    CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as txt 
WHERE req.session_id>50
    AND command IN ('BACKUP DATABASE', 'BACKUP LOG', 'RESTORE DATABASE', 'RESTORE LOG')

执行以后会显示备份还原进度,
a26dd79b1a9e1b048a8d4e492e31ba36.png
结果中有非常多重要的字段信息,比如:


Command: 表示命令种类,此处表示备份数据库命令

sql_text: 语句详细信息,此处展示了完整的T-SQL语句

percent_complete: 进度完成百分比,此处已经完成了59.67%

start_time:进程开始执行时间

eta_completion_time:进程预计结束时间

等等。这种方法除了可以监控数据库备份还原进度外,还可以获取更多的进程信息,是比较推荐的方法。

提示: 这种方法不仅仅是可以用来监控你的备份还原进程,任何其他的用户进程都可以使用类似的方法来监控,你只需要把WHERE语句稍作修改即可。比如:想要监控某一个进程的进度情况,你只需要把WHERE语句修改为WHERE req.session_id=xxx即可。
VIA:http://mysql.taobao.org/monthly/2018/04/06/

SQL Server 2008R2 占用80端口问题解决

SQL Server 2008R2安装完以后默认会启用ReportServer服务,服务默认启用的时候会占用80端口,解决方法如下:
打开:控制面板系统和安全管理工具服务,将SQL Server Reporting Services服务停止掉,80端口即可释放,如下图:
report.png

然后启用WEB服务(Nginx或Apache),启动成功后,再启用SQL Server Reporting Services服务,即可,SQLServer会重新分配端口。

ftp命令参数说明

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层,即应用层,使用TCP传输而不是UDP,客户在和服务器建立连接前要经过一个“三次握手”的过程,保证客户与服务器之间的连接是可靠的, 而且是面向连接为数据传输提供可靠保证。

FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话,会被防火墙断开;传输会产生一些错误。
ftp.jpeg

CentOS下安装:

yum install ftp -y

FileZilla客户端下载地址:https://filezilla-project.org/download.php?type=client

常见参数如下:

1. 连接ftp服务器

格式:ftp [hostname| ip-address]

a)在linux命令行下输入:

ftp 192.168.1.1
b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。

2.列出文件列表以及切换目录
这部分其实和linux并无区别,分别是ls,和cd

列出目录列表  ls
切换当前目录  cd dir

3. 下载文件

下载文件通常用get和mget这两条命令。

a) get
格式:get [remote-file] [local-file]

将文件从远端主机中传送至本地主机中。

如要获取远程服务器上/usr/your/1.htm,则

ftp> get /usr/your/1.htm 1.htm

b) mget
格式:mget [remote-files]

从远端主机接收一批文件至本地主机。

如要获取服务器上/usr/your/下的所有文件,则

ftp> cd /usr/your/
ftp> mget *.*
此时每下载一个文件,都会有提示。如果要除掉提示,则在mget *.* 命令前先执行:prompt off

注意:文件都下载到了linux主机的当前目录下。比如,在 /usr/my下运行的ftp命令,则文件都下载到了/usr/my下。

c) 显示下载进度
默认情况下,下载是没有进度的,也就是说,只能瞎等着,啥也看不见。

ftp> hash

再进行传输,就能够显示下载进度了,以#号显示

4.上传文件
a) put

格式:put local-file [remote-file]

将本地一个文件传送至远端主机中。

如要把本地的1.htm传送到远端主机/usr/your,并改名为2.htm

ftp> put 1.htm /usr/your/2.htm
b) mput

格式:mput local-files

将本地主机中一批文件传送至远端主机。

如要把本地当前目录下所有html文件上传到服务器/usr/your/ 下

ftp> cd /usr/your
ftp> mput *.htm
注意:上传文件都来自于主机的当前目录下。比如,在 /usr/my下运行的ftp命令,则只有在/usr/my下的文件linux才会上传到服务器/usr/your 下。

5. 断开连接
bye:中断与服务器的连接。

ftp> bye

6.改变传输模式
ftp的传输模式有ascii模式和二进制模式
直接输入ascii则设置传输模式为ascii模式
ftp> ascii
直接输入binary则设置传输模式为binary模式
ftp> binary

该命令的语法格式如下所示:

ftp [-v] [-d] [–i] [-n] [-g] [-k realm] [-x] [-u] [host]

ftp命令主要选项说明

 选项     说明
 -d     启动调试模式
 -u     关闭自动认证
 -e     不记录历史指令
 -i     关闭交互模式
 -x     在成功认证之后,协商密钥
 -n     关闭自动登录功能
 -p     传输文件模式为被动模式
 -v     程序运行时,显示详细的处理信息
 -k realm     使用Kerberos v4认证时,从realm中得到信息
 host     FTP服务器的主机名/IP地址

在客户端访问FTP时,如果没有在命令行给出服务器的主机名或IP,则客户端将出现“ftp>”提示符,等待用户输入ftp内部命令
常见ftp内部命令及其说明

内部命令     说明
 ls     显示服务器上的目录
 get     从服务器下载指定文件到客户端
 put     从客户端传送指定文件到服务器
 open     连接ftp服务器
 quit     断开连接并退出ftp服务器
 cd directory     改变服务器的当前目录为directory
 lcd directory     改变本地的当前目录为directory
 bye     退出ftp命令状态
 ascii     设置文件传输方式为ASCII模式
 binary     设置文件传输方式为二进制模式
 !     执行本地主机命令
 cd     切换远端ftp服务器上的目录
 cdup     上一层目录
 close     在不结束ftp进程的情况下,关闭与ftp服务器的连接
 delete     删除远端ftp服务器上的文件
 get     下载
 hash     显示#表示下载进度
 mdelete     删除文件,模糊匹配
 mget     下载文件,模糊匹配
 mput     上传文件,模糊匹配
 mkdir     在远端ftp服务器上,建立文件夹
 newer     下载时,检测是不是新文件
 prompt     关闭交互模式
 put     上传
 pwd     显示当前目录
FTP的命令行格式为:ftp -v -d -i -n -g [主机名],其中
 

-v显示远程服务器的所有响应信息;

-n限制ftp的自动登录,即不使用;

.n etrc文件;

-d使用调试方式;

-g取消全局文件名。

ftp使用的内部命令如下(中括号表示可选项):

1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip.

2.$ macro-ame[args]:执行宏定义macro-name.

3.account[password]:提供登录远程系统成功后访问系统资源所需的补充口令。

4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。

5.ascii:使用ascii类型传输方式。

6.bell:每个命令执行完毕后计算机响铃一次。

7.bin:使用二进制文件传输方式。

8.bye:退出ftp会话过程。

9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。

10.cd remote-dir:进入远程主机目录。

11.cdup:进入远程主机目录的父目录。

12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。

13.close:中断与远程服务器的ftp会话(与open对应)。

14.cr:使用asscii方式传输文件时,将回车换行转换为回行。

15.delete remote-file:删除远程主机文件。

16.debug[debug-value]:设置调试方式,显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。

17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件local-file。

18.disconnection:同close。

19.form format:将文件传输方式设置为format,缺省为file方式。

20.get remote-file[local-file]:将远程主机的文件remote-file传至本地硬盘的local-file。

21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。

22.hash:每传输1024字节,显示一个hash符号(#)。

23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。

24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。

25.image:设置二进制传输方式(同binary)。

26.lcd[dir]:将本地工作目录切换至dir。

27.ls[remote-dir][local-file]:显示远程目录remote-dir,并存入本地文件local-file。

28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。

29.mdelete[remote-file]:删除远程主机文件。

30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如:mdir *.o.*.zipoutfile

31.mget remote-files:传输多个远程文件。

32.mkdir dir-name:在远程主机中建一目录。

33.mls remote-file local-file:同nlist,但可指定多个文件名。

34.mode[modename]:将文件传输方式设置为modename,缺省为stream方式。

35.modtime file-name:显示远程主机文件的最后修改时间。

36.mput local-file:将多个文件传输至远程主机。

37.newer file-name:如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。

38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。

39.nmap[inpattern outpattern]:设置文件名映射机制,使得文件传输时,文件中的某些字符相互转换,如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX机的情况。

40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans 1R,则文件名LLL将变为RRR。

41.open host[port]:建立指定ftp服务器连接,可指定连接端口。

42.passive:进入被动传输方式。

43.prompt:设置多个文件传输时的交互提示。

44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令,该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。

45.put local-file[remote-file]:将本地文件local-file传送至远程主机。

46.pwd:显示远程主机的当前工作目录。

47.quit:同bye,退出ftp会话。

48.quote arg1,arg2…:将参数逐字发至远程ftp服务器,如:quote syst.

49.recv remote-file[local-file]:同get。

50.reget remote-file[local-file]:类似于get,但若local-file存在,则从上次传输中断处续传。

51.rhelp[cmd-name]:请求获得远程主机的帮助。

52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态,否则显示文件状态。

53.rename[from][to]:更改远程主机文件名。

54.reset:清除回答队列。

55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。

56.rmdir dir-name:删除远程主机目录。

57.runique:设置文件名唯一性存储,若文件存在,则在原文件后加后缀..1,.2等。

58.send local-file[remote-file]:同put。

59.sendport:设置PORT命令的使用。

60.site arg1,arg2…:将参数作为SITE命令逐字发送至远程ftp主机。

61.size file-name:显示远程主机文件大小,如:site idle 7200。

62.status:显示当前ftp状态。

63.struct[struct-name]:将文件传输结构设置为struct-name,缺省时使用stream结构。

64.sunique:将远程主机文件名存储设置为唯一(与runique对应)。

65.system:显示远程主机的操作系统类型。

66.tenex:将文件传输类型设置为TENEX机的所需的类型。

67.tick:设置传输时的字节计数器。

68.trace:设置包跟踪。

69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。

70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3。

71.user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email。

72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有响应都将显示给用户,缺省为on.

73.?[cmd]:同help。

SecureCRT设置超时不自动断开

SecureCRT连接时经常会遇到因长时间没有与服务器交互而连接断开的问题,调整下Session Options中的配置即可不会断开:
设置步骤如下: Options->Session Options->Terminal->Anti-idle->勾选Send protocol NO-OP :
Send string: n every 300 seconds

在选项后面有个时间的配置,默认是60秒,可改为其他合适时间,只要小于自动断开连接的时限就可以了。
seesion.png

GreenPlum集群安装时ntpd not detected on machine问题解决

安装GreenPlum的时候需要注意时间服务器保持一致,在gpcheck时会提示:

ntpd not detected on machine

解决方法:
安装ntpd服务:各节点都需安装

yum install ntp -y

假设以某个服务器上的时间为基准时间,该服务器的IP为x.x.x.x。
编辑文件vi /etc/ntp.conf,在末尾追加信息(三种节点添加的东西不一样):

# Master 节点
server x.x.x.x

# Master Standby 节点
server mdw perfer
server x.x.x.x

# Segment 节点
server mdw perfer
server mdw1 perfer

# mdw为Master,mdw1为Master Standby

设置ntpd服务开机启动,在/etc/rc.local中添加如下信息:

/etc/init.d/ntpd start

如果只是简单的试验环境,并没有时间服务器,则只需要从Master上同步时间即可;

pkill按终端号踢出用户

当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程,该命令的基本格式如下:
[root@localhost ~]# pkill [信号] 进程名
表 1 pkill 命令常用信号及其含义
信号编号 信号名 含义
0 EXIT 程序退出时收到该信息。
1 HUP 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2 INT 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3 QUIT 退出。
9 KILL 杀死进程,即强制结束进程。
11 SEGV 段错误。
15 TERM 正常结束进程,是 kill 命令的默认信号。
pkill命令踢出登陆用户

pkill [-t 终端号] 进程名
pkill -kill -t tty
或者pkill -9 -t tty

可以先用w命令查看当前在线用户,然后强制下线;

Grafana参数配置文件详解

grafana_screenshot1.png
grafana安装后目录的说明:

#主配置文件
/etc/grafana/grafana.ini
#数据文件
/var/lib/grafana
#home目录
/usr/share/grafana
#日志目录
/var/log/grafana
#插件目录
/var/lib/grafana/plugins
#自定义一些精细化配置的文件夹
/etc/grafana/provisioning

grafana的默认配置文件在/etc/grafana,目录下文件结构如下:

├── config.monitoring
├── grafana.ini
├── ldap.toml
└── provisioning
    ├── dashboards
    │   ├── Ceph\ -\ Cluster-1544005047598.json
    │   ├── dashboard.yml
    │   └── Node\ Exporter\ Full-1544005083113.json
    └── datasources
        └── datasource.yml

grafana.ini配置文件说明:

app_mode:应用名称,默认是production

[path]
data:一个grafana用来存储sqlite3、临时文件、回话的地址路径
logs:grafana存储logs的路径

[server]
http_addr:监听的ip地址,,默认是0.0.0.0
http_port:监听的端口,默认是3000
protocol:http或者https,,默认是http
domain:这个设置是root_url的一部分,当你通过浏览器访问grafana时的公开的domian名称,默认是localhost
enforce_domain:如果主机的header不匹配domian,则跳转到一个正确的domain上,默认是false
root_url:这是一个web上访问grafana的全路径url,默认是%(protocol)s://%(domain)s:%(http_port)s/
router_logging:是否记录web请求日志,默认是false
cert_file:如果使用https则需要设置
cert_key:如果使用https则需要设置

[database]
grafana默认需要使用数据库存储用户和dashboard信息,默认使用sqlite3来存储,你也可以换成其他数据库
type:可以是mysql、postgres、sqlite3,默认是sqlite3
path:只是sqlite3需要,定义sqlite3的存储路径
host:只是mysql、postgres需要,默认是127.0.0.1:3306
name:grafana的数据库名称,默认是grafana
user:连接数据库的用户
password:数据库用户的密码
ssl_mode:只是postgres使用


[security]
admin_user:grafana默认的admin用户,默认是admin
admin_password:grafana admin的默认密码,默认是admin
login_remember_days:多少天内保持登录状态
secret_key:保持登录状态的签名
disable_gravatar:


[users]
allow_sign_up:是否允许普通用户登录,如果设置为false,则禁止用户登录,默认是true,则admin可以创建用户,并登录grafana
allow_org_create:如果设置为false,则禁止用户创建新组织,默认是true
auto_assign_org:当设置为true的时候,会自动的把新增用户增加到id为1的组织中,当设置为false的时候,新建用户的时候会新增一个组织
auto_assign_org_role:新建用户附加的规则,默认是Viewer,还可以是Admin、Editor


[auth.anonymous]
enabled:设置为true,则开启允许匿名访问,默认是false
org_name:为匿名用户设置组织名称
org_role:为匿名用户设置的访问规则,默认是Viewer


[auth.github]
针对github项目的,很明显
enabled = false
allow_sign_up = false
client_id = some_id
client_secret = some_secret
scopes = user:email
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
team_ids =
allowed_domains =
allowed_organizations =


[auth.google]
针对google app的
enabled = false
allow_sign_up = false
client_id = some_client_id
client_secret = some_client_secret
scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
auth_url = https://accounts.google.com/o/oauth2/auth
token_url = https://accounts.google.com/o/oauth2/token
api_url = https://www.googleapis.com/oauth2/v1/userinfo
allowed_domains =


[auth.basic]
enabled:当设置为true,则http api开启基本认证


[auth.ldap]
enabled:设置为true则开启LDAP认证,默认是false
config_file:如果开启LDAP,指定LDAP的配置文件/etc/grafana/ldap.toml


[auth.proxy]
允许你在一个HTTP反向代理上进行认证设置
enabled:默认是false
header_name:默认是X-WEBAUTH-USER
header_property:默认是个名称username
auto_sign_up:默认是true。开启自动注册,如果用户在grafana DB中不存在

[analytics]
reporting_enabled:如果设置为true,则会发送匿名使用分析到stats.grafana.org,主要用于跟踪允许实例、版本、dashboard、错误统计。默认是true
google_analytics_ua_id:使用GA进行分析,填写你的GA ID即可


[dashboards.json]
如果你有一个系统自动产生json格式的dashboard,则可以开启这个特性试试
enabled:默认是false
path:一个全路径用来包含你的json dashboard,默认是/var/lib/grafana/dashboards


[session]
provider:默认是file,值还可以是memory、mysql、postgres
provider_config:这个值的配置由provider的设置来确定,如果provider是file,则是data/xxxx路径类型,如果provider是mysql,则是user:password@tcp(127.0.0.1:3306)/database_name,如果provider是postgres,则是user=a password=b host=localhost port=5432 dbname=c sslmode=disable
cookie_name:grafana的cookie名称
cookie_secure:如果设置为true,则grafana依赖https,默认是false
session_life_time:session过期时间,默认是86400秒,24小时


以下是官方文档没有,配置文件中有的
[smtp]
enabled = false
host = localhost:25
user =
password =
cert_file =
key_file =
skip_verify = false
from_address = admin@grafana.localhost

[emails]
welcome_email_on_sign_up = false
templates_pattern = emails/*.html


[log]
mode:可以是console、file,默认是console、file,也可以设置多个,用逗号隔开
buffer_len:channel的buffer长度,默认是10000
level:可以是"Trace", "Debug", "Info", "Warn", "Error", "Critical",默认是info

[log.console]
level:设置级别

[log.file]
level:设置级别
log_rotate:是否开启自动轮转
max_lines:单个日志文件的最大行数,默认是1000000
max_lines_shift:单个日志文件的最大大小,默认是28,表示256MB
daily_rotate:每天是否进行日志轮转,默认是true
max_days:日志过期时间,默认是7,7天后删除

via:https://www.li-rui.top/2018/12/12/monitor/grafana%E4%BD%BF%E7%94%A8/
http://www.51niux.com/?id=237

[warn] 1539#0: 65535 worker_connections exceed open file resource limit: 1024报错解决

Cenos7.x系统中已经设置了ulimit最大值为65535,reload nginx的时候发现error.log里面有一行报错:

2019/10/28 16:09:27 [notice] 32473#0: signal process started
2019/10/28 16:09:27 [notice] 1539#0: using the "epoll" event method
2019/10/28 16:09:27 [warn] 1539#0: 65535 worker_connections exceed open file resource limit: 1024
2019/10/28 16:09:27 [notice] 1539#0: start worker processes
2019/10/28 16:09:27 [notice] 1539#0: start worker process 32474
2019/10/28 16:09:27 [notice] 1539#0: start worker process 32475

解决方法如下:
在nginx.conf中增加:

worker_rlimit_nofile 65535; 

nginx-ulimit.png
worker_rlimit_nofile参数说明:

worker_rlimit_nofile 一个nginx进程打开的最多文件描述符数目  
理论值应该是系统最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。

最后reload nginx,报错消失问题解决;

Zabbix Web场景监控小记

页面或接口直接请问失败或打不开监控项表达式:主机端口宕掉时会会触发·

{sso-git-zull-c:web.test.fail[Zuul网关接口_134].last()}<>0   #对应Failed step of scenario "Zuul网关接口_134"

页面或接口请求状态非200表达式:

{sso-git-zull-c:web.test.rspcode[Zuul网关接口_134,zuul网关_134].last()}<>200  #对应Response code for step "zuul网关_134" of scenario "Zuul网关接口_134"

页面或接口请求缓慢表达式:

{sso-git-zull-c:web.test.time[Zuul网关接口_134,zuul网关_134,resp].last()}>10 #对应Response time for step "zuul网关_134" of scenario "Zuul网关接口_134".

/var/log/message大量systemd: Started Session 1120 of user root日志解决

rsyslog.png
查看/var/log/message日志发现大量systemd: Started Session 4850 of user root.
log如下:

Oct 17 13:40:01 monitor-test systemd: Started Session 4850 of user root.
Oct 17 13:50:01 monitor-test systemd: Started Session 4851 of user root.
Oct 17 14:00:01 monitor-test systemd: Started Session 4852 of user root.
Oct 17 14:00:01 monitor-test systemd: Started Session 4853 of user root.
Oct 17 14:01:01 monitor-test systemd: Started Session 4854 of user root.
Oct 17 14:10:01 monitor-test systemd: Started Session 4855 of user root.
Oct 17 14:20:01 monitor-test systemd: Started Session 4856 of user root.
Oct 17 14:30:01 monitor-test systemd: Started Session 4857 of user root.
Oct 17 14:30:01 monitor-test systemd: Started Session 4858 of user root.
Oct 17 14:40:01 monitor-test systemd: Started Session 4859 of user root.
Oct 17 14:50:01 monitor-test systemd: Started Session 4860 of user root.
Oct 17 15:00:01 monitor-test systemd: Started Session 4861 of user root.
Oct 17 15:00:01 monitor-test systemd: Started Session 4862 of user root.
Oct 17 15:01:01 monitor-test systemd: Started Session 4863 of user root.
Oct 17 15:10:01 monitor-test systemd: Started Session 4864 of user root.
Oct 17 15:20:01 monitor-test systemd: Started Session 4865 of user root.
Oct 17 15:30:01 monitor-test systemd: Started Session 4866 of user root.
Oct 17 15:30:01 monitor-test systemd: Started Session 4867 of user root.
Oct 17 15:40:01 monitor-test systemd: Started Session 4868 of user root.
Oct 17 15:50:01 monitor-test systemd: Started Session 4869 of user root.
Oct 17 16:00:01 monitor-test systemd: Started Session 4870 of user root.
Oct 17 16:00:01 monitor-test systemd: Started Session 4871 of user root.
Oct 17 16:01:01 monitor-test systemd: Started Session 4872 of user root.
Oct 17 16:10:01 monitor-test systemd: Started Session 4873 of user root.
Oct 17 16:20:01 monitor-test systemd: Started Session 4874 of user root.
Oct 17 16:30:01 monitor-test systemd: Started Session 4876 of user root.
Oct 17 16:30:01 monitor-test systemd: Started Session 4875 of user root.
Oct 17 16:40:01 monitor-test systemd: Started Session 4877 of user root.

redhat官方回复这是正常的,每个用户登录后都能看到,如果要过滤并禁止掉该消息,用如下方法:

echo 'if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting user-" or $msg contains "Starting User Slice of" or $msg contains "Removed session" or $msg contains "Removed slice User Slice of" or $msg contains "Stopping User Slice of") then stop' >/etc/rsyslog.d/ignore-systemd-session-slice.conf

最后重启rsyslog服务即可:

systemctl restart rsyslog

redhat官方说明:https://access.redhat.com/solutions/1564823

ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE ... SELECT.问题解决

ogp-mysql57-gtid-replication-b.png
MySQL使用Create table select的时候报错如下:

root@monitor-db 19:35:25 [test]>create table a3 select * from a2 ;
ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE ... SELECT.

问题分析:
MySQL开启gtid以后就不能使用了,MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行,像create table … select 和 create temporarytable语句,以及同时更新事务表和非事务表的SQL语句或事务都不允许执行

root@monitor-db 19:35:12 [test]>show global variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode     | ON    |
+---------------+-------+
1 row in set (0.00 sec)

如业务需要,可以在线关闭掉gtid,执行如下SQL关闭gtid:

set global gtid_mode='ON_PERMISSIVE';

set global gtid_mode='OFF_PERMISSIVE';

SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = OFF;

set global gtid_mode='OFF';

show global variables like '%gtid_mode%';

查询执行结果:

root@monitor-db 19:21:31 [test]>show global variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode     | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

再次创建:

root@monitor-db 19:32:46 [test]>desc a2;
+-----------------+------------------+------+-----+---------+-------+
| Field           | Type             | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+-------+
| id              | int(10) unsigned | NO   |     | 0       |       |
| title           | varchar(100)     | NO   |     | NULL    |       |
| author          | varchar(40)      | NO   |     | NULL    |       |
| submission_date | date             | YES  |     | NULL    |       |
+-----------------+------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

root@monitor-db 19:32:51 [test]>create table a3 select * from a2 ;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

root@monitor-db 19:32:57 [test]>desc a3;
+-----------------+------------------+------+-----+---------+-------+
| Field           | Type             | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+-------+
| id              | int(10) unsigned | NO   |     | 0       |       |
| title           | varchar(100)     | NO   |     | NULL    |       |
| author          | varchar(40)      | NO   |     | NULL    |       |
| submission_date | date             | YES  |     | NULL    |       |
+-----------------+------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

已经OK;
在线打开GTID:

root@monitor-db 19:41:31 [test]>set global gtid_mode='OFF_PERMISSIVE';
Query OK, 0 rows affected (0.00 sec)

root@monitor-db 19:44:14 [test]>
root@monitor-db 19:44:14 [test]>set global gtid_mode='ON_PERMISSIVE';
Query OK, 0 rows affected (0.00 sec)

root@monitor-db 19:44:14 [test]>
root@monitor-db 19:44:14 [test]>SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
Query OK, 0 rows affected (0.00 sec)

root@monitor-db 19:44:14 [test]>
root@monitor-db 19:44:14 [test]>set global gtid_mode='ON';
Query OK, 0 rows affected (0.01 sec)

root@monitor-db 19:44:14 [test]>
root@monitor-db 19:44:14 [test]>show global variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode     | ON    |
+---------------+-------+
1 row in set (0.00 sec)

打开ok,MySQL5.7开启/关闭GTID,不用重启服务很方便;

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进程重新执行即可;

Dynatrace PerformGo上海峰会掠影

Dynatrace Perform 是IT领域监控行业的领军公司,当然商业授权价格也不菲,三个人监控全球几十家份公司的所有机器,这个还是有比较牛叉;

现在很多公司都爱炒AI,风口上嘛...

以下是抓拍

IMG_20190919_081342.jpg

IMG_20190919_081346.jpg

IMG_20190919_081352.jpg

IMG_20190919_082255.jpg

IMG_20190919_085925.jpg

IMG_20190919_091713.jpg

IMG_20190919_091844.jpg

IMG_20190919_092113.jpg

IMG_20190919_093430.jpg

IMG_20190919_093536.jpg

IMG_20190919_093747.jpg

IMG_20190919_093924.jpg

IMG_20190919_094020.jpg

IMG_20190919_094201.jpg

IMG_20190919_094426.jpg

IMG_20190919_100500.jpg

IMG_20190919_100456.jpg

IMG_20190919_100431.jpg

IMG_20190919_100331.jpg

IMG_20190919_095106.jpg

IMG_20190919_094957.jpg

IMG_20190919_094911.jpg

IMG_20190919_094734.jpg

IMG_20190919_094613.jpg

IMG_20190919_102317.jpg

IMG_20190919_102131.jpg

IMG_20190919_101901.jpg

IMG_20190919_101643.jpg

IMG_20190919_101453.jpg

IMG_20190919_101234.jpg

IMG_20190919_101144.jpg

IMG_20190919_100942.jpg

IMG_20190919_100859.jpg

IMG_20190919_123349.jpg

IMG_20190919_120526.jpg

IMG_20190919_120523.jpg

IMG_20190919_120253.jpg

IMG_20190919_120145.jpg

IMG_20190919_120145.jpg

IMG_20190919_120027.jpg

IMG_20190919_112400.jpg

IMG_20190919_111104.gif

IMG_20190919_111001.gif

IMG_20190919_110726.jpg

IMG_20190919_110207.jpg

IMG_20190919_103200.jpg

IMG_20190919_102416.jpg

IMG_20190919_145718.jpg
最后来一张红帽的小礼物

蓝天

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

IMG_20190916_082932.jpg

最新

分类

归档

评论

其它