Mysql Got error 28 from storage engine 解决方法

报错信息

问题原因

磁盘空间不足导致。根目录空间已满,如下图所示:

解决方法

查看mysql配置文件my.cnf中的tmpdir参数,使得指向的目录具有足够空间。

使用YUICompressor压缩JS/CSS文件

[安装JDK]

1.下载地址:http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe

2.设置环境变量
JAVA_HOME:C:\Program Files\Java\jdk1.7.0_25
PATH:%JAVA_HOME%\bin;

安装配置YUICompressor

1.下载地址:http://www.36ria.com/wp-content/plugins/download-monitor/download.php?id=211

2.双击 install.cmd 安装

3.右击js文件,会出现:Process with YUICompressor

或者,在CMD中执行:java -jar yuicompressor-2.4.2.jar -o test\build\example_btmp.min.js test\build\example_btmp.js

通用参数:
-h, –help 显示帮助信息
–type 指定输入文件的文件类型
–charset 指定读取输入文件使用的编码
–line-break
在指定的列后插入一个 line-bread 符号
-v, –verbose 显示info和warn级别的信息
-o 指定输出文件。默认输出是控制台。

JavaScript专用参数:
–nomunge 只压缩, 不对局部变量进行混淆。
–preserve-semi 保留所有的分号。
–disable-optimizations 禁止优化。

使用ANT合并JS/CSS文件

[安装配置ANT]

1.下载地址:http://ant.apache.org/bindownload.cgi

2.设置环境变量:
ANT_HOME:D:\ant\apache-ant-1.9.2
PATH:%ANT_HOME%\bin;

[合并文件]

1.编辑:build.xml

<project name="core" basedir="." xmlns:ac="antlib:net.sf.antcontrib" default="concat" >
    <description>Build File</description>

    <dirname property="core.current.dir" file="${ant.file.core}"/>
	<property name="build.dir" value="${current.dir}/../build"/>
	<property name="version" value="1.0"/>
    <property name="charset" value="gbk"/>

    <property name="core.build.dir" value="${build.dir}/"/>
    <property name="core.src.dir" value="${core.current.dir}"/>

    <target name="concat">
        <concat destfile="${core.build.dir}/example_btmp.js" encoding="${charset}" outputencoding="${charset}">
			<path path="${core.src.dir}/example1.js"/>
			<path path="${core.src.dir}/example2.js"/>
        </concat>
    </target>

</project>

2.执行ant

Sublime Text 2 使用技巧

快捷键大全

Ctrl+Shift+P:打开命令面板
Ctrl+P:搜索项目中的文件
Ctrl+G:跳转到第几行
Ctrl+W:关闭当前打开文件
Ctrl+Shift+W:关闭所有打开文件
Ctrl+Shift+V:粘贴并格式化
Ctrl+D:选择单词,重复可增加选择下一个相同的单词
Ctrl+L:选择行,重复可依次增加选择下一行
Ctrl+Shift+L:选择多行
Ctrl+Shift+Enter:在当前行前插入新行
Ctrl+X:删除当前行
Ctrl+M:跳转到对应括号
Ctrl+U:软撤销,撤销光标位置
Ctrl+J:选择标签内容
Ctrl+F:查找内容
Ctrl+Shift+F:查找并替换
Ctrl+H:替换
Ctrl+R:前往 method
Ctrl+N:新建窗口
Ctrl+K+B:开关侧栏
Ctrl+Shift+M:选中当前括号内容,重复可选着括号本身
Ctrl+F2:设置/删除标记
Ctrl+/:注释当前行
Ctrl+Shift+/:当前位置插入注释
Ctrl+Alt+/:块注释,并Focus到首行,写注释说明用的
Ctrl+Shift+A:选择当前标签前后,修改标签用的
F11:全屏
Shift+F11:全屏免打扰模式,只编辑当前文件
Alt+F3:选择所有相同的词
Alt+.:闭合标签
Alt+Shift+数字:分屏显示
Alt+数字:切换打开第N个文件
Shift+右键拖动:光标多不,用来更改或插入列内容
鼠标的前进后退键可切换Tab文件
按Ctrl,依次点击或选取,可需要编辑的多个位置
按Ctrl+Shift+上下键,可替换行

安装Sublime Text 2插件的方法

按Ctrl+`调出console
粘贴以下代码到底部命令行并回车:

import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())

重启Sublime Text 2。
如果在Perferences->package settings中看到package control这一项,则安装成功。
用Package Control安装插件的方法:

按下Ctrl+Shift+P调出命令面板
输入install 调出 Install Package 选项并回车,然后在列表中选中要安装的插件。

SVN插件

安装SVN插件:
ctrl+shift+p -> Install Package -> TortoiseSVN

修改SVN插件配置:
Preferences -> Browse Packages -> TortoiseSVN -> 编辑TortoiseSVN.sublime-settings

SVN快捷键:
SVN提交 ALT+c
SVN更新 ALT+u

GBK编码问题

ctrl+shift+p -> Install Package -> gbk encoding support
ctrl+shift+p -> Install Package -> convertToUTF8

goto document插件

这个插件能帮助我们快速查看手册。比如我们在写php代码时, 突然忘记了某个函数怎么用了,将鼠标放在这个函数上,然后按F1,它能快速打开PHP手册中说明这个函数用法的地方。
安装好 goto document插件后我们再配置快捷键F1 跳转到文档。 打开sublime的菜单栏Preferences->key bindings -User 设置快捷键:
[
{ "keys": ["f1"], “command”: “goto_documentation” }
]

代码注释插件

1.additional PHP snippet插件能提示phpdocument格式的代码
2.安装DocBlockr 插件,能形成注释块。不用每次敲注释的斜杠或星号。

PHP 5.4 新特性

精简数组用法

//old
$num = array('one', 'two', 'three');
//new
$num = ['one', 'two', 'three'];
$num = [
    '1'=>'one',
    '2'=>'two',
    '3'=>'three'
];

数组成员访问

$name = explode(",", "David, Beckham")[0];

function test()
{
    return [
        'key'  => [ 'hello'  =>  'world' ]
    ];
}
echo  test()[ 'key' ][ 'hello' ];

Trait
Traits 是一种轻量级的方法复用。

trait cURL
{
    public function curl($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);

        return $output;
    }
}

/*
 * Twitter API Class
 */
class Twitter_API
{
    use cURL;

    public function get($url)
    {
        return json_decode($this->curl("http://api.twitter.com/".$url));
    }
}

/*
 * Facebook API Class
 */
class Facebook_API
{
    use cURL;

    public function get($url)
    {
        return json_decode($this->curl("http://graph.facebook.com/".$url));
    }
}

PHP扩展Coreseek API

Coreseek API下载地址http://www.coreseek.cn/products-install/api-list/

$ wget http://pecl.php.net/get/sphinx-1.2.0.tgz
$ tar -zxvf sphinx-1.2.0.tgz
$ cd sphinx-1.2.0
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && make install
#安装PHP扩展之前需要安装libsphinxclient
#报错信息:configure: error: Cannot find libsphinxclient headers
$ cd coreseek-3.2.14/csft-3.2.14/api/libsphinxclient
$ ./configure
$ make && make install
$ /usr/local/apache2/bin/apachectl restart

Coreseek全文索引配置及使用

Coreseek 是一款中文全文检索/搜索软件…(详情请见http://www.coreseek.cn

$ wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
$ tar -zxvf coreseek-3.2.14.tar.gz

#安装mmseg
$ cd mmseg-3.2.14
$ ./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决
$ ./configure --prefix=/usr/local/mmseg3
$ make && make install
$ cd ..

#安装coreseek
$ cd coreseek-3.2.14
$ ./configure --prefix=/usr/local/sphinx --with-mysql --with-mmseg-includes=/usr/local/mmseg/include/mmseg --with-mmseg-libs=/usr/local/mmseg/lib/
$ make && make install

#把字典文件和mmseg.ini配置文件拷贝到相应的目录
$ cp uni.lib /usr/local/sphinx/dict/uni.lib
$ cp mmseg.ini/usr/local/sphinx/dict/mmseg.ini

#修改配置文件mmseg.ini和csft.conf
$ vim mmseg.ini
merge_number_and_ascii=1;
number_and_ascii_joint=-;
compress_space=0;
seperate_number_ascii=1;
#merge_number_and_ascii: 字母和数字连续出现是非切分 #number_and_ascii_joint:连接数字和字母可用的符号,如'-' '.' 等
#compress_space:暂时无效
#seperate_number_ascii:是否拆分数字,如 1988 -> 1/x 9/x 8/x 8/

$ vim csft.conf
source src1
{
        type = mysql  

        sql_host = localhost
        sql_user = root
        sql_pass = 123456
        sql_db = dbTest
        sql_port = 3306  # optional, default is 3306  

        sql_query = select id, content, addtime, reason, flag from tbLog  

        sql_attr_uint = id
        sql_attr_timestamp = addtime

        sql_query_info = SELECT * FROM tbLog WHERE id=$id
}

index test1
{
        source = src1
        path = /data/sphinx/data
        docinfo = extern
        charset_type = sbcs
        charset_dictpath = /usr/local/sphinx/dict
}  

indexer
{
        mem_limit = 32M
}  

searchd
{
        port = 9312
        log = /data/sphinx/log/searchd.log
        query_log = /data/sphinx/log/query.log
        read_timeout = 5
        max_children = 30
        pid_file = /data/sphinx/log/searchd.pid
        max_matches = 1000
        seamless_rotate = 1
        preopen_indexes = 0
        unlink_old = 1
}

#生成index
$ /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/csft.conf --all

#启动daemon
$ /usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/csft.conf

#关闭服务
$ /usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/csft.conf --stop

#启动之后如果更新索引要加rotate参数
#/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/csft.conf --all --rotate

#测试
$ /usr/local/sphinx/bin/search 'test'

Apache 添加模块 gzip配置

由于在编译apache时没有加一些参数,只能另外添加安装:

$ cd /data/super/httpd-2.2.21/modules/filters
$ /usr/local/apache2/bin/apxs -i -c -a mod_deflate.c
$ cd /data/super/httpd-2.2.21/modules/metadata
$ /usr/local/apache2/bin/apxs -i -a -c mod_headers.c
$ ls /usr/local/apache2/modules
httpd.exp  libphp5.so  mod_deflate.so  mod_headers.so

apxs命令参数说明:
-i 此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。
-a 此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-A 与 -a 选项类似,但是它增加的LoadModule命令有一个井号前缀(#),即此模块已经准备就绪但尚未启用。
-c 此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码 文件(.o和.a),以生成动态共享对象dsofile 。如果没有指定 -o 选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so 。

Ps:如果是新安装apache,参数加上 –enable-headers –enable-deflate 就可以了

开启gzip压缩配置

$ vim /usr/local/apache2/conf/httpd.conf
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
<IfModule mod_deflate.c>
        DeflateCompressionLevel 3  # 压缩程度的等级
        AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
        AddOutputFilter DEFLATE css js
        SetOutputFilter DEFLATE  # 插入过滤器
        # 不压缩图片等格式文件
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
</IfModule>

socks5 代理

安装:

$ wget http://jaist.dl.sourceforge.net/sourceforge/ss5/ss5-3.8.9-6.tar.gz
$ tar -zxf ss5-3.8.9-6.tar.gz
$ cd ss5-3.8.9-6
$ ./configure
$ make
$ make install

配置:

$ vim /etc/opt/ss5/ss5.conf  #先把原来的ss5.conf配置文件备份了(注释太多),新建一个ss5.conf
auth    0.0.0.0/0       -       u  #- u是需要认证的ss5;- -是无需认证的ss5
permit  u       0.0.0.0/0       -       0.0.0.0/0       -       -       -     -
$ vim /etc/opt/ss5/ss5.passwd
test 123456
$ ss5 -t  #启动ss5
$ netstat -antup | grep ss5  #查看端口;默认端口号:1080,改ss5端口ss5  -b ip地址:端口

遇到问题:
1.ss5 ld returned 1 exit status
解决:export EXTRA_LIBS=’-lcrypto’,然后再./configure => make => make install

2.can’t unlink pid file /var/run/ss5/ss5.pid
解决:这是因为已经有ss5在运行,ps -ef | grep ss5,再kill掉它,再ss5 -t;

参考网站:
http://ss5.sourceforge.net/

Linux FTP 安装与配置

安装与配置:

$ apt-get install vsftpd
$ service vsftpd start #重启restart;停止stop
$ vim /etc/vsftpd.conf
anonymous_enable=YES #是否允许anonymous登录FTP服务器,默认是允许的
anon_upload_enable=YES #允许匿名上传
anon_mkdir_write_enable=YES #允许匿名用户建立文件夹
local_enable=YES #是否允许本地用户登录FTP服务器,默认是允许
write_enable=YES #是否允许用户具有在FTP服务器文件中执行写的权限,默认是允许
local_umask=022 #设置本地用户的文件生成掩码为022,默认是077
xferlog_enable=YES #启用上传和下载日志功能
connect_from_port_20=YES #启用FTP数据端口的连接请求
listen=YES #使vsftpd 处于独立启动模式

#当chroot_local_user=NO、chroot_list_enable=YES时,vsftpd.chroot_list中用户为锁定用户,即他们除了自己的目录,不可以访问其他目录。
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list #vsftpd.chroot_list是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可(一行一个用户帐号)

#添加ftp用户
$ useradd -g ftp -d /var/www/test/ -s /bin/false ftptest #-g ftp指定该用户到ftp组;-s /bin/false该用户不能登录系统
$ passwd ftptest #设置密码
$ chown -R root.ftp /var/www/test/
$ chmod 775 /var/www/test/ -R

遇到问题:
1.在passwd更改密码时,出现:passwd: Authentication token manipulation error,导致无法更改用户密码
解决办法:mount -rw -o remount /

2.530 Login incorrect
解决办法:
vim /etc/shells
增加一行:/bin/false

第 1 页,共 5 页12345