Archive for June, 2012

作者:AngryFox 分类: Uncategorized June 25th, 2012 暂无评论

ubuntu时用 sudo -s 切换到root shell
[PHP]安装SSH,允许远程SFTP
1. 首先在服务器上安装ssh的服务器端。
$ sudo aptitude install openssh-server
2. 启动ssh-server。
$ /etc/init.d/ssh restart
3. 确认ssh-server已经正常工作。
$ netstat -tlp
tcp6 0 0 *:ssh *:* LISTEN -
看到上面这一行输出说明ssh-server已经在运行了。
4. 在客户端通过ssh登录服务器。假设服务器的IP地址是192.168.0.103,登录的用户名是hyx。
$ ssh -l hyx 192.168.0.103
接下来会提示输入密码,然后就能成功登录到服务器上了
[/php]
配置Ubuntu的LNMP = Linux + Nginx + Mysql + Php与大家熟知的LAMP相似,都是一种Web服务器架构,所不同的是这里使用了Nginx代替Apache。
1、安装Nginx

sudo apt-get install nginx

安装完成后配置Nginx,默认的安装结构是:

所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
程序文件在/usr/sbin/nginx
日志放在了/var/log/nginx中
并已经在/etc/init.d/下创建了启动脚本nginx
默认的虚拟主机的目录设置在了/var/www/nginx-default

sudo gedit /etc/nginx/sites-available/default

注意:修改网站默认目录为 /var/www/nginx/nginx-default,当然你也可以修改为/var/www
location /{root /var/www/nginx-default;index index index.php index.html index.htm;}2、检查Nginx是否安装成功。

启动Ngnix:

sudo /etc/init.d/nginx start

访问http://localhost,如果正常的话应该显示 Welcome to Nginx !,如果显示403,那就是接着修改网站默认目录。
3、配置PHP+Mysql

安装PHP和Mysql :

sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql

注意:在安装过程中会要求创建Mysql 的root用户密码,请务必牢记数据库Mysql的超级密码。

安装 FastCgi :

sudo apt-get install spawn-fcgi

配置 Nginx :

sudo gedit /etc/nginx/sites-available/default

注释掉其中的PHP部分(去掉前面的#号)

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;

include /etc/nginx/fastcgi_params;

}

注意:务必注意上面的空格以及目录名称。

重启Nginx:

/etc/init.d/nginx stop

sudo /etc/init.d/nginx start

注意:第二行的sudo不能少,否则还是会出问题。

启动 Fastcgi php:

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

注意:如果出现错误 Address already in use 之类的,网上所说是由于Apache占用了98端口,如果你安装过Apache,那请卸载掉再重试。

我自己的电脑没有安装过Apache,也找不出问题,因此我修改了9000这个端口为9001,同样上面的Nginx配置文件中也要修改。重新启动 Fastcgi php,成功。

创建测试 phpinfo:

sudo gedit /var/www/nginx-default/info.php

输入 保存,关闭。

打开 http://localhost/info.php,如果一切正常的话会显示PHP的属性页面。
4、安装XCache

下载安装XCache :

sudo apt-get install php5-xcache

然后打开XCache的配置文件:

/etc/php5/conf.d/xcache.ini

复制全部,准备编辑php.ini

sudo gedit /etc/php5/cgi/php.ini

粘贴至php.ini文件中。

重启php-cgi :

sudo killall -HUP php-cgi

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

注意:在info.php中查看 XCache 模块。(要能搜索到多个xcache,如果只有一个,那必然有问题。)
5、安装Zend Optimizer

安装Zend 区分PHP版本,因此我会在下一篇文章中专门贴出来。而且ubuntu终端中安装 nginx 版本是0.75,Nginx官方最新稳定版为Nginx1.0.10,所以在讲完Zend Op的安装后,会再说一下如何平稳升级Nginx到最新版。

作者:AngryFox 分类: Uncategorized June 25th, 2012 暂无评论
select version(),current_date;
show processlist;
show status;
show status like "uptime%";
show grants;
show grants for 'admin'@'localhost';
show variables;
show engines;
show variables like "chara%";
show characeter set;
show slave status \G;
show privileges;
show logs;
show engine bdb logs;
show warnings;
show errors;
show index from table;
select host,user,password from mysql.user;
create database data1;
create database data2 default character set gb2312;
show create database data2;
show create table data2;
grant all on data2.* to data2@localhost identified by "123456";
grant all on data2.* to data2@"%" identified by "123456";
grant all on *.* to admin@"%" identified by "123456" with grant option;
source /opt/back/data2.sql; #导入备份的数据库
shell# mysql -uroot -p < /opt/back/data2.sql #导入备份的数据库
shell#mysqldump -uroot -p data2 > /opt/back/data2.sql #导出数据库
shell#mysqldump -uroot -p --default-character-set=gb2312 data2 > /opt/back/data2.sql
flush tables with read lock;
grant usage on *.* to abc@localhost;#abc账户只能有登陆权限,连接,没有其他权限,
DELETE FROM mysql.user WHERE User = '';
DELETE FROM mysql.user WHERE Host='localhost' AND User='';
drop user 'user'@'host';
show plugins;
show variables like 'have_ndbcluster';#看是单机还是集群
show variables like 'log%';
6、查看Mysql当前有哪些触发器和存储过程
mysql> show triggers;
mysql> show procedure status;
mysql的数据备份操作
主从配置。主库服务,从库用来备份。
全备份选择在服务器压力最小的时间段。
增量备份根据实际情况作每小时一次,每天或者每周一次全备份
备份文件同步到备份盘柜上。
1.最简单的可以写脚本来做
通过调用mysqldump,mysqlhotcopy命令
dump会锁表,hotcopy不锁表
当库比较大,比如几十G的时候,不再合适。
2 LVM 做数据分区快照
3开源备份工具 XtraBackup
4商业备份工具 InnoDB hotbackup
5冷备,停止服务,直接备份数据文件所在目录。 
作者:AngryFox 分类: Uncategorized June 19th, 2012 暂无评论
    /**
     * 删除文件夹
     * @param type $dir
     */
    function rrmdir ($dir)
    {
        if (is_dir ($dir)) {
            $objects = scandir ($dir);
            foreach ($objects as $object)
            {
                if ($object != "." && $object != "..") {
                    if (filetype ($dir . "/" . $object) == "dir")
                        rrmdir ($dir . "/" . $object); else
                        unlink ($dir . "/" . $object);
                }
            }
            reset ($objects);
            rmdir ($dir);
        }
    }
作者:AngryFox 分类: Uncategorized June 19th, 2012 暂无评论
function authcode ($string, $operation = 'DECODE', $key = '', $expiry = 0)
{

    $ckey_length = 4; // 随机密钥长度 取值 0-32;
    // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。
    // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方
    // 当此值为 0 时,则不产生随机密钥

    $key = md5 ($key ? $key : UC_KEY);
    $keya = md5 (substr ($key, 0, 16));
    $keyb = md5 (substr ($key, 16, 16));
    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr ($string, 0, $ckey_length) : substr (md5 (microtime ()), -$ckey_length)) : '';

    $cryptkey = $keya . md5 ($keya . $keyc);
    $key_length = strlen ($cryptkey);

    $string = $operation == 'DECODE' ? base64_decode (substr ($string, $ckey_length)) : sprintf ('%010d', $expiry ? $expiry + time () : 0) . substr (md5 ($string . $keyb), 0, 16) . $string;
    $string_length = strlen ($string);

    $result = '';
    $box = range (0, 255);

    $rndkey = array ();
    for ($i = 0; $i <= 255; $i++)
    {
        $rndkey[$i] = ord ($cryptkey[$i % $key_length]);
    }

    for ($j = $i = 0; $i < 256; $i++)
    {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }

    for ($a = $j = $i = 0; $i < $string_length; $i++)
    {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        $result .= chr (ord ($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    }

    if ($operation == 'DECODE') {
        if ((substr ($result, 0, 10) == 0 || substr ($result, 0, 10) - time () > 0) && substr ($result, 10, 16) == substr (md5 (substr ($result, 26) . $keyb), 0, 16)) {
            return substr ($result, 26);
        } else {
            return '';
        }
    } else {
        return $keyc . str_replace ('=', '', base64_encode ($result));
    }
}

获得混淆串

 /**
     * 获得加密随机码
     *
     * @return string
     */
    function getSalt ()
    {
        return substr (uniqid (rand ()), -6);
    }

    /**
     * 加密密码
     *
     * @param string $password
     * @param string $salt
     * @return string
     */
    function formatPassword ($password, $salt)
    {
        return md5 (md5 ($password) . $salt);
    }
作者:AngryFox 分类: Uncategorized June 19th, 2012 暂无评论

先var_export变量,然后写文件,最后系统读配置文件,后台可以重新修改配置文件

   $_data = "<?php\r\n /**\r\n Cachefile auto created, created on GMT+8 " .
            strftime ("%Y-%m-%d %H:%M:%S", time ()) . " , do not modify it!\r\n*/ \r\nreturn " .
            var_export ($config, true) . ";\r\n";
    $fp = fopen (CONFIG, 'w');
    fwrite ($fp, $_data);
    fclose ($fp);
作者:AngryFox 分类: Uncategorized June 15th, 2012 暂无评论

在php输出json的过程中,php_decode不能解析,var_dump为NULL.
用var_dump发现头部多出6个字节

	for($i=0; $i<strlen($rs);$i++){
	      echo ord($rs[$i])."<br>";
	}

去掉头部的多余字符,解析OK,一般是utf8输出的头,为UTF8时多出三个字节239 187 191
去掉utf8-bom的代码

if (isset ( $_GET ['dir'] )) { //config the basedir
  $basedir = $_GET ['dir'];
} else {
  $basedir = '.';
}    

$auto = 1;    

checkdir ( $basedir );    

function checkdir($basedir) {
  if ($dh = opendir ( $basedir )) {
    while ( ($file = readdir ( $dh )) !== false ) {
      if ($file != '.' && $file != '..') {
        if (! is_dir ( $basedir . "/" . $file )) { // 如果是文件
          echo "filename: $basedir/$file " . checkBOM ( "$basedir/$file" ) . " <br>";
        } else {
          $dirname = $basedir . "/" .$file; // 如果是目录
          checkdir ( $dirname ); // 递归
        }
      }
    }
    closedir ( $dh );
  }
}    

function checkBOM($filename) {
  global $auto;
  $contents = file_get_contents ( $filename );
  $charset [1] = substr ( $contents, 0, 1 );
  $charset [2] = substr ( $contents, 1, 1 );
  $charset [3] = substr ( $contents, 2, 1 );
  if (ord ( $charset [1] ) == 239 && ord ( $charset [2] ) == 187 && ord ( $charset [3] ) == 191) { // BOM 的前三个字符的ASCII 码分别为 239 187 191
    if ($auto == 1) {
      $rest = substr ( $contents, 3 );
      rewrite ( $filename, $rest );
      return ("<font color=red>BOM found, automatically removed.</font>");
    } else {
      return ("<font color=red>BOM found.</font>");
    }
  } else
    return ("BOM Not Found.");
}    

function rewrite($filename, $data) {
  $filenum = fopen ( $filename, "w" );
  flock ( $filenum, LOCK_EX );
  fwrite ( $filenum, $data );
  fclose ( $filenum );
}
作者:AngryFox 分类: Uncategorized June 13th, 2012 暂无评论

在线地址:https://github.com/liuxd/MyTranslation/blob/master/translation/memcached-1.4.man
memcached 1.4.2
-p 监听的TCP端口(默认: 11211)
-U 监听的UDP端口(默认: 11211, 0表示不监听)
-s 用于监听的UNIX套接字路径(禁用网络支持)
-a UNIX套接字访问掩码,八进制数字(默认:0700)
-l 监听的IP地址。(默认:INADDR_ANY,所有地址)
-d 作为守护进程来运行。
-r 最大核心文件限制。
-u 设定进程所属用户。(只有root用户可以使用这个参数)
-m 单个数据项的最大可用内存,以MB为单位。(默认:64MB)
-M 内存用光时报错。(不会删除数据)
-c 最大并发连接数。(默认:1024)
-k 锁定所有内存页。注意你可以锁定的内存上限。
试图分配更多内存会失败的,所以留意启动守护进程时所用的用户可分配的内存上限。
(不是前面的 -u 参数;在sh下,使用命令”ulimit -S -l NUM_KB”来设置。)
-v 提示信息(在事件循环中打印错误/警告信息。)
-vv 详细信息(还打印客户端命令/响应)
-vvv 超详细信息(还打印内部状态的变化)
-h 打印这个帮助信息并退出。
-i 打印memcached和libevent的许可。
-P 保存进程ID到指定文件,只有在使用 -d 选项的时候才有意义。
-f 块大小增长因子。(默认:1.25)
-n 分配给key+value+flags的最小空间(默认:48)
-L 尝试使用大内存页(如果可用的话)。提高内存页尺寸可以减少”页表缓冲(TLB)”丢失次数,提高运行效率。
为了从操作系统获得大内存页,memcached会把全部数据项分配到一个大区块。
-D 使用 作为前缀和ID的分隔符。
这个用于按前缀获得状态报告。默认是”:”(冒号)。
如果指定了这个参数,则状态收集会自动开启;如果没指定,则需要用命令”stats detail on”来开启。
-t 使用的线程数(默认:4)
-R 每个连接可处理的最大请求数。
-C 禁用CAS。
-b 设置后台日志队列的长度(默认:1024)
-B 绑定协议 – 可能值:ascii,binary,auto(默认)
-I 重写每个数据页尺寸。调整数据项最大尺寸。

作者:AngryFox 分类: Uncategorized June 3rd, 2012 暂无评论

ffmpeg 3.1.3编译通过 2016-09-17

mkdir flvtool
yum install -y subversion  libvorbis  libvorbis-devel libogg libogg-devel zlib-devel  libtool
cd flvtool
wget   http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz/download
tar xvf lame-3.98.4.tar.gz
cd lame-3.98.4
./configure
make
make install
cd ..
wget http://prdownloads.sourceforge.net/libpng/libpng-1.5.1.tar.gz?downloadks-kr-2
tar xvf libpng-1.5.1.tar.gz
cd libpng-1.5.1
./configure
make
make install
cd ..
wget http://sourceforge.net/projects/enlightenment/files/imlib2-src/1.4.4/imlib2-1.4.4.tar.bz2/download
tar xvf imlib2-1.4.4.tar.bz2
cd imlib2-1.4.4
./configure --without-x
make
make install
ln -s /usr/include/freetype2/freetype/ /usr/include/freetype
cd ..
wget  http://downloads.xvid.org/downloads/xvidcore-1.2.2.tar.gz
tar xvf xvidcore-1.2.2.tar.gz
cd xvidcore/build/generic
./configure
make
make install
cd ../../
最新版ffmpeg需要1.2的yasm版本
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
//wget http://www.tortall.net/projects/yasm/releases/yasm-1.1.0.tar.gz
tar xvf yasm-1.1.0.tar.gz
cd yasm-1.1.0
./configure
make
make install
下载最新的包

http://download.videolan.org/x264/snapshots/

tar xvf x264-snapshot-20110213-2245.tar.bz2
cd x264-snapshot-20110213-2245
./configure --prefix=/usr/local --enable-shared
make
make install
cd ..
wget  http://download.videolan.org/pub/videolan/libdca/0.0.5/libdca-0.0.5.tar.bz2
tar xvf libdca-0.0.5.tar.bz2
cd libdca-0.0.5
./configure
make
make install
cd ..
wget   http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
tar xvf a52dec-0.7.4.tar.gz
cd  a52dec-0.7.4
./configure
make
make install
cd ..
wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.bz2
tar xvf faad2-2.7.tar.bz2
cd faad2-2.7
./configure  --with-mp4v2
make
make install
cd ..
wget http://downloads.sourceforge.net/faac/faac-1.28.tar.bz2
tar xvf faac-1.28.tar.bz2
cd faac-1.28
./bootstrap
./configure
make
make install
cd ..
wget http://sourceforge.net/projects/opencore-amr/files/opencore-amr/0.1.2/opencore-amr-0.1.2.tar.gz/download
tar xvf opencore-amr-0.1.2.tar.gz
cd opencore-amr-0.1.2
./configure
make
make install
cd ..
wget  http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2
tar xvf amrnb-7.0.0.2.tar.bz2
cd amrnb-7.0.0.2
./configure
make
make install
cd ..
wget  http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2
tar xvf amrwb-7.0.0.3.tar.bz2
cd amrwb-7.0.0.3
./configure
make
make install
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg/
./configure --prefix=/usr/local   --enable-gpl  --enable-shared   --enable-libmp3lame  --enable-libopencore-amrnb  --enable-libopencore-amrwb  --enable-libvorbis --enable-libfaac  --enable-libx264 --pkg-config=/bin/true --extra-ldflags=-lx264  --disable-ffserver  --disable-ffplay  --enable-nonfree  --enable-version3  --extra-ldflags=-ldl
make
make install
vim  /etc/ld.so.conf.d/ffmpeg.conf
#在里面加入:usr/local/lib,这个目录,为ffmpeg 安装后libavdevice.so.52 等lib 文件所在目
录。
ldconfig –v
ffmpeg正常安装后执行ffmpeg时出现如下错误:
ffmpeg: error while loading shared libraries: libavdevice.so.53: cannot open shared object file: No such file or directory

解决办法:
vi /etc/ld.so.conf
加入:/usr/local/lib
执行ldconfig