分类
运维教程

将网站放到内存中运行

在Linux系统中有一个神奇的目录/dev/shm,为什么说它神奇呢?因为这货直接挂载到内存中,也就是说,它并非使用硬盘块设备存储,而是直接写入数据到内存中,所以读写速度几乎是瞬间的。

今天教大家如何将自己网站,放到该目录中运行,其实非常简单,如果你运行的是apache,只需要修改下DocumentRoot就行了,大致代码如下:

  1. <VirtualHost *:80>
  2.     ServerName birdteam1.net
  3.     DocumentRoot /dev/shm/birdteam.net
  4. </VirtualHost>

如果你运行的是nginx,那么代码如下:

  1. server
  2. {
  3.     listen 80;
  4.     server_name birdteam.net www.birdteam.net;
  5.     index index.php index.html index.htm default.php default.htm default.html;
  6.     root /dev/shm/birdteam.net;
  7. }

然后将自己网站根目录中的所有文件,放到指定目录即可,是不是特别的简单,现在来感觉下飞速运行的网站吧!

分类
运维教程

通过Nginx实现图片防盗链

原创性质的图文站,经常会遇到这样的问题:盗链。现在的采集软件特别多,可以通过制定一系列的规则,将别人网站上的资源下载到本地或同步到自己的网站上。

文字型的复制十分简单,图片型的需要额外存储,所以很多采集站长会选择盗链的形式。何为盗链?简单来说,就是将你网站上图片的链接放到别人的网站上,这样在访问那个人的网站时,实际上在调用你网站的图片,不仅使用你的图片,还用你的流量带宽。

这种事情叔可忍婶都忍不了,今天来教大家如何通过Nginx实现图片防盗链。

首先在nginx的配置文件中找到如下内容:

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  2.     {
  3.         expires      30d;
  4.         access_log off;
  5.     }

第一行是文件类型,访问这些文件时按照下面的设置。

第三行是缓存过期时间,就是别人在访问你的网站时,会将这些文件下载到本地缓存中,再次访问时直接读缓存中的内容,加快网站打开速度。这些缓存资源保存30天,超过30天会删除本地的缓存,然后重新下载。

第四行为是否记录访问日志,off不记录。当别人访问你的静态资源时,不做记录,减少访问日志生成。

我们需要将上面的内容改为:

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
  2.         valid_referers none blocked *.birdteam.net server_names ~\.google\. ~\.baidu\.;
  3.         if ($invalid_referer) {
  4.                 rewrite ^/ http://birdteam.net/403.jpg;
  5.         }
  6.         expires      30d;
  7.         access_log off;
  8. }

第二行为判断访问网址,是否通过这个地址访问图片,同时包含谷歌、百度形式访问。红色字体处需替换;

第三行调用第二行的值,如果不是的话,执行第四行的操作;

第四行为返回图片,当遇到盗链时,将此图片返回。红色字体处需替换,同时需要准备以绿色字体命名的图片一张,放在网站根目录中。

分类
运维教程

CentOS安装Node.js

你需要在https://nodejs.org/en/download/下载最新Nodejs版本,本文以v6.11.1为例:

  1. cd /usr/local/src/
  2. https://nodejs.org/dist/v6.11.1/node-v6.11.1.tar.gz

解压源码:

  1. tar -zxf node-v6.11.1.tar.gz

编译安装:

  1. cd node-v6.11.1
  2. ./configure –prefix=/usr/local/node/6.11.1
  3. make
  4. make install

配置NODE_HOME进入profile编辑环境变量:

  1. vi /etc/profile

设置nodejs的环境变量,在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL一行上面添加如下内容:

  1. #set for nodejs
  2. export NODE_HOME=/usr/local/node/6.11.1
  3. export PATH=$NODE_HOME/bin:$PATH

:wq保存并退出,编译/etc/profile使配置生效:

  1. source /etc/profile

验证是否安装配置成功:

  1. node -v

如输出v6.11.1表示配置成功。

npm模块安装路径/usr/local/node/0.10.24/lib/node_modules/

Nodejs的官网提供了编译好的Linux二进制包,你也可以下载下来直接应用。

分类
运维教程

ab命令输出内容的简单讲解

上篇文章我们使用ab命令做了个简单测试,有些朋友可能对返回的结果不太理解,这里分别说下每个返回值的作用。

我们可以看到服务器采用的是nginx,域名是birdteam.net,端口是443。

关于请求url的相关信息,所在位置为网站根目录,请求大小为76487bytes。

Concurrency Level: 10  //并发请求数量

Time taken for tests: 62.541 seconds  //整个测试持续时间

Complete requests: 100  //完成的请求数

Failed requests: 12  //失败的请求数

Total transferred: 7665085 bytes  //整个场景中网络传输量

HTML transferred: 7648685 bytes  //整个场景中的HTML内容传输量

Requests per second: 1.60 [#/sec] (mean)  //吞吐速率,大家最关心的指标之一

Time per request: 6254.054 [ms] (mean)  //用户平均请求等待时间,大家最关心的指标之二

Time per request: 625.405 [ms] (mean, across all concurrent requests)  //服务器平均请求处理的时间,大家最关心的指标之三

Transfer rate: 119.69 [Kbytes/sec] received  //平均每秒网络上的流量,可以帮助排除是否有存在网络流量过大导致响应时间延长的问题

这段表示网络上消耗时间的分解。

这段是每个请求处理时间的分布情况(注意:重点看90%处理时间)

分类
运维教程

使用ab命令做网站压力测试

在这里我们以本站为例,模拟一下10个人同时请求100次的效果。

输入命令:

  1. ab -n 100 -c 10 https://birdteam.net

这里-n表示请求数,-c表示并发数。

执行效果如下:

 

还有一些数据:

强烈建议尽量在网站空闲时执行上面命令,且设置的数值尽量不要太大,以免影响正常访客浏览。

 

分类
运维教程

ab命令的简介及优缺点

ab的全称为apache bench。

ab的优点:这家伙是apache自带的测试工具,他不但可以帮助我们测试你本机apache的性能 ,还可以对其他类型的服务器进行网站访问压力测试,比如nginx/tomcat/IIS等,它也可以测试负载压力。

缺点:ab命令会给服务器造成非常高的负载,可能会造成目标服务器资源耗尽,严重时可能会导致死机,而且它没有图形化结果,不能监控,所以只能用作临时紧急任务和简单的测试。

ab的工作原理:ab会创建多个并发线程,模拟多个访问者同时对某一个url地址进行访问,测试的目标基于url。

安装httpd时,ab也会被同时安装,所以不需要再另行安装,使用ab -V命令可查看版本。

分类
运维教程

教你如何不用新分区添加swap

在之前的教程中我们提到过如何去添加一个swap分区,以及如何给你的swap进行扩容。在教程中我们使用的是新分区的方式,也就是新添加一块硬盘,或在原有硬盘空余空间的基础上新建一个分区,然后将其格式化为交换分区,最后进行挂载。

现在很多朋友使用的都是云主机,云主机一般不会设置swap(如某里云)购买之后一般使用的都是赠送的磁盘空间,且因为数据量小的原因并不会购买数据盘,导致没有可用分区转换为swap,有没有什么办法可以不用分区即可添加或扩容swap呢?今天就来教大家个方法!

首先使用dd命令生成一个固定大小的文件,文件的大小就是添加或扩容swap的大小:

  1. dd if=/dev/zero of=/opt/swap bs=1M count=2048

然后使用mkswap命令将其格式化:

  1. mkswap /opt/swap

使用swapon命令挂载其:

  1. swapon /opt/swap

看下一下,交换分区是不是变大了?

原理:Linux中皆是文件,swap对于linux系统来说也是一个文件,/opt/swap对于linux系统来说也是一个文件,这样概念就对等了。实际上这些文件就像一个笔记本,它是一个实体也是一个载体,我们是可以在笔记本中记录内容,如同可以在/opt/swap中写入数据的,你懂了吗?

分类
运维教程

简单聊swap交换分区

我们安装linux操作系统时,为了增强系统的稳定性,一般我们会分一个叫做swap分区的东东,那这个东东到底是什么,做什么用的呢?今天我们就来简单的聊一聊。

swap的中文名为交换分区,换成windows的说法就是虚拟内存,它是将硬盘的一部分虚拟成内存使用。当真实的物理内存用满之后,系统就会出现不稳定的情况,例如宕机。如果有了虚拟内存,则多出来的数据即可写入到其中,保障系统的稳定性。windows系统默认都是自动分配虚拟内存的,查看方法这里都不说了。

linux操作系统一般分为个人使用和生产使用,生产环境中会要求分swap分区,以保证服务器的稳定性。

swap设置的大小很有学问,一般是物理内存的两倍(很多人说1.5倍,我感觉两倍更好算)也就是说,当你是512M的内存时,你要分1G的swap。swap是有上限的,官方的建议值为2G,毕竟swap是设置在硬盘上,受硬盘速度的影响,太多的swap是无用的。

最后说下swap的查看命令,如图:

分类
运维教程

解决centos中python升级后输入法不可用问题

很多朋友反映,升级完python之后,自带的iBus输入法图标不见了,打字时没有候选框,原来iBus也不支持python2.7。 分别用vi打开下面两个文件,找到exec python那一行,把exec python改为exec python.bak后保存退出。iBus在重启后就会恢复正常了!

  1. vi /usr/bin/ibus-setup
  2. vi /usr/libexec/ibus-ui-gtk
分类
运维教程

解决centos中python升级后yum不可用问题

系统Python软链接指向Python2.7版本后,因yum是不兼容Python 2.7的,故yum不能正常工作,我们需要指定yum的Python版本为升级前的版本

  1. vi /usr/bin/yum

将文件头部的

  1. #!/usr/bin/python

改成

  1. #!/usr/bin/python.bak