欢迎光临
我们一直在努力

chrome自带的长截屏功能

admin阅读(178)

在 Google Chrome 里面,打开开发人员工具(网站上任意空白处右键 – 选择 “检查” 或者“审查元素”)。

快捷键 Ctrl+Shift+P ,会看到右边的审查元素出现了一个输入框

输入 screenshot 然后回车

然后…. 一张非常清晰的全屏截图就下载到了你的电脑里面…

CentOS 7 安装Python3、pip3

admin阅读(188)

CentOS 7 默认安装了 Python 2,当需要使用 Python 3 的时候,可以手动下载 Python 源码后编译安装。

一、安装 Python 3

1.1 安装准备

 

1.3 配置

1.3.1 两个版本共存

创建 python3 的软链接:

这样就可以通过 python 命令使用 Python 2,python3 来使用 Python 3。

1.3.2 修改默认为 Python 3

将 /usr/bin 中的 python 备份

然后创建 python3 的软链接

这样默认的 Python 版本就替换为 Python 3 了。

因为 yum 使用 Python 2,因此替换为 Python 3 后可能无法正常工作,因此修改 yum 配置文件

将第一行指定的 python 版本改为 python2.7(#!/usr/bin/python 改为 #!/usr/bin/python2.7

二、安装 pip

2.1 yum 安装

通过这种方式貌似只能安装 pip2,想要安装 Python 3 的 pip,可以通过以下的源代码安装方式。

2.2 源码安装

创建链接:

2.3 升级 pip

 

字符编码简介(ASCII、Unicode、UTF-8)

admin阅读(159)

字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。

由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。

但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。

字母A用ASCII编码是十进制的65,二进制的01000001;

字符0用ASCII编码是十进制的48,二进制的00110000,注意字符’0’和整数0是不同的;

汉字中已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。

你可以猜测,如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001。

新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:

字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
x 01001110 00101101 11100100 10111000 10101101

从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:

所以你看到很多网页的源码上会有类似的信息,表示该网页正是用的UTF-8编码。

linux普通用户利用authbind绑定特权端口

admin阅读(304)

在linux上普通用户无法绑定1024以下的端口,不过总是会碰到一些特殊情况,比如遇到最多的就是普通用户程序要监听80端口,有很多方法可以实现,之前常用的就是使用sudo给予普通用户一定的权限,不过总感觉sudo控制起来不是很方便,最近发现ubuntu下面有一款小程序authbind可以实现该功能,且配置起来也方便。

authbind允许程序不使用root权限来绑定系统1024以下的特权端口,你必须使程序调用authbind,authbind会调用一些环境变量,来允许你的程序绑定在特权端口。

ubuntu16.04安装authbind

怎样使用authbind呢?通过配置文件区域来使用了,默认的配置文件区域在/etc/authbind目录下,里面有三个目录:byport、byaddr、byuid。

假如我们有个test账号,想运行一个程序绑定80端口

在byport目录下建立80文件:/etc/authbind/byport/80,设置test账户有80文件的使用权限,如果80文件可以被test访问,则绑定就是成功的,否则绑定就是失败的。

具体操作:

在你要启动的命令前加上authbind --deep命令即可。

我们也可以直接在地址上绑定端口,在byaddr下建立ip:port文件,测试方法如上。也可以在byuid目录下建立uid文件,只要你的test账号可以访问,否则绑定失败。

服务器设置SSH通过密钥登录

admin阅读(296)

我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。

密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。

下面来讲解如何在 Linux 服务器上制作密钥对,将公钥添加给账户,设置 SSH,最后通过客户端登录。

1. 制作密钥对

首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:

密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。

现在,在 root 用户的家目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。

2. 在服务器上安装公钥

键入以下命令,在服务器上安装公钥:

如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

3. 设置 SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,进行如下设置:

另外,请留意 root 用户能否通过 SSH 登录:

当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

最后,重启 SSH 服务:

4. 将私钥下载到客户端,然后转换为 PuTTY 能使用的格式

使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上。然后打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你刚才设置了密钥锁码,这时则需要输入。

载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。

今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。

Linux设置环境变量的方法和区别

admin阅读(300)

设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别。

通过文件设置 Linux 环境变量

首先是设置全局环境变量,对所有用户都会生效:

  • etc/profile: 此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从 /etc/profile.d 目录的配置文件中搜集shell 的设置。一般用于设置所有用户使用的全局变量。
  • /etc/bashrc: 当 bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。

接着是与上述两个文件对应,但只对单个用户生效:

  • ~/.bash_profile 或 ~/.profile: 只对单个用户生效,当用户登录时该文件仅执行一次。用户可使用该文件添加自己使用的 shell 变量信息。另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是 ~/.bash_profile, ~/.bash_login 或 ~/.profile 其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如 Ubuntu 系统一般是 ~/.profile 文件。
  • ~/.bashrc: 只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取。

此外,修改 /etc/environment 这个文件也能实现环境变量的设置。/etc/environment 设置的也是全局变量,从文件本身的作用上来说, /etc/environment 设置的是整个系统的环境,而/etc/profile是设置所有用户的环境。有几点需注意:

  • 系统先读取 etc/profile 再读取 /etc/environment(还是反过来?)
  • /etc/environment 中不能包含命令,即直接通过 VAR=”…” 的方式设置,不使用 export 。
  • 使用 source /etc/environment 可以使变量设置在当前窗口立即生效,需注销/重启之后,才能对每个新终端窗口都生效。

修改 Linux 环境变量实例

以 Ubuntu 为例,修改 ~/.profile 文件:

如果该文件存在,则在文件的最后看到如下代码,PATH 变量的值使用冒号(:)隔开的:

在最后加上代码 PATH="$PATH:/usr/local/hadoop/bin",注意等号(=)两边不要有空格,即:

因为这个文件是在用户登陆是才读取一次的,所以需要重启才会生效(修改 /etc/profile、/etc/environment 也是如此)。但可以使用命令 source ./.profile 使其立即生效。通过 echo $PATH 可以看到修改后的变量值:

通过 Shell 命令 export 修改 Linux 环境变量

另一种修改 Linux 环境变量的方式就是通过 Shell 命令 export,注意变量名不要有美元号 $,赋值语句中才需要有:

  • export 方式只对当前终端 Shell 有效
  • 使用 export 设置的变量,只对当前终端 Shell 有效,也就是说如果新打开一个终端,那这个 export 设置的变量在新终端中使无法读取到的。适合设置一些临时变量。

根据变量所需,选择设置方式,例如 JAVA_HOME 这类变量,就适合将其设为为全局变量,可在 /etc/environment 中设置。

自动备份VPS网站数据到Dropbox

admin阅读(289)

一、登录Dropbox并创建一个APP

如果你还没有注册Dropbox,可以通过这个地址注册:https://db.tt/qN9YBSrNP6

登录之后,通过这个地址:https://www.dropbox.com/developers/apps

点击Create an app创建一个APP,填写相关信息之后,选择Full Dropbox之后点击Create创建。

二、下载Dropbox-Uploader

Dropbox Uploader是一个用bash脚本写的,可以对Dropbox进行上传、下载、删除、浏览、分享等操作。实在是VPS举家备份,同步,迁移之利器。

下载地址:https://github.com/andreafabrizi/Dropbox-Uploader

下载之后上传至VPS的root目录。

三、赋予执行权限并绑定Dropbox APP

用SSH执行,建议使用Xshell。

赋予Dropbox-Uploader.sh执行权限

chmod +x dropbox_uploader.sh

然后绑定APP

./dropbox_uploader.sh info

按提示分别输入App keyApp secret,然后输入 Y 确认;

之后会出现如下画面:

复制图中的链接在浏览器中打开(可能需要翻墙)并点击Allow绑定APP,然后回到Xshell按Enter。

之后可以执行下面的命令测试上传,提示Done就是绑定成功了。

./dropbox_uploader.sh upload /etc/passwd /backup/passwd.old

四、添加自动备份脚本

在Xshell中执行:

vi backup.sh

按 i 进入编辑模式

适当修改以下内容后,复制粘贴进去

按ESC键退出编辑模式,

输入:wq

然后按Enter保存并退出。

五、赋予脚本权限

在Xshell执行

chmod +x backup.sh

六、设置定时任务

执行

crontab -e

在最后加入

0 3 * * * /root/backup.sh

表示每天凌晨三点执行备份脚本。

如果你的VPS是nano编辑器(最上有nano字样),加入之后按Ctrl+O或F3并按Enter保存,然后按Ctrl+X或F2退出;

另一种是vi编辑器,需要先按i键进入编辑模式,在末尾输入上面的命令之后,按ESC键,输入:wq ,再按Enter保存并退出即可。

更多Crontab使用方法请看:http://www.vpser.net/manage/crontab.html

七、最后重启Crontab

service cron restart

重启之后就设置完成了……

如果你不知道服务器当前时间,可以使用下面的命令;

查看当前时间:

date -R

注意时区,大陆服务器时区为上海。

netdata一键安装脚本

admin阅读(287)

netdata介绍

netdata 是一个分布式实时性能和健康监控系统。netdata 可以实时监控的操作系统和应用程序(如 Web服务器软件 和 数据库服务器软件),并通过现代化的 Web 界面表现出来。netdata 非常的快速和高效,其可以在 物理或虚拟服务器、容器、IoT设备上持续运行。

目前 netdata 可以运行在:Linux 发行版、FreeBSD 和 MacOS 上。

netdata源码:https://github.com/firehol/netdata

官方虽然提供了一键安装脚本(相信我,这跟那些坑爹的 lnmp 的一键安装脚本不一样,自从用过那些脚本后,我再也不相信“一键”了……)和一键依赖安装脚本(如果你懒到连 apt-get 或 yum 都不愿意用的话),你只需要使用 git clone 整个仓库然后运行安装脚本就好了。

为了以后经常安装使用,所以将git clone的安装方式步骤写成了脚本。

脚本介绍

netdata演示:https://my-netdata.io/

操作系统:支持CentOS6+、Ubuntu12+、Debian6+

脚本特性: 1.脚本自动开启防火墙端口 2.脚本优化netdata内存

脚本源码:https://github.com/myxuchangbin/netdata_install

安装方式

问题反馈

欢迎大家反馈问题

nginx简单referer防盗链设置

admin阅读(344)

nginx referer简介

nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求.我们应该牢记,伪装Referer头部是非常简单的事情,所以这个模块只能用于阻止大部分非法请求。我们应该记住,有些合法的请求是不会带referer来源头部的,所以有时候不要拒绝来源头部(referer)为空的请求.

图片防盗链配置示例如下

以上所有来至91linux.org和域名中包含google和baidu的站点都可以访问到当前站点的图片,如果来源域名不在这个列表中,那么$invalid_referer等于1,在if语句中返回一个403给用户,这样用户便会看到一个403的页面,如果使用下面的rewrite,那么盗链的图片都会显示403.jpg。如果用户直接在浏览器输入你的图片地址,那么图片显示正常,因为它符合none这个规则.

示例解析

第一行: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

其中“gif|jpg|jpeg|png|bmp|swf”设置防盗链文件类型,自行修改,每个后缀用“|”符号分开!

第二行:valid_referers none blocked *.91linux.org 91linux.org server_names ~\.google\. ~\.baidu\.;

就是白名单,允许文件链出的域名白名单,自行修改成您的域名! *.91linux.org这个指的是子域名,域名与域名之间使用空格隔开!baidu和google是搜索引擎。

第五行:rewrite ^/ https://www.91linux.org/403.jpg;

这个图片是盗链返回的图片,也就是替换盗链网站所有盗链的图片。这个图片要放在没有设置防盗链的网站上,因为防盗链的作用,这个图片如果也放在防盗链网站上就会被当作防盗链显示不出来了,盗链者的网站所盗链图片会显示X符号;当然你也可以直接返回403

扩展

这样设置差不多就可以起到防盗链作用了,上面说了,这样并不是彻底地实现真正意义上的防盗链!

我们来看第三行:valid_referers none blocked *.91linux.org 91linux.org server_names ~\.google\. ~\.baidu\.;

valid_referers 里多了“none blocked

我们把“none blocked”删掉,改成

valid_referers *.91linux.org 91linux.org server_names ~\.google\. ~\.baidu\.;

  • none
    “Referer” 来源头部为空的情况
  • blocked
    “Referer”来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://或者https://开头.

nginx彻底地实现真正意义上的防盗链完整的代码应该是这样的:

这样您在浏览器直接输入图片地址就不会再显示图片出来了,也不可能会再右键另存什么的。

我们应该记住,有些合法的请求是不会带referer来源头部的,所以有时候不要拒绝来源头部(referer)为空的请求.

 

 

免费alpha SSL泛域名证书 – 80KVM提供

admin阅读(273)

泛域名SSL证书,也叫通配符证书,英文写作Wildcard Certificates。泛域名SSL最大的好处就是一次申请可以应用任意子域名上,即通配符证书可以保护一个域名下同级子域名,且不限制该级子域名数量,这样也就是省去了一大部分费用了。(收费的泛域名证书很贵)

一、免费AlphaSSL证书申请地址

http://alpha.80host.com/

http://alpha.ceranetworks.net/

请关闭whois保护或者是配置好域名邮箱再签,如果whois保护关了也看不到正确邮箱那就去配置好域名邮箱再签发;

本程序由陈氏玖玖香餐饮管理有限公司旗下http://50kvm.com友情赞助,傻儿火锅,无辣不欢

第二、生成和获取CSR文件

CSR生成地址:https://csr.chinassl.net/generator-csr.html

这个表格,根据我们实际的信息填写,有两处需要认真一点,一处是邮箱用来接收CSR的,不要乱写,其次是域名部分,如果我们需要得到泛解析/通配符的SSL证书,就写成类似”*.91linux.org”这样的域名。

生成完毕之后,我们可以看到页面下、以及邮箱会收到CSR和KEY文件,我们这里先保存下来。

第三、在线申请免费AlphaSSL证书过程

1.上传csr

2.填写一些其他信息

3.验证邮箱

4.发送成功,登录邮箱查看验证邮件

5、打开验证邮件后打开链接,点击“I APPROVE”。

5.收到证书之后完善证书,解决有些浏览器提示证书不完整或有风险。具体方法:复制邮件里的证书KEY进入https://www.myssl.cn/tools/downloadchain.html下载中间证书和根证书。

9、完整证书:新建文件ssl.crt(证书文件)并用记事本打开。同样方法打开下载的中间证书和根证书,然后按下列顺序在ssl.crt中排列并保存:AlphaSSL crt\中间证书crt\根证书crt。完整KEY:新建文件ssl.key(证书的KEY文件)并用记事本打开,将第一步申请到的CSR带的KEY完整复制进去并保存。

第四、注意事项

关闭域名保护

最好关闭域名保护,开启域名保护可能会使 AlphaSSL 无法验证信息,导致无法签发

清除域名的 CNAME 记录

CNAME 记录开启,会导致 AlphaSSL 无法校验域名信息,根据官方人员给我的邮件,他们认为给根域名添加 CNAME 是一个错误的行为,具体原因参见
Why it's a bad idea to put a CNAME record on your root domain

保证网站可访问

这个坑官方人员一直没有说,所以我弄了很长时间死活收不到邮件,直到最后决定放弃,部署上了一张 Symantec 的单域名证书,证书生效的几乎同时我的邮箱就收到了 AlphaSSL 的验证邮件。

总结原因应该是我之前的证书失效可能导致了 AlphaSSL 的验证程序无法获取正确的域名解析信息。所以,要保证网站可以访问,即便是 http 不是 https 也可以。

合并中级证书

由于 AlphaSSL 是中级证书商,因此需要把它的中级证书和签发给我的证书合并。

大家在安装SSL证书时要特别注意中间根书和根证书,只有将域名证书、中间根书和根证书三个证书的内容合并到一块,各大主流浏览器基本上不再报错了,在线生成的Key一定要保存好,丢失了证书就没有用了。

 

专注分享,共同进步

我要投稿