分类目录归档:工具

Linux系统配置lrzsz,配合XShell提升使用体验

在传统的Linux文件上传下载,一般是需要用到SFTP或者Rsync、FTP等协议,然而有一个更快捷更方便的方法,可以让你在上传下载时效率提升N倍

这里用CentOS7作为示例,首先安装相关的软件包:

yum -y install lrzsz

然后,在windows打开xshell,登陆目标服务器的SSH控制台,你可以尝试拖拽一个文件到控制台下,如图:

是不是很方便,它传送的目标地址就是你当前控制台的位置

那么怎么传送当前控制台下的某个文件呢?很简单,输入 sz ${YOUR_TARGET_FILE}即可:

sz mytarget.tar

选择好目标即可进行传送

这个方法真的非常提升效率,减少了误操作,强烈推荐


Nginx常规操作:压缩配置、反向代理、http转向等

概述

nginx真的很好用!而且配置清晰,我在nginx遇到的功能特性以及特性都描述在这里,文档不定时更新

压缩配置

在Web开发中,传输资源(JS/CSS/图片)的体积非常影响使用者的体验。据说,一个页面只要超过7秒钟,浏览者就会失去等待的耐心,并关掉页面。

那么如何尽量减少体积呢?代码混淆压缩是一方面,其实我们还可以在更高角度对资源进行压缩,这个压缩,就是gzip。无论是前端还是后端,在资源体积过大的情况下,都应该使用gzip。我曾经使用gzip,成功将5M的文件压缩成700k

下面描述相关配置:

在http下,输入:

gzip  on; # 打开gzip
gzip_min_length 1k; # 低于1k的不压缩
gzip_comp_level 9; # 压缩比例,1-9,越高压缩率越大
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
gzip_disable "MSIE [1-6]\.";
gzip_vary on; 
然后调用curl,并查看返回的Content-Encoding
可以看到Content-Encoding是gzip,表明该资源是gzip压缩传送过来的

反向代理

有一些内网机器,并不想暴露在对外网络中,又或者是需要做负载均衡。那么这个情况下,就需要nginx的反向代理作为对外的入口了,我常用nginx的代理在http层的代理(貌似最新版本支持tcp代理了)

反向代理是什么?其实这个就应该和正向代理一起来讲述。正向代理,就像是一台中转路由器,它明确告诉你,它不是服务器,只是替你转发请求。而反向代理,就是伪装自己是最终端的服务器,它告诉你它就是处理服务器的终点,但实际上并不是,它还需要将请求转发给内网的其他服务器,这一个转发的过程你不知道,所以这是反向代理。

反向代理的配置如下:

proxy_pass http://127.0.0.1:55161; 
proxy_set_header 

使用Lodash编写安全、高效、优雅的JavaScript应用

在编写JS应用时,相信很多开发者会遇到“Uncaught TypeError: Cannot read property ‘prop’ of null” ,这种情况一般是没有做安全预判断。然而如果每一处都要加 obj != null && obj != undefined,不仅编写繁琐,也让代码的信噪比降低

为了让应用safety first,同时编写代码能够优雅高效,JS社区终于出现了一个瑞士军刀–Lodash。它的前身其实是underscore,这个和Lodash的概念差不多,其实API有点不一致而已,我主要介绍以下Lodash^_^

Lodash使用非常简单,你只需要记住它的变量是_就可以了(下划线)。在Lodash的编程哲学里,安全是第一的,而且融入了函数式编程。通过使用Lodash,你能感觉到它所有的API都可以大幅度减少无用的代码,让你的JS应用从1000行减到200行。我相信你会喜欢Lodash,而且在使用的过程中会逐渐理解贯彻它的编程哲学的

使用资料

Lodash官方仓库:
https://github.com/lodash/lodash

Lodash参考文档:
https://www.css88.com/doc/lodash/#_bindfunc-thisarg-partials

API简介

你在使用Lodash一段时间会发现,_.map既可以用在Object也可以用在Array,_.pickBy可以过滤Object不需要的key值,同时哪怕你传进去是null/undefined/NaN,Lodash也不会直接报错中断当前执行,而且返回一个空的结果(数字0,空数组,空对象等),可以确保你不会收到异常的情况。

在Lodash一些方法,比如_.difference,_.differenceBy, _.differenceWith,它们分别是默认处理函数,提供指定属性或者函数结果值来判断,手动编写compartor来进行判断

接下来,我介绍一些常用的API和它们的用途,其他的API如果感兴趣可以看上面的参考文档^_^

_.isNil

判断传参是不是null或者undefined,这对于常规的判断非常有用

_.get(object,path,[defaultvalue])

这是最常用的API,能够让你对一个数组或者数字,进行路径path的值访问,而且如果这个path的值是为空的,将会使用defaultvalue,举例:

// path的格式:
// 比如a.0.c对应的path路径就是 obj = {a:[{c: 

CentOS7 安装桌面环境Xfce4以及VNC-Server

因为之前一直用Ubuntu来开发,最近想尝尝鲜,用CentOS7来试试它的桌面(过几天装Oracle肯定也要GUI,我提前先试试^_^)

1,首先安装GNOME环境

yum groupremove “GNOME Desktop”

2,安装Redhat的升级包

yum install epel-release

3,安装XWindow的基本系统

yum groupinstall “X Window System”

4,安装Xfce4的group安装包

yum grouplist yum groupinstall Xfce4

5,初始化xstartup

echo ‘#!/bin/sh’ > ~/.vnc/xstartup

echo ‘/usr/bin/startxfce4’ >> ~/.vnc/xstartup

到这里,大致的环境已经配置好了!接下来就是安装VNC-Server,使用VNC进行登陆即可!

yum install -y tigervnc-server

echo ‘VNCSERVERS=”1:root”‘ > /etc/sysconfig/vncservers…

使用OpenSSL加密重要文件

之前需要寄一块机械硬盘给同学,为了确保数据安全,不会被别人在传输途中就轻易读取,我采用tar+openssl进行加密,具体密钥在我和同学手中,这样就可以确保万无一失了!^_^

具体实现命令如下:

加密:dd if=target.tar |openssl des3 -salt -k ${YOUR_PASSWORD} | dd of=archive

解密:dd if=archive |openssl des3 -d -k ${YOUR_PASSWORD} -out target.tar

Windows也是有dd、openssl这些命令的,不过就需要你安装git-bash。只要装好git-bash,什么vi、dd、openssl、curl,就都有了…

CentOS7 防火墙iptables的使用与管理

防火墙概述

在网络安全许多规则中,我认为有一条很重要,那就是给服务器加上防火墙。如果这台服务器是接入公网环境下(有公网IP),那就更不能忽视防火墙。如果简单的把防火墙停掉,那么所有的端口都可能被黑客进行攻击

防火墙可以只开放指定的端口以及规则,如果用好防火墙,那么所有的网络流量都将在自己的掌控之下。我总结一下这几天项目部署,防火墙的使用经验总结

防火墙安装

因为以前经常使用CentOS6、Ubuntu,接触最多最熟悉的也是iptables,所以我选择将原有的firewall替换成iptables,如果你是CentOS7,使用下面命令可以进行替换:

systemctl disable firewalld
sudo yum install -y iptables-services

防火墙启动与停止

开机自启: systemctl enable iptables 
禁止开机自启: systemctl disable iptables
配置保存: service iptables save
重启防火墙: service iptables reload

规则概述

有许多的规则类型,比如说INPUT管理入站(外部流量进来),OUTPUT出站(本机流量流出),FORWARD(处理通过系统路由的数据包)等,这些在我理解应该都是一个个CHAIN(链),然后每个链都有各自的规则,从高到低按顺序依次判断,如下图:

图上有许多Chain,各自的Chain都有规则,这些规则从上到下依次判断,满足即返回

常见的命令参数有-p 协议类型(tcp,udp),–sport(源端口),–dport(目标端口),-s(源IP),-d(目标IP),-j 处理结果(accept允许通过,drop拒绝但不回应,reject拒绝并立刻回应)

常用的命令

允许指定端口通过:
iptables -I