http://archive.cloudera.com/cdh5/cdh/5/
http://archive.cloudera.com/cdh5/cdh/5/
Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。
Let's Encrypt免费SSL证书的出现,也会对传统提供付费SSL证书服务的商家有不小的打击。到目前为止,Let's Encrypt获得IdenTrust交叉签名,这就是说可以应用且支持包括FireFox、Chrome在内的主流浏览器的兼容和支持,虽然目前是公测阶段,但是也有不少的用户在自有网站项目中正式使用起来。
在今年黑色星期五的时候,Namecheap各种促销活动中也包括年费0.88美元的SSL证书,当时老左也有购买了2个备用学习和适当的放到一些网站中看看效果(据说英文网站谷歌会很喜欢),当时冷雨同学就建议到时候直接使用Let's Encrypt免费SSL,毕竟有很多大公司支持的,比一些小公司提供的免费SSL证书靠谱很多。
虽然目前Let's Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约,不影响我们的尝试和使用,为了考虑到文章的真实性和以后的实战性,老左准备利用一些时间分篇幅的展现在应用Let's Encrypt证书的过程,这篇文章分享申请的方法教程。
第一、安装Let's Encrypt前的准备工作
根据官方的要求,我们在VPS、服务器上部署Let's Encrypt免费SSL证书之前,需要系统支持Python2.7以上版本以及支持GIT工具。这个需要根据我们不同的系统版本进行安装和升级,因为有些服务商提供的版本兼容是完善的,尤其是debian环境兼容性比CentOS好一些。
比如CentOS 6 64位环境不支持GIT,我们还可以参考"Linux CentOS 6 64位系统安装Git工具环境教程"和"9步骤升级CentOS5系统Python版本到2.7"进行安装和升级。最为 简单的就是Debian环境不支持,可以运行"apt-get -y install git"直接安装支持,如果是CentOS直接运行"yum -y install git-core"支持。这个具体遇到问题在讨论和搜索解决方案,因为每个环境、商家发行版都可能不同。在这篇文章中,老左采用的是debian 7 环境。
第二、快速获取Let's Encrypt免费SSL证书
在之前的博文中老左也分享过几篇关于SSL部署的过程,我自己也搞的晕乎晕乎的,获取证书和布局还是比较复杂的,Let's Encrypt肯定是考虑到推广HTTPS的普及型会让用户简单的获取和部署SSL证书,所以可以采用下面简单的一键部署获取证书。
PS:在获取某个站点证书文件的时候,我们需要在安装PYTHON2.7以及GIT,更需要将域名解析到当前VPS主机IP中。
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --standalone --email admin@laozuo.org -d laozuo.org -d www.laozuo.org
然后执行上面的脚本,我们需要根据自己的实际站点情况将域名更换成自己需要部署的。
看到这个界面,直接Agree回车。
然后看到这个界面表示部署成功。目前根据大家的反馈以及老左的测试,如果域名是用的国内DNS,包括第三那方DNSPOD等,都可能获取不到域名信息。
这里我们可以看到有"The server could not connect to the client to verify the domain"的错误提示信息,包括也有其他提示错误,"The server experienced an internal error :: Error creating new registration"我们在邮局的时候不要用国内免费邮局。所以,如果我们是海外域名就直接先用域名自带的DNS。
第三、Let's Encrypt免费SSL证书获取与应用
在完成Let's Encrypt证书的生成之后,我们会在"/etc/letsencrypt/live/laozuo.org/"域名目录下有4个文件就是生成的密钥证书文件。
cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件
如果我们使用的Nginx环境,那就需要用到fullchain.pem和privkey.pem两个证书文件,在部署Nginx的时候需要用到(参考:LNMP一键包环境安装SSL安全证书且部署HTTPS网站URL过程)。在这篇文章中老左就不详细演示Let's Encrypt证书证书的安装,后面再重新折腾一篇文章详细的部署证书的安装Nginx和Apache。
ssl_certificate /etc/letsencrypt/live/laozuo.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/laozuo.org/privkey.pem;
比如我们在Nginx环境中,只要将对应的ssl_certificate和ssl_certificate_key路径设置成我们生成的2个文件就可以,最好不要移动和复制文件,因为续期的时候直接续期生成的目录文件就可以,不需要再手工复制。
第四、解决Let's Encrypt免费SSL证书有效期问题
我们从生成的文件中可以看到,Let's Encrypt证书是有效期90天的,需要我们自己手工更新续期才可以。
./letsencrypt-auto certonly --renew-by-default --email admin@laozuo.org -d laozuo.org -d www.laozuo.org
这样我们在90天内再去执行一次就可以解决续期问题,这样又可以继续使用90天。如果我们怕忘记的话也可以制作成定时执行任务,比如每个月执行一次。
第五、关于Let's Encrypt免费SSL证书总结
通过以上几个步骤的学习和应用,我们肯定学会了利用Let's Encrypt免费生成和获取SSL证书文件,随着Let's Encrypt的应用普及,SSL以后直接免费不需要购买,因为大部分主流浏览器都支持且有更多的主流商家的支持和赞助,HTTPS以后看来也是趋势。在Let's Encrypt执行过程在中我们需要解决几个问题。
A - 域名DNS和解析问题。在配置Let's Encrypt免费SSL证书的时候域名一定要解析到当前VPS服务器,而且DNS必须用到海外域名DNS,如果用国内免费DNS可能会导致获取不到错误。
B - 安装Let's Encrypt部署之前需要服务器支持PYTHON2.7以及GIT环境,要不无法部署。
C - Let's Encrypt默认是90天免费,需要手工或者自动续期才可以继续使用。
本文固定链接: http://www.laozuo.org/7676.html | 老左博客
nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。
nginx的upstream目前支持的5种方式的分配
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
在需要使用负载均衡的server中增加
proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout:max_fails次失败后,暂停的时间
最近对Web App开发开始深入,老总做了个类似于Phonegap的中间件,整体上web app有了个初始的框架雏形,现在又有需求自动生成apk,将开发人员从打包工作中解脱出来(你可以想象同一个软件,只改一个去往网页的地址和apk包名,要打上百个包有多累),所以就学习Rexsee这个开源项目的一点形式,通过网站提交html页面,修改一些基本数据,自动生成apk,达到批量化的目的。所以先开始学习ant….
一,准备ant, 搭ant环境,这个没得所,谷大师会告诉你…
二,配置Android SDK环境,将tools 和platform-tools 都配置到环境变量Path中…
三,创建一个android项目
参数说明:
-k /--package 为命名空间(包名)-a /--name 工程名
-p /--path 项目 -t 为目标平台的版本编号(由下面步骤1列出的)
1)、列出你SDK中已有的平台版本,执行命令“ android.bat list targets”
2)、create一个Android工程,执行命令“android create project -k com.vatata.atest.ant -a AntAndroidTest1 -p c:\test\AntAndroidTest1 -t 2”
这样工程创建完后,ant的build.xml 就自动生成了…
3) 执行“ant debug” ,这样就会编译生成apk…
四)Apk 安装
通过第三部生成的apk会出现在c:\test\AntAndroidTest1中的bin目录下,现在就可以安装了
1)--> adb device
2) -->
adb –s SH17JV805161 install c:\test\AntAndroidTest1\ bin\AntAndroidTest3-debug.apk
就行了
然后apk就安装到手机上,可以测试了…
那么再回到我之前的问题,一个apk 只要修改一个链接和包名,那么我们可以通过写文件的形式,修改某个字段和Manifest中的packagename,那么重新执行ant debug,这个apk又重新生成了,就是个全新的apk了,很爽吧…
最近把我的OVH独服重装了下,打算用Proxmox开点VM来用,省得一直吃灰(雾,安装很简单,毕竟是OVH提供的模板,但是,这玩意每次登陆都会有个蛋疼的提示(You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options.),而且找了半天没找到有关的地方,然后去官网看了下订阅的价格,呵呵呵,我还是自己想办法吧……
对于一个网页,要明白它到底发生了什么,那当然是直接F12怼一波,看了下控制台发现有个pvemanagerlib.js,看看名字就觉得很像是这玩意在搞事啊,右击在新页面打开,看看内容,首先根据之前的提示文字来搜索
很好,找到目标,然后再次搜索noSubKeyHtml
一切顺利,找到了执行订阅检测的地方,现在简单了,直接改判断条件或者怼掉show操作都行,问题来了,这个文件在浏览器里又不能改,它到底在哪?
其实很简单,随便locate一下就找到了,我们先用cp备份一下,然后开始修改这个文件
然后注销重新登录,一切OK,世界清静
最近在配置hadoop过程中为了让各节点使用内网通信,研究了下怎么在proxmox下添加内网地址,一开始觉得挺容易,然后发现有点小坑,记录下。
首先需要在宿主机上添加个内网网卡,可以使用Proxmox添加,也可以直接改配置文件,效果一样,面板如下,vlan aware随意
编辑文件的话需要修改/etc/network/interfaces ,添加如下,同样vlan aware 随意
1
2
3
4
5
6
7
8
|
auto vmbr2
iface vmbr2 inet static
address 10.10.10.254
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
bridge_vlan_aware yes
|
之后我们便为宿主机添加了一个内网网卡,地址为10.10.10.254
之后我们在创建的容器或是虚拟机上同样添加一个网卡,mac地址会自动生成,网关就写宿主机的,桥接写我们添加的那个网卡,然后就可以了
PS.需要注意的有一点,先加内网地址后加外网地址,否则默认路由会是内网,这个是个坑,我一开始没在意然后发现怎么也访问不了
Proxmox VE 4将3代的OpenVZ支持去除换成了LXC,算是跟随趋势吧,但是LXC和OpenVZ还是有挺多不同的,在权限上更是如此,而网上最多的还是OVZ相关的教程,LXC的是真的少,不过一直以来没需求,所以没怎么折腾,最近在搞内网,所以为了用Tunnel还是得把TUN/TAP支持打开。
首先当然是谷歌咯,关键词选得好马上出结果,proxmox官方论坛讨论贴 https://forum.proxmox.com/threads/tun-devices-in-ve-4-lxc.23473
总结一下
①.如果需要对所有(之后创建的)LXC容器全部开启tun/tap
那么需要修改/etc/lxc/default.conf,添加lxc.cgroup.devices.allow = c 10:200 rwm
当然,也可以创建/usr/share/lxc/config/common.conf.d/02-tuntap.conf 这样的配置文件来取得同样的效果
②.而如果只要对指定容器有效,则需要修改/etc/pve/lxc/[ID].conf , [ID]为你的容器编号
还没完,这样只是给了权限,实际上还没好,需要在容器的/etc/rc.local 自启动文件中添加如下
1
2
3
4
|
if ! [ -c /dev/net/tun ]; then
mkdir -p /dev/net
mknod -m 666 /dev/net/tun c 10 200
fi
|
这样你执行需要tun/tap的程序时就不会出问题了
a. 编辑vz.conf文件,添加iptable_nat ipt_state这2个东西
1
2
3
|
vi /etc/vz/vz.conf
IPTABLES=" ***" 这一行的引号内添加2个模块
iptable_nat ipt_state
|
b. 手动关闭所有小鸡,重启openvz模块
/etc/init.d/vz restart
c. 对小鸡进行必要的设置(这里以小鸡100为例,100是指PID,WEB控制面板里可以看到)
1
2
|
vzctl set 100 --devices c:10:200:rw --save
vzctl set 100 --capability net_admin:on --save
|
d. 母鸡加载一次这些
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
modprobe ipt_mark
modprobe ipt_MARK
modprobe ip_nat_pptp
modprobe nf_nat_pptp
modprobe tun
modprobe ppp_async
modprobe ppp_deflate
或者
vi /etc/modules
ipt_mark
ipt_MARK
ip_nat_pptp
nf_nat_pptp
tun
ppp_async
ppp_deflate
查看是否启用模块
lsmod | grep nf_nat_pptp
|
e. 启动小鸡输入以下命令
1
2
3
|
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
|
Hbase hbck
示例:
##############################################
#### SSH Tunnel; 经测试,已经打通
##############################################
# 公网服务器外网IP: 115.28.9.136
# 公网服务器内网IP: 10.144.7.195
# 内网服务器内网IP: 10.144.7.191
### 1 先登录 115.28.9.136
ssh root@115.28.9.136 -p 22
#通过 webmin 修改 ssh配置,并应用变更
# 实质是 /etc/ssh/sshd_config 文件
GatewayPorts yes
### 2 在 136 上登录 10.144.7.191
ssh root@10.144.7.191 -p 22
### 3 在 10.144.7.191 上执行:
# 即通过此SSH后台登陆 195机器,监听了 195:19122端口,
# 此时访问 136:19122 的请求,相当于都转发到本地的22端口了。
# -Nf 是后台命令的意思
ssh -Nf 10.144.7.195 -R 19122:10.144.7.191:22
# 此时,客户端通过 115.28.9.136:19122 登录,实际上登陆的就是 10.144.7.191:22 服务器了。
来自官方手册:https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora
Including Red Hat® Enterprise Linux® / RHEL, CentOS and Fedora.
Node.js is available from the NodeSource Enterprise Linux and Fedora binary distributions repository. Support for this repository, along with its scripts, can be found on GitHub at nodesource/distributions.
Note that the Node.js packages for EL 5 (RHEL5 and CentOS 5) depend on the EPEL repository being available. The setup script will check and provide instructions if it is not installed.
Run as root on RHEL, CentOS or Fedora, for Node.js v6 LTS:
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
Alternatively for Node.js v7:
curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
Alternatively for Node.js 0.10:
curl --silent --location https://rpm.nodesource.com/setup | bash -
Then install, as root:
yum -y install nodejs