分类: Linux

  • linux磁盘清理后不释放空间还是100%

    通过df -h查看磁盘满了 ,删除文件有,空间没有被立即释放, 通过查阅相关资料,了解到被删除文件被执行rm命令时,如果有进程操作该文件,该文件不会被立马删除,而是被标记为deleted;直到操作该文件的所有进程都结束,该文件才会被删除。 delete状态下的文件不可见,使用ll命令时也看不到,但实实在在占用了磁盘空间。可以通过执行下列命令查看被标记为delete的文件清单:

    lsof | grep deleted

    解决办法:kill -9 PID   把进程删掉就能释放空间。

  • expect的安装

    Expect是在Tcl基础上创建起来的,它还提供了一些Tcl所没有的命令,它可以用来做一些linux下无法做到交互的一些命令操作,在远程管理方面发挥很大的作用。 (更多…)

  • apache allow&deny详解

    Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权。

    最常用的是:

    Order Deny,Allow

    Allow from All

    PS:“Deny,Allow”中间只有一个逗号,也只能有一个逗号,有空格都会出错;单词的大小写不限。上面设定的含义是先设定“先检查禁止设定,没有禁止的全部允许”,而第二句没有Deny,也就是没有禁止访问的设定,直接就是允许所有访问了。这个主要是用来确保或者覆盖上级目录的设置,开放所有内容的访问权。

    按照上面的解释,下面的设定是无条件禁止访问:

    Order Allow,Deny

    Deny from All

    如果要禁止部分内容的访问,其他的全部开放:

    Order Deny,Allow

    Deny from ip1 ip2

    或者

    Order Allow,Deny

    Allow from all

    Deny from ip1 ip2

    apache会按照order决定最后使用哪一条规则,比如上面的第二种方式,虽然第二句allow允许了访问,但由于在order中allow不是最后规则,因此还需要看有没有deny规则,于是到了第三句,符合ip1和ip2的访问就被禁止了。注意,order决定的“最后”规则非常重要

    下面是测试的例子:

    ——————————–

    Order deny,allow

    allow from all

    deny from 219.204.253.8

    #全部都可以通行

    ——————————-

    Order deny,allow

    deny from 219.204.253.8

    allow from all

    #全部都可以通行

    ——————————-

    Order allow,deny

    deny from 219.204.253.8

    allow from all

    #只有219.204.253.8不能通行

    ——————————-

    Order allow,deny

    allow from all

    deny from 219.204.253.8

    #只有219.204.253.8不能通行

    ——————————-

    ——————————-

    Order allow,deny

    deny from all

    allow from 219.204.253.8

    #全部都不能通行 

    ——————————-

    Order allow,deny

    allow from 219.204.253.8

    deny from all

    #全部都不能通行 

    ——————————-

    Order deny,allow

    allow from 219.204.253.8

    deny from all

    #只允许219.204.253.8通行 

    ——————————-

    Order deny,allow

    deny from all

    allow from 219.204.253.8

    #只允许219.204.253.8通行 

    ——————————-

    ——————————–

    Order deny,allow

    #全部都可以通行(默认的)

    ——————————-

    Order allow,deny

    #全部都不能通行(默认的)

    ——————————-

    Order allow,deny

    deny from all

    #全部都不能通行

    ——————————-

    Order deny,allow

    deny from all

    #全部都不能通行

    ——————————-

    对于上面两种情况,如果换成allow from all,则全部都可以通行!

    ——————————-

    Order deny,allow

    deny from 219.204.253.8

    #只有219.204.253.8不能通行

    ——————————-

    Order allow,deny

    deny from 219.204.253.8

    #全部都不能通行

    ——————————-

    Order allow,deny

    allow from 219.204.253.8

    #只允许219.204.253.8通行

    ——————————-

    Order deny,allow

    allow from 219.204.253.8

    #全部都可以通行

    ——————————-

    ——————————-

    order deny,allow

    allow from 218.20.253.2

    deny from 218.20

    #代表拒绝218.20开头的IP,但允许218.20.253.2通过;而其它非218.20开头的IP也都允许通过。

    ——————————-

    order allow,deny

    allow from 218.20.253.2

    deny from 218.20

    #和上面的差不多,只是掉换的order语句中的allow、deny先后顺序,但最终结果表示全部都拒绝!

    总结:

    影响最终判断结果的只有两点:

    1. order语句中allow、deny的先后顺序;

    2. allow、deny语句中各自包含的范围。

    判断原则分4步

    1. 首先判断默认的;

    2. 然后判断逗号前的;

    3. 最后判断逗号后的;

    4. 最终按顺序叠加而得出判断结果。

  • Centos 安装 NodeJS

    Centos 安装 NodeJS
    准备命令
    yum -y install gcc make gcc-c++ openssl-devel wget
    下载源码
    wget http://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x64.tar.gz
    tar -zvxf node-v0.12.0-linux-x64.tar.gz
    编译及安装:
    make && make install
    验证是否安装配置成功:
    node -v

  • SSH认证免密码登录

    客户端:

    #ssh-keygen -t rsa

    Generating public/private rsa key pair.

    Enter file in which to save the key (/Users/hisway/.ssh/id_rsa):

    Enter passphrase (empty for no passphrase):

    Enter same passphrase again:

    Your identification has been saved in /Users/hisway/.ssh/id_rsa.

    Your public key has been saved in /Users/hisway/.ssh/id_rsa.pub.

    The key fingerprint is:

    0d:24:c6:8d:f0:d9:b2:01:08:67:89:8a:5f:20:8e:b7 hisway@hisway.lan

    The key’s randomart image is:

    +–[ RSA 2048]—-+

    |.ooooooo.        |

    |oo+  +o=.        |

    |=. .  = o        |

    |+.. .  + o       |

    | o o  . S .      |

    |  E              |

    |                 |

    |                 |

    |                 |

    +—————–+

    #scp /Users/hisway/.ssh/id_rsa.pub  root@162.243.*.*:/home/root/id_rsa.pub

    服务端:

    #cat id_rsa.pub >>/root/.ssh/authorized_keys

    # vi /etc/ssh/sshd_config

    RSAAuthentication yes

    #RSA认证

    PubkeyAuthentication yes

    #开启公钥验证

    AuthorizedKeysFile    .ssh/authorized_keys

    #验证文件路径

    PasswordAuthentication no

    #禁止密码认证

    PermitEmptyPasswords no

    #禁止空密码

    UsePAM no

    #禁用PAM

    最后保存,重启

    #

    service sshd restart

     

  • Namecheap买的PositiveSSL证书的激活使用

    网购星期一剁手的六块钱ssl证书一直放着没动,今天有空去激活了,给9块钱的curl.xyz域名加上了https,囧~
    PositiveSSL认证是Comodo的入门级产品,PositiveSSL只对你的域名所有权进行认证,PositiveSSL已经被几乎所有流行的浏览器支持,只要你的PositiveSSL认证正常,用浏览器打开你提供的https网页就像普通的http网页一样,浏览器不会弹出安全警告。
    ox01 
    在帐户的ssl列表中选择未曾使用过的SSL认证服务,点击右边的Active链接,开始申请激活你的SSL认证,接下来我们要发送一个认证签名请求文件给namecheap来完成激活过程,通常情况下,选择apache+openssl类型的签名即可,如果网络服务器不是apache或者apache兼容的服务器,可以在列表里面选择适合的认证类型。
    ox02
    ssh 到域名所在的服务器,Namecheap SSL要求是生成2048位的密钥文件:
    openssl genrsa -out privkey.key 2048
    生成证书请求文件:
    openssl req -new -key privkey.key -out cert.csr
    执行以上命令后,会要求你填写基本信息,例如国家、邮箱等。其中有个需要特别注意到地方是Common Name,必须填写你的域名,而且不能有大写字母,否则认证申请会失败。另外在制作CSR文件和私钥的时候,会有一步询问你私钥的密码,可以不输入。
    用命令:cat cert.csr和cat privkey.key 能看到刚刚生成的CSR和Key文件内容了。其中SCR文件内容就是我们刚刚要激活SSL证书要用到的。
    ox03
    把这个csr文件的内容复制到Namecheap刚才申请时页面上的文本输入框里面,并且点击next,进行下一步。
    接下来要求你提供一个能表明你是域名所有者的邮箱来进行验证,你可以从他提供的选项中选择一个,确保你的邮箱可以正常接收邮件。选择一个邮箱后,点击next,你的申请就算提交了,下面需要等授权公司Comodo来验证你是域名所有者身份。
    收到邮件后点击邮箱里面的 here 链接,并且输入下面的验证码,提交给Comodo即可。接着继续等,comodo会将生成的ssl证书文件发送给你。
    ox04
    将自己Key文件,外加刚刚收到的.crt,共两个文件一同上传到VPS主机的某一个文件夹当中。编辑Nginx配置文件,在Server中主要是添加以下代码:
    listen 443;
    ssl on;

    ssl_certificate /root/curl_xyz.crt;

    ssl_certificate_key /root/privkey.key;

    ssl_session_timeout 5m;
    重启Nginx完成。

  • 使用 Vagrant 搭建跨平台开发环境

    Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用。可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员,成员可以在自己的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行。

    安装步骤1. 安装 VirtualBox

    虚拟机还是得依靠 VirtualBox 来搭建,免费小巧。
    下载地址:https://www.virtualbox.org/wiki/Downloads

    2. 安装 Vagrant

    下载地址:http://downloads.vagrantup.com/ 根据提示一步步安装。

    此外,还得下载官方封装好的基础镜像:
    Ubuntu precise 32 VirtualBox http://files.vagrantup.com/precise32.box
    Ubuntu precise 64 VirtualBox http://files.vagrantup.com/precise64.box

    其他系统的镜像下载:http://www.vagrantbox.es/

    3. 添加镜像到 Vagrant

    假设我们下载的镜像存放路径是 ~/box/precise64.box,在终端里输入:
    $ vagrant box add ubuntu64 ~/box/precise64.box

    ubuntu64 是我们给这个 box 命的名字,~/box/precise64.box 是 box 所在路径

    4. 初始化开发环境

    创建一个开发目录(比如:~/dev),你也可以使用已有的目录,切换到开发目录里,用  ubuntu64 镜像初始化当前目录的环境:
    $ cd ~/dev # 切换目录
    $ vagrant init  ubuntu64 # 初始化

    $ vagrant up # 启动环境

    你会看到终端显示了启动过程,启动完成后,我们就可以用 SSH 登录虚拟机了,剩下的步骤就是在虚拟机里配置你要运行的各种环境和参数了。
    $ vagrant ssh # SSH 登录
    $ cd /vagrant # 切换到开发目录,也就是宿主机上的 `~/dev`

    ~/dev 目录对应虚拟机中的目录是 /vagrant

    5. 其他设置

    Vagrant 初始化成功后,会在初始化的目录里生成一个 Vagrantfile 的配置文件,可以修改配置文件进行个性化的定制。

    Vagrant 默认是使用端口映射方式将虚拟机的端口映射本地从而实现类似 http://localhost:80 这种访问方式,这种方式比较麻烦,新开和修改端口的时候都得编辑。相比较而言,host-only 模式显得方便多了。打开 Vagrantfile,将下面这行的注释去掉(移除 #)并保存:
    config.vm.network :private_network, ip: “192.168.33.10”

    重启虚拟机,这样我们就能用 192.168.33.10 访问这台机器了,你可以把 IP 改成其他地址,只要不产生冲突就行。

    6. 打包分发

    当你配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:
    $ vagrant package
    打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。

    7. 常用命令
    $ vagrant init # 初始化

    $ vagrant up # 启动虚拟机

    $ vagrant halt # 关闭虚拟机

    $ vagrant reload # 重启虚拟机

    $ vagrant ssh # SSH 至虚拟机

    $ vagrant status # 查看虚拟机运行状态

    $ vagrant destroy # 销毁当前虚拟机

    更多内容请查阅官方文档 http://docs.vagrantup.com/v2/cli/index.html

    8. 注意事项

    使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的情况,是由于静态文件缓存造成的。需要对虚拟机里的 Apache/Nginx 配置文件进行修改:
    # Apache 配置添加:

    EnableSendfile off

    # Nginx 配置添加:
    sendfile off;

  • Kloxo 升级php

    背景:
    ThinkPHP3.2 需要5.3+的php版本,而kloxo的php还是5.2.17的 
    kloxo官方目前可用的PHP版本:
    php-pdo-5.2.17-13
    php-5.2.17-13
    php-mysql-5.2.17-13
    php-devel-5.2.17-13
    php-pear-1.4.9-8.el5
    php-xml-5.2.17-13
    php-common-5.2.17-13
    php-cli-5.2.17-13
    lxphp-5.2.1-400
    php-imap-5.2.17-13
    php-mbstring-5.2.17-13
    php-gd-5.2.17-13
    php-mcrypt-5.2.17-13
    所以需要手动升级
     
    过程:
    • 移除掉PHP
    yum remove php
    • 移除掉公共包
    yum remove php-common
    • 安装php 5.3
    yum install php53
    • 安装mysql支持库
    yum install php53-mysql
    不然web会提示mysql不可用
    • 安装xml支持库
    yum install php53-xml
    不然会出现找不到dom啥的
    • 安装gd支持库
    yum install php53-gd
    不然验证码插件使用不了
  • Linux Crontab 定时任务 命令详解

    一.  Crontab 介绍

            crontab命令的功能是在一定的时间间隔调度一些命令的执行。

     1.1 /etc/crontab 文件

           /etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab

     如: (更多…)

  • vsftpd服务器

    一、简介
           vsftpd 是一个 UNIX 类操作系统上运行的FTP服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征,FTP服务器对用户的管理,在默认的情况下是根据 /etc/passwd及/etc/group 来进行的,所以我们一定要了解Linux系统用户和用户组的管理,用户和用户组的管理是一切应用的的基础

    (更多…)