分类
成长之路

入手机器学习从搞懂这十大经典算法开始

在机器学习的领域“没免费的午餐”是一个不变的定理。简而言之,没有一种算法是完美的,可以作为任何问题最佳解决方案。认清这点,对于解决监督学习问题(如预测建模问题等)尤其重要。

我们不能总说神经网络就比决策树好,反之亦然。影响算法性能的因素有很多,比如数据集的大小和结构等。

因此,对自己的问题,要尝试多种不同的算法,并使用测试数据集来评估各个算法的性能,以选出效果最优的那个。

当然,前面所尝试的算法必须要适合自己的问题,这也正是你要选对正确的机器学习任务的地方。比如,要打扫房子的时候,会使用真空吸尘器、扫帚或者拖把,但绝不应该用铲子在屋子内挖坑。

重要原则

话虽如此,但所有用于预测建模的有监督机器学习算法却有一个共同的原则:机器学习算法的本质是找到一个目标的函数f,使其成为输入变量X到输出变量Y之间的最佳映射,即Y=f(x)。

这是最常见的学习任务,给定任意新输入变量X,我们就能预测出输出变量Y的值。因为我们不知道目标函数f的形式或样子,所以才要机器去把它找出来。不然的话,我们就可以直接用目标函数来进行预测了,不需要用机器学习算法来学习数据了。

最常见的机器学习类型就是找到最佳的映射Y=f(x),并以此来预测新X所对应的Y值。这一过程被称为预测建模或预测分析,目标是尽可能的导出最为准确的预测。

对于渴望理解机器学习基本概念的各位新手们,我们特地整理出数据科学家最常用的十大机器学习算法,便于大家快速上手。

线性回归

线性回归可能是统计学和机器学习中最为知名、最易于理解的一个算法。

预测建模主要关注的是如何最小化模型的误差,或是如何在一个可解释性代价的基础上做出最为准确的预测。我们可以借用、重用和窃取包括统计学在内的多个不同领域的算法,将其用于这些目的。

线性回归所表示的是描述一条直线的方程,通过输入变量的特定权重系数B来找出输入变量x和输出变量y之间最适合的映射关系,即y=B0+B1*x。

需给定输入x,我们可以预测出y的值。线性回归学习算法目标是找到系数B0和B1的值。

找出数据的线性回归模型有多种不同技巧,例如将线性代数解用于普通最小二乘法和梯度下降优化问题。

线性回归业已存在200多年了,并已被广泛研究过。使用该算法的一些窍门,是尽可能地去除非常相似的相关变量以及数据中的噪声。这是一个快速、简单又好用的算法。

逻辑回归

逻辑回归是机器学习借统计领域的另一项技术,用于解决二元分类问题(有两个类值的问题)

逻辑回归就像线性回归,因为它目标是找出每个输入变量的加权系数值。与线性回归不同的,逻辑回归预测输出值函数是非线性的,也被称为逻辑函数。

逻辑回归的函数图像看起来是一个大的S,并将任何值转换至0到1的区间。这种形式非常有用,因为我们可以用一个规则把逻辑函数的值转化成0和1(例如,如果函数值小于0.5,则输出1)从而预测类别。

基于模型学习方式,逻辑回归的输出值可以用来预测给定数据实例属于类别0和类别1的概率。当你的预测需要更多依据时,这一点会非常有用。

线性回归一样,当剔除与输出变量无关或与之除非常相似(相关)的属性后,逻辑回归的效果会更好。对于二元分类问题,它是一个易于上手、快速又有效的模型。

线性判别分析

一般来说,逻辑回归仅限二元分类问题。 但如果分类类别超过了两个,线性判别分析就成为首选的线性分类算法。

线性判别分析的表达式非常简单。由数据的统计属性组成,并计算每个类别属性值。对于单个输入变量,包括:

  1. 每个类别的平均值;
  2. 所有类别方差。

线性判别分析通过计算每个类别的差别值,并对拥有最大值的类别进行预测。该方法假定数据都服从高斯分布(钟形曲线)因此预测前从数据中移除异常值会是一个很好习惯。对于分类预测问题来说,它是一个简单又强大的方法。

分类和回归树

决策树是用于预测建模的一种重要的机器学习算法。

决策树模型的表现形式为二叉树,也就是来自算法和数据结构方面的二叉树,没有什么特别。树上每个节点代表一个输入变量x与一个基于该变量的分离点假定这个变量是数字。

叶节点包含了用于预测的输出变量y。预测是通过遍历树的分离点开始,直到抵达每一个叶节点,并输出该叶节点分类值。

决策树算法学习起来会很快,预测速度也快。决策树对于各种各样的问题都能做出准确预测,并且无需对数据做任何特殊的预处理。

朴素的贝叶斯

朴素贝叶斯是一种简单又强大的预测建模算法。

该模型由两种概率组成,它们都能从训练数据中直接计算出来:

  1. 每个类别的概率;
  2. 对于给定的x值,每个类别的条件概率。

一旦计算出来,概率模型就可以用于使用贝叶斯定理对新数据进行预测。你的数据是实值时,通常假定一个高斯分布(钟形曲线)这样就很容易计算出这些数据的概率。

朴素贝叶斯假定每一个输入变量都是独立,所以被称为朴素的。这是一个假设,对真实数据而言有一点不切实际,但该方法在大范围的复杂问题上非常有效。

K最近邻算法

K最近邻算法非常的简单和有效。它的模型所表示整个训练数据集,看上去很简单,对吧?

对于给定训练数据,通过搜索整个数据集中K个最相似的实例(邻居)汇总这K个实例输出变量可以预测新的数据点。对于回归问题,它可能是输出变量的平均值;对于分类问题,它可能是模式或最常见的类别值。

用K最近邻算法的诀窍,在于如何确定数据实例之间的相似性。最简单的方法,如果你的属性在欧几里德距离上尺度相同(如均以英寸为单位)那基于每个输入变量之间的差异,就可以直接计算其数值来确定相似性。

K最近邻算法可能需要大量内存或存储空间来储存所有数据,但只有在预测时才会执行计算或学习。也可以随时更新和管理你的训练实例,以保持预测准确性。

距离或紧密度的概念在非常高的维度(大量输入变量)中可能会失效,因为输入变量的数量对于算法性能有着很大的负面影响。这是维度灾难。这就要求只使用那些与预测输出变量最相关的输入变量。

学习向量量化

K最近邻算法的一个缺点是你需要使用整个训练数据集。作为人工神经网络,学习向量量化算法(简称为LVQ)允许你选择训练实例的数量,能准确地学习这些实例所应有的特征。

学习向量量化算法所表示的是码本向量的集合。这些向量在初始化时候随机选择出来,在学习算法的多次迭代中优化成最能概括训练数据集的集合。在学习完成后,码本向量可像K最近邻算法一样进行预测。通过计算每个码本向量和新数据实例之间的距离来找到最相似的邻居(最佳匹配码本向量)然后返回最佳匹配单元类别值或(在回归情况下的实际值)作为预测。如果能重新调整数据使其处于相同的区间(如0到1之间)则可以获得最佳的预测结果。

如K最近邻算法在你的数据集上已经给出了很好的预测结果,那么可以尝试用学习向量量化算法来减少整个训练数据集的内存存储需求。

支持向量机制

支持向量机可能是最受欢迎、讨论最为广泛机器学习算法之一。

超平面是输入变量空间内一条分割线。支持向量机中,超平面可以通过类别0类或1类最佳分割输入变量空间。在二维空间内,超平面可被视为一条线,我们假设所有的输入点都可以被该线完全分开。支持向量机目标是找到一个分离系数,让一个超平面能够对不同类别的数据进行最佳分割。

超平面与最近的数据点之间的距离被称为边距。在分离两个类上具有最大边距的超平面称为最佳超平面。超平面的确定只跟这些点及分类器的构造有关。这些点被称为支持向量,它们支持并定义超平面。在实践中,可使用优化算法来找到能够最大化边距的系数。

支持向量机可能是最强大的“开箱即用”的分类器之一,值得尝试。

bagging算法和随机森林

随机森林是最流行、最强大的机器学习算法之一。它是种被称为Bootstrap Aggregation或Bagging的机器学习集成算法。

Bootstrap是种从数据样本中估算数量的强大统计方法。换句话说,你需要抽取大量的数据样本、计算平均数值,然后再计算所有均值的平均,以更好地估计整体样本的真实平均值。

bagging算法使用相同的方式,用于估计整个统计模型的最常见方法是决策树。训练数据中的多个样本将被取样,然后对每一个数据样本建模。对新的数据进行预测时,每个模型都会进行预测,并对每个预测结果进行平均,以更好地估计真实的输出值。

随机森林是对bagging算法的一种调整,它不是选择最佳分割点来创建决策树,而通过引入随机性来得到次优分割点。

因此,针对每个数据样本所创建的模型,会与其他方式有所不同,但仍以其独特和不同的方式准确预测。结合所有模型预测,可以更好地估计潜在的真实输出。

如果用方差较高的算法(如决策树)能够获得较好结果,那么通过bagging算法通常可以获得更好的结果。

Boosting和AdaBoost的算法

Boosting是项从多个弱分类器中构建强分类器的集成预测技术。从训练数据中构建模型,然后通过修正前一个模型的错误创造出第二个模型。以此类推,模型不断叠加,直至能够完美的预测训练数据集,或达到可添加的模型的数量上限。

在针对二元分类所开发boosting算法中,AdaBoost是第一个成功的。它是理解boosting算法的最佳起点。现代的boosting方法基于AdaBoost而构建,最典型的例子是随机梯度加速器。

通常,AdaBoost算法会与决策树一起工作。第一个决策树创建之后,决策树在每个训练实例上的性能,都被用来衡量下一个决策树针对该实例所应分配的关注程度。难以预测的训练数据被赋予更大权重,而容易预测的数据则被赋予更小权重。模型依次创建,每一次更新训练实例的权重,都会影响到序列中下一个决策树学习性能。所有决策树完成后,即可对新输入数据进行预测,而每一个决策树的性能将由它在训练数据上的准确度所决定。

由于模型注意力都集中于纠正上个算法的错误,所以必须确保数据是干净无异常。

最后建议

初学者常会被眼花缭乱的机器学习算法所困扰,提出“我该使用哪种算法”这样问题。

此问题的答案取决许多因素,包括:

  1. 数据大小、质量、性质;
  2. 可用计算时间;
  3. 任务的紧迫性;
  4. 你想要用数据来做什么。

即使一位经验丰富的数据科学家,在尝试不同的算法之前,也无法回答哪种算法的性能是最好的。机器学习算法还有很多,以上这些是最受欢迎的算法。如果你刚入门机器学习,这将是一个很好的学习起点。

分类
运维教程

Linux高可用集群之keepalived相关概念

keepalived的定义

Keepalived是一个基于VRRP协议来实现LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会使用2台服务器运行Keepalived,一台为主服务器MASTER,另一台为备份服务器BACKUP,但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证高可用性。Keepalived是VRRP的完美实现,因此在介绍keepalived之前,先介绍下VRRP的原理。

VRRP的协议简介

在现实网络环境中,两台需要通信的主机大多数情况下没有直接的物理连接。对于这种情况,它们之间路由怎样选择?主机如何选定到达目的主机的下一跳路由,这个问题通常的解决方法有二种:

  1. 在主机上使用动态路由协议(RIP/OSPF等)
  2. 在主机上配置静态路由

在主机上配置动态路由是非常不切实际的,因为管理、维护成本及是否支持等诸多问题。配置静态路由就会变得十分流行,但路由器(或者说默认网关default gateway)经常成为单点故障。VRRP的目的就是为了解决静态路由单点故障问题,VRRP通过竞选election协议来动态的将路由任务交给LAN中虚拟路由器中的某台VRRP路由器。

VRRP的工作机制

在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台的物理的机器并不能同时工作,而是由一台称为MASTER负责路由工作,其它的都是BACKUP,MASTER并非一成不变的,VRRP让每个VRRP路由器参与竞选,最终获胜的就是MASTER。MASTER会拥有一些特权,比如,拥有虚拟路由器IP地址,我们的主机就是用这个IP地址作为静态路由的。拥有特权的MASTER要负责转发发送给网关地址的包和响应ARP请求。

VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过IP多播multicast包多播地址224.0.0.18形式发送的。虚拟路由器由VRID范围0-255和一组IP地址组成,对外会表现为一个周知的MAC地址。所以,在一个虚拟路由器,不管谁会是MASTER,对外都是相同的MAC和IP(称之为VIP)客户端主机并不需要因为MASTER改变而修改自己的路由配置,对客户端来说,这种主从切换是透明的。

在一个虚拟路由器,只有作为MASTER的VRRP路由器会一直发送VRRP通告信息,BACKUP不会抢占MASTER,除非它的优先级priority更高。当MASTER不可用时(BACKUP收不到通告信息) 多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的,以保证服务连续性。出于安全性的考虑,VRRP包使用加密协议进行加密。

VRRP的工作流程

  • VRRP初始化

路由器启动时,如果路由器的优先级是255最高优先级,路由器拥有路由器地址,要发送VRRP通告信息,并发送广播ARP信息通告路由器IP地址对应的MAC地址为路由虚拟MAC,设置通告信息定时器准备定时发送VRRP通告信息,会转为MASTER状态;否则会进入BACKUP状态,设置定时器检查定时检查是否有收到MASTER的通告信息。

  • Master主
  1. 设置VRRP定时通告定时器;
  2. 用VRRP虚拟MAC地址响应路由器IP地址的ARP请求包;
  3. 转发目的MAC是VRRP虚拟MAC的数据包;
  4. 如果是虚拟路由器IP拥有者,将接受目的地址是虚拟路由器IP的数据包,否则丢弃;
  5. 收到shutdown的事件时删除定时通告定时器,发送优先权级为0的通告包,转初始化状态;
  6. 如果定时通告定时器超时时,会发送VRRP通告信息;
  7. 收到VRRP通告信息时,如优先权为0,会发送VRRP通告信息;否则判断数据的优先级是否高于本机,或相等且实际IP地址大于本地实际IP,设置VRRP定时通告定时器,复位主机的超时定时器,转BACKUP状态;否则的话,丢弃该通告包;
  • Backup备
  1. 设置主机的超时定时器;
  2. 不能响应针对虚拟路由器IP的ARP请求信息;
  3. 丢弃所有目的MAC地址是虚拟路由器MAC地址的数据包;
  4. 不接受目的是虚拟路由器IP的所有数据包;
  5. 收到shutdown的事件时删除主机超时定时器,转初始化状态;
  6. 主机超时定时器超时的时候,会发送VRRP通告信息,广播ARP的地址信息,转MASTER状态;
  7. 收到VRRP通告信息时,如优先权为0,表示进入MASTER的选举;否则判断数据的优先级是否高于本机,如果高的话承认MASTER有效,复位主机的超时定时器;否则的话,丢弃该通告包;

ARP的查询处理

当内部主机通过ARP查询虚拟路由器的IP地址对应的MAC地址时,MASTER路由器回复的MAC地址为虚拟VRRP的MAC地址,不是实际网卡的MAC地址,这样在路由器切换时让内网机器觉察不到;而在路由器重新启动时,不能主动发送本机网卡的实际MAC地址。如果虚拟路由器开启的ARP代理功能,代理的ARP回应也回应VRRP虚拟的MAC地址。

分类
运维教程

开启HSTS后的坑

首先说下HSTS是什么。HSTS是国际互联网工程组织IETE正在推行一种新的Web安全协议HTTP Strict Transport Security。采用HSTS协议的网站将保证浏览器始终连接到该网站的HTTPS加密版本,不需要用户手动在地址栏中输入加密地址。该协议将帮助网站采用全局加密,用户看到的就是该网站安全版本。

HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建安全的连接。服务器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含Strict-Transport-Security的字段。非加密传输时设置的HSTS字段无效。

比如,https://birdteam.net的响应头含有Strict-Transport-Security:max-age=31536000;includeSubDomains。这意味着两点:

接下来的一年(即31536000秒)浏览器只要向birdteam.net或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。比如,用户点击超链接或在地址栏输入http://birdteam.net,浏览器应自动将http转写成https,然后直接向https://birdteam.net/发送请求。

在接下来的一年中,如果birdteam.net服务器发送的TLS证书无效,用户不能忽略浏览器警告继续访问该网站。

简单来说,就是你开启HSTS,就意味着以后只能通过安全连接,访问所有*.birdteam.net的网站,否则无法访问。

而我只有主站开启了https,其它子站都是非https链接,所以不得不关闭此功能。

那如何关闭呢?

这是个坑,为什么这么说?

因为设置max-age=31536000时,其数值为缓存秒数,简单来说到了这个时间,才会解除限制,刚说了需要一整年,那么一整年的时间,网站都要使用安全链接才行。

有没有办法解除呢?还是有的,重新修改限制时间,改成1秒即可。

不过有个缺点,就是改完之后需要保留一段时间,确保访问过你网站的人,都重新读取了缓存时间,不然还要等上一年。

这是坑啊!

 

分类
运维教程

free的命令详解

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

语法

free [选项]

选项

[table id=9 /]

注意:Red Hat Enterprice Linux 6.7加入-h用于使用习惯单位显示。

效果

第一行的解释

[table id=10 /]

关系是total=used+free。

第二行的解释

-buffers/cache是指used的内存数:第一部分Mem行中的used-buffers-cached;

+buffers/cache是指free的内存数:第一部分Mem行中的free+buffers+cached。

可见-buffers/cache反映的是被程序实实在在吃掉的内存数,而+buffers/cache反映的是可以挪用的内存数。

第三行的解释

交换分区总数,已经使用,空余空间。

清空缓存

  1. echo 3>/proc/sys/vm/drop_caches
分类
运维教程

两台linux服务器上建立ip隧道

服务器server的地址192.168.18.251,服务器client的地址192.168.18.252。

建立隧道

在服务器server上执行以下命令:

  1. ip tunnel add ethn mode ipip local 192.168.18.251 remote 192.168.18.252

其中,ip tunnel为隧道操作,add ethn为添加隧道(ethn为隧道的虚拟网卡名,可自定义)

mode ipip设置隧道的模式为ipip。除ipip,还有很多其他模式,如gre/sit等等,以ipip和gre最为常见。

local指定本机的地址,remote指定对方的地址。

同样,在服务器client上执行以下命令:

  1. ip tunnel add ethm mode ipip local 192.168.18.252 remote 192.168.18.251

ethm为隧道的虚拟网卡名,可自定义。

至此,ip隧道已经建立起来了。

隧道地址

但是要想实现server和client通过ip隧道通信,还需要给server和client的隧道对应的网卡设置一个ip。

在服务器server上执行以下命令:

  1. ifconfig ethn 1.1.1.1

在服务器client上执行以下命令:

  1. ifconfig ethm 2.2.2.2

这里server和client的隧道网卡的ip可以随便设定。

可以在server和client上分别ifconfig看看,是不是多了ethn/ethm这个网卡。

添加路由

最后一步,设置一下路由规则。

在服务器server上执行以下命令:

  1. route add -host 2.2.2.2 dev ethn

让目的ip为2.2.2.2的数据包走ethn这个网卡。

在服务器client上执行以下命令:

  1. route add -host 1.1.1.1 dev ethm

让目的ip为1.1.1.1的数据包走ethm这个网卡。

测试隧道

在服务器server上执行以下命令:

  1. ping 2.2.2.2

在服务器client上执行以下命令:

  1. ping 1.1.1.1

如果可以ping通,说明ipip隧道已经成功建立了。

效果下图所示:

分类
建站经验

域名相关的知识点

下图是一个朋友发到群里的,我在经过其授权后,转载到本博中。

图片讲解了与域名有关的知识点,如果你想深入了解域名,建议通过下图结构深入了解。

如果你有任何问题,也可以在本页下面留言,热心的网友们会第一时间回复的!

分类
资源分享

使用jmeter进行网站的压力测试

之前有说过使用Apache自带的ab命令进行网站压力测试,不过输出信息不太直观,而且实际测试效果不是很好,今天推荐给大家另一款Apache的压力测试工具。

下载地址

[login]

apache-jmeter-3.2.zip

[/login]

操作步骤

解压上面的压缩包,进入到apache-jmeter-3.2\bin目录,找到jmeter.bat文件双击运行就行了(程序运行时需要java环境)

 

点击文件,选择打开,找到模板文件,下载地址:

[login]

模板文件.zip

[/login]

选择左侧的线程组,找到线程数后修改其值(此为访客数量)

然后修改下面循环次数,如果一直访问,勾选永远。如果访问10次,将1改成10就行了。

展开线程组选项后,点击http请求项,将birdteam.net一项,改成要测试的域名,然后点击上面的绿箭头开始运行。

查看结果

测试运行时或完成之后,就可以看到测试结果了,展开http请求项,就可以看到聚合结果树、聚合报告。

聚合结果树可以分别显示每个线程的访问情况。

  1. Label:每个JMeter的element都有一个Name属性,这里显示的就是Name属性的值;
  2. Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里会显示100;
  3. Average:平均响应时间。默认情况下是单个Request的平均响应时间,当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间;
  4. Median:中间位数,也就是50%用户响应时间;
  5. 90%Line:90%用户的响应时间;
  6. 95%Line:95%用户的响应时间;
  7. 99%Line:99%用户的响应时间;
  8. Min:最小响应时间;
  9. Max:最大响应时间;
  10. Error%:本次测试中出现错误的请求数量/请求总数;
  11. Throughput:吞吐总量。默认情况下表示每秒完成的请求数量,当使用了Transaction Controller时,也可以表示类似LoadRunner的Transaction per Second数量;
  12. Received KB/sec:每秒从服务器端接收到的数据量,相当LoadRunner中的Throughput/Sec;
  13. Sent KB/sec:每秒发送到服务器的数据量。
分类
博客教程

emlog的使用教程

程序介绍

emlog英文全名every memory blog,中文名为点滴记忆,程序作者那多记忆,最新版本为6.0(测试版本)正式版本为5.3.1。与WordPress不同的是,这是一款轻量级的博客程序,体积较小,功能强大,而且使用简单、方便。可以通过模板、插件拓展功能,并且具备强大的自定义功能。不过因为作者无原因AFK,所以这款博客的关注点越来越少,不过民间传闻很多大神还是接手开发,所以网上有很多的版本。本期教程使用官方正式版5.3.1作为讲解。

下载地址

官方下载地址需要注册论坛账号,为了方便大家下载,这里直接提供本站下载链接。本站下载页面为https://birdteam.net/forums/topic/5616。

博客安装

之前有发表过教程文章,放一个传送门,大家过去看吧!文章名称《如何上线及安装emlog博客

登录后台

网址是你的域名加上admin,如http://dupeng.birdteam.net/admin。

后台介绍

进入后台界面可以看到左侧的功能导航项,以及右侧站点信息,在站点信息上可以快速发布微语,点击输入框空白处即可。

发表文章

进入后台可点击左侧写文章,填写好文章的标题、内容、标签(可选)点击发布文章即可。

如需上传附件(例如图片)可以点击上传插入,按照指定大小、类型上传即可。

草稿管理

在草稿管理页面中,可以管理之前未编辑完成的文章,继续编辑,或者删除、发布!

文章管理

在此页面可以对已经发表的文章管理,可以删除或重新放入草稿箱,也可以做置顶操作,将文件重新分类等。

标签管理

在此页面可以管理写文章时添加的标签项。

分类管理

在此页面可以管理文章分类,如需添加分类,点击页面下的添加分类,按照提示填写即可。

评论管理

在此页面可以管理访客发的评论,可以选择删除、隐藏,部分评论还需要你的审核才可以显示!

微语管理

微语类似于轻微博功能,可以发布短语、表情、图片,还能进行管理!

侧边设置

侧边设置用于设置首页侧边栏显示项,可以点击加号添加到右侧的显示栏中,减少取消前台显示,并且可以拖动右侧分栏排序,最后点击保存组件排序即可。

导航设置

这里可以设置前台的导航栏,我们可以添加页面、分类、链接到导航栏。

页面管理

在页面管理中,我们可以添加独立页面,点击新建页面,像发表文章一样发布新页面。

链接管理

博客久而久之会形成博客圈,在这里可以添加朋友的网站地址,方便互访!

用户管理

可以添加用户,让更多的朋友和你一同运营这个博客。

数据管理

数据管理页面可以备份、恢复数据,以及更新缓存!

插件管理

可以通过插件增强博客功能,点击安装插件上传即可。启用时点击状态栏的小圈圈,绿色为已启动。

模板管理

想展现自己的特别?个性的模板是不可缺的,在此页面中可以上传模板并管理。

应用管理

emlog还有很多很强大的扩展功能等待你发现,在应用中心中尽情的尝试吧!

最后寄语

emlog真心是一款非常好用的轻量级博客,在博主踏入博客圈最初,使用的就是emlog程序,它陪伴博主走过很长的一段路途,期间博主也为emlog贡献了很多核心代码、模板插件。希望会有大神继续开发升级emlog这款轻量级博客,让它在博客程序这条路上继续走下去。

分类
建站经验

如何上线及安装emlog博客

身为Linux运维工程师,网站上线这种事必须要手到擒来!今天拿emlog博客程序举例,如何上线以及安装一款网站程序。

首先需要准备一个域名,我们已经将域名准备好,这里用dupeng.birdteam.net举例。

空间也需要准备好,这里已经开通空间的ftp文件传输功能,以及mysql数据库存储功能,账号密码分别为dupeng_bt/123qwe。

接下来我们开始上线吧!

检测域名可用

打开浏览器后,输入我们的域名dupeng.birdteam.net,显示如下页面说明域名可以使用:

使用上传程序

为了保证上传的成功率,我们用filezilla程序举例,下载安装过程不再讲述。打开程序界面后在输入框中依次填入:网站域名、ftp用户名和密码,然后回车即可。

删除初始文件

服务器上存在一些创建网站成功后的初始文件,需要删除这些文件,程序才能继续安装。在后边的窗口中找到index.html,右键点击然后选择删除。

上传网站程序

我们需要准备好emlog源码,下载地址点击这里。然后解压,进入src子目录,将所有的文件,拖拽到上图窗口中,程序就会自动上传。

安装网站程序

等待所有文件上传完成之后,通过浏览器打开域名就行了。在安装界面中,输入指定数据库用户名、数据库名、密码即可。下面的管理员信息,可以随意填写,不过设置完后,不要忘记就好。最后点击开始安装。

网站安装成功

看到如下页面,即代表网站已经安装成功了,我们可以通过域名访问,也可以登录后台去管理网站。

以上就是网站上线及安装的过程,如有任何问题,请在本页面下留言!

 

分类
运维教程

通过计划任务备份网站数据

之前发表过一篇网站加速的教程《将网站放到内存中运行》一些朋友给我发邮件说,照我的方法尝试了一下,还真有些效果,不过担心的是,毕竟内存是易失性存储设备(断电数据消失)如果云主机执行了重启操作,那网站不就没了吗?

为了避免数据丢失,我们来写一个计划任务,实现网站数据备份,命令如下:

  1. crontab -e

crontab -e用于编辑当前用户的计划任务,最好使用root用户来执行,可以提高任务执行的成功率。

然后在打开的窗口中填入如下的内容:

  1. 0 1 * * * rsync -aP –delete /dev/shm/birdteam.net /backup

分别解释一下:

0代表0分钟,1代表一小时,合起来就是凌晨一点整;

* * *是代表每天,第一个代表日,第二个代表月,第三个代表周;

rsync -aP中a代表保留原属性,P代表可断点续传;

–delete指原目录中如果文件被删除了,也会删除目标目录中的对应文件,这样可以避免因为卸载主题、插件造成残留文件;

/dev/shm/birdteam.net是网站目录,birdteam.net需要修改成你网站的目录;

/backup是备份目录,如果不存在可用mkdir命令创建。

如果云主机重启了,那如何恢复内存中的网站数据呢?执行如下命令,即可在每次重启后,自动将备份中网站数据恢复到内存中:

  1. echo “rsync -aP /backup/birdteam.net /dev/shm” >> /etc/rc.local