Monthly Archive: 八月 2017

部署在ECS上的WordPress全站启用HTTPS

前提条件
首先说明本次操作的软硬件环境,若有需要,请针对性参考。

  • WordPress 4.8.1
  • 阿里云ECS服务器
  • 万网已备案域名 [万网已与阿里云官网融合]

申请免费CA证书
云盾证书服务_数字证书管理_CA中心-阿里云

点击上方连接,根据操作步骤进行信息填写,官方说明免费CA证书用于个人测试使用,有效期一年,申请过程无须人工介入审核,等待几分钟之后,会通知你「审核通过」,状态变成「已签发」,如下图所示,进入「下载」环节。


安装OpenSSL
需明确把CA证书安装在哪个web服务器上,官方提供Nginx,Apache,Tomcat,IIS等证书配置说明。
笔者把CA证书安装在Apache上,接着检查Apache上是否已加载mod_ssl module,如无,请前往OpenSSL下载源码,进入安装流程:

或者直接使用yum命令进行安装

借助apxs安装mod_ssl模块
如何把已安装好的OpenSSL模块加载到Apache中着实花了一点时间,在网上搜索了一把,提到的方法基本上倾向于用Apache源码安装mod_ssl模块,显然这种方法会比较繁琐,也比较费时。
找到一种无须编译Apache也可安装mod_ssl模块的方法,但Apache源码也是需要的,安装步骤如下:

  1. 执行whereis openssl,定位openssl的lib和include路径;
  2. 切换到当前目录到/module/ssl;
  3. 执行/etc/httpd/bin/apxs -i -a -D HAVE_OPENSSL=1 -I/usr/include/openssl/ -L/usr/lib64/openssl/ -c *.c -lcrypto -lssl -ldl

安装证书
前面三个步骤来自官方说明。
1. 在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为214242643870408.key;
2. 打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到以下内容并去掉“#”:

3. 打开 apache 安装目录下 conf/extra/httpd-ssl.conf 文件 (也可能是conf.d/ssl.conf,与操作系统及安装方式有关), 在配置文件中查找以下配置语句:

4. 修改DocumentRoot,打开conf/extra/httpd-ssl.conf,修改里面的DocumentRoot:
/etc/httpd/htdocs修改成/var/www/html,根据站点内容具体存放位置而定。

批量修改图片路径
在完成以上所有步骤之后,我们在访问站点时,打开浏览器的开发者工具->console,我们会看到大量的图片路径报警信息,原因是在配置https之前,所有站点文章中涉及的图片都以http打头的路径保存,现在切换到https,WordPress会提醒你图片应该以https打头的路径进行保存。
那么如何进行修改,网上主流的有两种方法:

  1. 修改站点主题中的functions.php文件,在文件末尾加上替换函数,把对图片的访问经过字符串替换之后,切换到https访问;
  2. 使用phpMyadmin登录站点mysql数据库,对图片路径进行批量更新;
    以上两种方法,网上一搜一大把,请自行前往。

这里介绍第三种,安装插件 点击下载WP Migrate DB ,操作界面干净简单,如下图所示:


操作简单,Find栏目填写源字符串,Replace填写目标字符串,点击执行即可。

以上所有就是实践全站启用https过程中所执行的步骤以及碰到的一些问题一并在步骤里面进行说明,但每个人碰到的情况不一样,欢迎各位进行交流。

玩转大数据也许真的可以离开Hadoop?

之前在学习大数据相关的内容,技术坑很多,水很深。偶然间在一位博主的博客中看到了Tablesaw这款开源工具,号称「MAKING BIGDATA SAMLL AGAIN」,觉得很神奇,遂前去一探究竟。

Tablesaw简介
引用官网的一段介绍:

Tablesaw is a high-performance, in-memory data table in Java.
Tablesaw’s design is driven by two ideas: First, few people need distributed analytics. On a single server, Tablesaw lets you work interactively with a 2,000,000,000 row table. (I plan to raise that ceiling, btw.) Second, it should be super easy to use: To that end I happily steal ideas from everything from spreadsheets to specialized column stores like KDB.

我们来总结下,Tablesaw设计初衷有以下两条:

  1. 作者认为很少有人真的需要进行分布式计算分析,在单台服务器上「Tablesaw」能支持最多20亿条数据,似乎在大多数情况下都能满足用户的计算需求;
  2. 大数据工具应该简单易用,费大把劲去搭建大数据集群估计已经吓退一拨人。

从本质上而言,我们发现「Tablesaw」就是一款基于内存,使用纯java实现的big spreadsheet。嗯,我相信你一定使用过Excel。

Tablesaw主要功能
既然Tablesaw宣称自己简单好用,那到底支持哪些功能呢,笔者新建了一个Maven工程玩了一把,貌似有以下功能:

  • Import data from RDBMS and CSV files, local or remote (http, S3, etc.)
  • Add and remove columns
  • Sort
  • Filter
  • Group
  • Map and reduce operations
  • Descriptive stats (mean, min, max, median, etc.)
  • Plotting for exploratory data analysis and model checking
  • Store tables in a very-fast, compressed columnar storage format

在试用过程中有几点 事项说明 下:

  1. 在数据量不大的情况下,执行简单的查询操作速度很快,不像在Hive中做一个非常简单的查询都会转化成一个MapReduce作业在Hadoop集群上跑几十秒时间(当然你可以通过set hive.fetch.task.conversion=more ,使得简单的查询不会被转化成MapReduce作业);
  2. Tablesaw支持的功能还非常有限,对于复杂的组合查询会很吃力,甚至可能都做不到,Tablesaw作者在博客中强调未来会支持更多的列类型,支持更多的操作,同时把常用的机器学习算法的实现也引入进来,对于未来的设想我们拭目以待;
  3. 在借助Tablesaw做数据展示的时候,使用的是XCharts

Tablesaw适用场景
简单介绍了Tablesaw的主要功能以及未来的设想,其实我更关注的是如何与我们现有的应用场景进行结合,或者说Tablesaw在哪些场景下会比较适用,大致能想到的有以下两个领域:

  1. 作为缓存器,对于热点数据我们从持久化的关系型数据库读到内存之后,可以马上对外提供计算查询的API;
  2. 对于数据分析师,数据科学家等以实验论证形式展开工作的一类人,对他们来讲有一款简单易用的大数据工具绝对是福音。

浅谈大数据技术与人工智能技术之间的关系

重读吴军博士的“智能时代-技术的拐点”章节有感,以及自己的一些思考。

大家似乎都有这样一个直观的感性认识,人工智能从2015,16年开始似乎又进入了一个快速的发展阶段,各种人工智能的概念性产品纷纷涌现,遍地开花,尤其是创业者,感觉到特别兴奋,纷纷想要打造出革命性的产品,改变世界,这个时候其实我们有一点纳闷,有一点疑惑,为什么一项已经发展了半个多世纪之久的人工智能技术在今天这个时间点能够被大家普遍接纳和采用,大家开始有能力去构建一个人工智能学习系统,呈现一种突破性的发展态势,我们肯定在想这背后发生了什么,是的!

这十几年来,还有一门技术非常火,那就是大数据技术,有人曾经这样形容大数据技术与人工智能技术的关系,说:

人工智能就像潜力无限的婴儿,而大数据是喂养婴儿的奶粉,奶粉的数量和质量决定了婴儿的智力发育水平。

那么这十几年以来,大数据技术取得了哪些突破性的进展,我们分成四个维度来分别看一下,如下图所示:

 

数据采集
数据采集说的是数据源的问题,分以下几点进行说明:
1. 随着全球软件业的蓬勃发展,越来越多的应用系统投入生产运行,系统本身产业的交易,日志等等数据是庞大的,这是第一个来源;
2. 随着各种智能设备以及可穿戴设备的普及,设备中部署的一个个sensor无时无刻不在自发的采集数据,这是其二;
3. 进入web2.0时代,尤其是在社交网络如此发达的今天,用户ugc产生的数据量呈指数级增长。

所以在今天这个时间点看来,数据已经不是多少的问题,而是如何好好利用的问题。

数据存储
数据存储分两点来看:
1. 根据摩尔定律,存储设备每隔18个月存储容量上升,成本下降。越来越多的服务提供商开始铺机器,建设一个个数据中心;
2. 存储设备更新迭代,由磁带过渡到机械硬盘,在发展到现今的固态硬盘,这里体现出来的是存储设备数据存取速度的极大提升。

数据传输
数据传输讨论的是如何把众多的数据源聚合到数据服务器上的问题,随着网络传输技术的发展,各种数据源通过千兆/百兆光纤网络,WiFi,4g网络等等完成数据的传递。

数据处理
这是我个人认为具有深刻意义的突破性进展,出现了并行计算框架,你很难想象Deepmind公司在训练AlphaGo的时候如果只用了一台服务器来跑他们的神经网络算法,那么试想完成一轮神经网络的迭代运算需要多久?一天、一星期、一个月、一年还是直接就趴下了,无论如何,至少我们会达成这样的共识:AlphaGo大胜李世石的局面不会这么早被我们见证,对吗?

所以,总结起来看,围绕大数据技术的这四个维度在各自方向上的突破性进展合力把大数据带到了一个技术拐点,同时再加上更优化的算法模型和更完备的海量数据共同推进了人工智能往前迈出了一大步,取得了突破性进展。