Monthly Archives: 九月 2016

九月 29th, 2016

下载vim源码:http://www.vim.org/sources.php

设置编译选项, 我的配置是:

./configure  –prefix=/usr/local/vim \

            –enable-multibyte \ 
            –enable-fontset \ 
            –enable-xim  \ 
            –enable-gui=auto \ 
            –enable-pythoninterp=dynamic \ 
            –enable-pythoninterp \ 
            –enable-python3interp=dynamic \ 
            –enable-rubyinterp=dynamic \ 
            –enable-rubyinterp \ 
            –enable-perlinterp \ 
            –enable-cscope \ 
            –enable-sniff \ 
            –with-x  \ 
            –with-compiledby=erocpil  \ 
            –with-features=huge \ 
            –enable-luainterp=dynamic  \ 
            –with-python-config-dir=/usr/lib/python2.7/config \ 
            –with-python3-config-dir=/usr/lib/python3.2/config

其他选项参见 ./configure –help

补充说明:

CentOS上编译时不支持“–enable-multibyte”

Debian上编译时不支持“–enable-fontset”

TAGS: ,
九月 29th, 2016

1、导出CentOS数据库的表结构

mysqldump -d -uxxx -p centos > centos_table.sql

其中-d参数表示不导出数据,只导出表结构

2、替换centos_table.sql里的MyISAM为INNODB

sed -i 's/MyISAM/INNODB/g' centos_table.sql

3、新建数据库centos_new,并导入表结构

mysql > create database centos_new;
mysql -uroot -p centos_new < centos_table.sql

可以通过show table status来检查表引擎是否为INNODB。

4、导出centos的数据

mysqldump -t -uroot -p centos > centos_data.sql

其中-t参数表示只导数据,不导表结构

5、导入数据到centos_new

mysql -uroot -p centos_new < centos_data.sql
TAGS:
九月 29th, 2016

大家有时候会发现 ssh 挂在那里没有响应了,可能是客户端的问题,也可能是服务器端的问题,也可能是客户端和服务器之间的网络问题;可能是客户端电脑休眠后连接断了、可能是网络断了、可能是 WiFi 信号不好、可能是网络延迟大了、可能是服务器挂了、也可能是服务器上的 sshd 进程挂了,…,可能是技术问题,也可能是非技术问题,可以找出无数可能。

我常遇到或者说每天都遇到的情形是,离开办公桌前忘了退出 ssh 会话。工作的时候长时间 ssh 到服务器上,工作完盖上 Mac 走人,回家后发现那些没退出的 ssh 会话还挂在那里,无法退出、无法 Ctrl+C、无法做任何操作。我的粗暴做法通常是直接关闭 Terminal 后重新开一个新的;如果用的不是图形系统,没有窗口可以关闭,那还要启用另一个终端找到相关进程后 kill 掉,如果每天都要搞这么几次还是挺烦人的。今天无意中从同事那里学到了一个小技巧,在那些没退出的 ssh 会话里用 ~. “优雅” 的断开连接。

~.

查看一下 man 帮助文件发现已经有说明,惭愧的是用了这么多年 ssh 才发现有这么一招:

$ man ssh
...
ESCAPE CHARACTERS
     ...

     The supported escapes (assuming the default `~') are:

     ~.      Disconnect.
TAGS: ,
九月 29th, 2016

比如说你只允许10.0.0.2这个ip进入,其它都禁止:

vim /etc/ssh/sshd_config

添加一行:

allowusers root@10.0.0.2

注:root为你用来登入服务器的用户名

最后sshd重启

service sshd restart
TAGS: ,
九月 28th, 2016

Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台。当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。这取决于文件中的内容。

利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。

网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验外,另一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系。例如 Google就可以通过直接读取gzip文件来比普通手工抓取更快地检索网页。在Google网站管理员工具(Google Webmaster Tools)中你可以看到,sitemap.xml.gz 是直接作为Sitemap被提交的。

而这些好处并不仅仅限于静态内容,PHP动态页面和其他动态生成的内容均可以通过使用Apache压缩模块压缩,加上其他的性能调整机制和相应的服务器端缓存规则,这可以大大提高网站的性能。

因此,对于部署在Linux服务器上的PHP程序,在服务器支持的情况下,我们建议你开启使用Gzip Web压缩。

 

二、 Gzip Web压缩工作原理

Web服务器处理HTTP压缩的过程如下:

1. Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩(Accept-Encoding 信息);

2. 如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;

3. 如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;

4. 如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;

5. 如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;

6. 如果请求文件是动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。

 

、让我们开始吧!

Apache上利用Gzip压缩算法进行压缩的模块有两种:mod_gzip 和mod_deflate。要使用Gzip Web压缩,请首先确定你的服务器开启了对这两个组件之一的支持。在Linux服务器上,现在已经有越来越多的空间商开放了对它们的支持,有的甚至是同时 支持这两个模块的。例如目前Godaddy、Bluehost及DreamHosts等空间商的服务器都已同时支持mod_gzip 和mod_deflate。

虽然使用Gzip同时也需要客户端浏览器的支持,不过不用担心,目前大部分浏览器都已经支持Gzip了,如IE、Mozilla Firefox、Opera、Chrome等。

通过查看HTTP头,我们可以快速判断使用的客户端浏览器是否支持接受gzip压缩。

若发送的HTTP头中出现以下信息,则表明你的浏览器支持接受相应的gzip压缩:

Accept-Encoding: gzip     支持mod_gzip
Accept-Encoding: deflate     支持mod_deflate
Accept-Encoding: gzip,deflate    同时支持mod_gzip 和mod_deflate

 

如果服务器开启了对Gzip组件的支持,那么我们就可以在http.conf或.htaccess里面进行定制,下面是一个.htaccess配置的简单实例:

 

 

以下为引用的内容:

# mod_gzip:
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

 

以下为引用的内容:

# mod_deflate:
<ifmodule mod_deflate.c>
DeflateCompressionLevel 6 #压缩率, 6是建议值.
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE image/svg+xml
</ifmodule>

 

里面的文件MIME类型可以根据自己情况添加,至于PDF 、图片、音乐文档之类的这些本身都已经高度压缩格式,重复压缩的作用不大,反而可能会因为增加CPU的处理时间及浏览器的渲染问题而降低性能。所以就没必要再通过Gzip压缩。

通过以上设置后再查看返回的HTTP头,出现以下信息则表明返回的数据已经过压缩。即网站程序所配置的Gzip压缩已生效。

Content-Encoding: gzip

注:不管使用mod_gzip 还是mod_deflate,此处返回的信息都一样。因为它们都是实现的gzip压缩方式。

除此之外,还可以通过一些在线检测工具(如:http://www.whatsmyip.org/http_compression/)来检测你的网站内容是否已经过Gzip压缩。

九月 27th, 2016

解决Magento安装时数据库不支持InnoDB存储引擎问题

找到文件app/code/core/Mage/Install/Model/Installer/Db/Mysql4.php的第59行:

public function supportEngine()

{

$variables  = $this->_getConnection()

->fetchPairs(‘SHOW VARIABLES’);

return (!isset($variables[‘have_innodb’]) || $variables[‘have_innodb’] != ‘YES’) ? false : true;

}

替换为:

public function supportEngine()

{

$variables  = $this->_getConnection()

->fetchPairs(‘SHOW ENGINES’);

return (isset($variables[‘InnoDB’]) && $variables[‘InnoDB’] != ‘NO’);

最后一步重启数据库 service mysqld restart

九月 26th, 2016

带宽,简单的说,即你租用服务器或托管时,给你分配固定的带宽,如10Mbps带宽,则一般限定最高你可跑到10Mbps带宽.
那月流量呢? 比如100M带宽 2500GB流量,则表明,不限定服务器使用的带宽大小,最高可到100Mbps,只要每月总共产生的流量不超过月流量限制即可!
一般来说,服务器访问量上,有时段的关系,如白天时访问量大,晚上某个时候访问量很小.有时访问量大时,10Mbps带宽就有可能不够用了.而美国服务器,限制流量,则不会出现这种情况,即完全满足客户带宽峰值需求.

限制带宽是性能限制参数,限定了服务器能到达的带宽大小.限制带宽的一般不限制月流量,不会有额外的费用产生;
那么计算下,10Mbps带宽100%使用的情况下,一个月能跑出多少带宽:
10Mbps/s=1.25MB/s(理论值),即每秒能产生1.25MB的流量.
一天产生的流量=24*3600*1.25=108000MB,约105GB流量.
以30天计算,10M独享不限制流量最多能跑出3150GB月流量.

同上,100M带宽100%使用,月能跑31500GB流量.但事实上,服务器不可能每天24小时,时时刻刻都使用100%带宽.
因此,对比10M独享不限流量与100M带宽 2500GB月流量,限制月流量的方式显得更科学,更实用,能满足峰值需求,但是需要注意监控总流量大小,以免超出产生额外的费用.

TAGS: ,
九月 24th, 2016

 今日在虚拟机上运行tcpdump悍然提示标题那样的报错,最后找到了网上的解决办法。一共三步:

一、在root下,去家目录下查看.bash_profile文件的$PATH变量(这个是环境变量)里有没有添加tcpdump所在目录

二、修改.PATH变量,如果是:PATH=$PATH:$HOME/bin,则需要添加成如下: PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin

三、保存.bash_profile文件后在命令行里敲source .bash_profile使改动生效。

如果​你在运行其他的程序时也出现这个错误,不妨根据这个思路去解决问题!

下面是一些程序其所处的目录。​

主要是这四个:/bin ,/usr/bin,/sbin,/usr/sbin。

./bin: bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。

​/usr/bin: 主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、 gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。

​/sbin: 主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、 ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。

/usr/sbin: 放置一些网路管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。 可以在家目录下查看.bash_profile里的PATH。 然后执行下面命令 source .bash_profile 使其生效

非常感谢原文所提供的帮助~  http://www.phpzixue.cn/detail1104.shtml

九月 23rd, 2016

由于linux默认yum源安装的是php 5.1的包,

yum安装php以后查看

rpm -qa php

php-5.1.6-23.2.el5_3

由于有的程序需要使用php5.2以上的版本

于是就找起了资料,终于找到有介绍如下添加一个额外的源:

# rpm –import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
# gedit /etc/yum.repos.d/utterramblings.repo
或者直接修改/etc/yum.repos.d/utterramblings.repo  名字可以自己定义要以.repo结尾如abc.repo

在打开的文件中加入以下内容:

[abc]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

执行yum update php 如图所示 ,

# yum update php
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
utterramblings                                           |  951 B     00:00
utterramblings/primary                                   |  39 kB     00:03
utterramblings                                                          140/140
Skipping security plugin, no data
Setting up Update Process
Resolving Dependencies
Skipping security plugin, no data
–> Running transaction check
–> Processing Dependency: php = 5.1.6-23.2.el5_3 for package: php-devel
—> Package php.i386 0:5.2.16-jason.1 set to be updated
–> Processing Dependency: php-common = 5.2.16-jason.1 for package: php
–> Processing Dependency: php-cli = 5.2.16-jason.1 for package: php
–> Running transaction check
—> Package php-cli.i386 0:5.2.16-jason.1 set to be updated
。。。。。。。。
已经有新的php包尅更新
================================================================================

Dependencies Resolved
================================================================================
Package            Arch      Version                  Repository          Size
================================================================================
Updating:
php                x86_64    5.2.17-jason.2           abc                3.8 M
Installing for dependencies:
mysqlclient15      x86_64    5.0.91-1.jason.1         abc                2.0 M
Updating for dependencies:
asterisk           x86_64    2009020507:11.10.0-0     elastix-updates     20 M
asterisk-addons    x86_64    2009020507:11.10.0-0     elastix-updates    529 k
asterisk-devel     x86_64    2009020507:11.10.0-0     elastix-updates    421 k
libgsmat           x86_64    2.0.8-0                  elastix-updates     46 k
mysql              x86_64    5.1.58-jason.1           abc                3.5 M
mysql-server       x86_64    5.1.58-jason.1           abc                 13 M
php-cli            x86_64    5.2.17-jason.2           abc                2.6 M
php-common         x86_64    5.2.17-jason.2           abc                522 k
php-devel          x86_64    5.2.17-jason.2           abc                558 k
php-gd             x86_64    5.2.17-jason.2           abc                348 k
php-imap           x86_64    5.2.17-jason.2           abc                115 k
php-mbstring       x86_64    5.2.17-jason.2           abc                1.4 M
php-mysql          x86_64    5.2.17-jason.2           abc                280 k
php-pdo            x86_64    5.2.17-jason.2           abc                169 k
php-soap           x86_64    5.2.17-jason.2           abc                365 k
php-xml            x86_64    5.2.17-jason.2           abc                343 k
Transaction Summary
================================================================================
Install       1 Package(s)
Upgrade      17 Package(s)
Total size: 49 M
Total download size: 20 M
 
安装 后 重启apache
查看php 目前安装版本
# rpm -qa php
php-5.2.17-jason.2

安装已经完成 还可以使用php -m 查看php支持的模块

如]# php -m | grep mysql
mysql
mysqli
pdo_mysql
 
 
 我的是linux系统是elastix
这个网上方法的,不过我只想升级php,就有点烦,有没有好的建议?
九月 22nd, 2016

Linux的Runlevel

Linux默认有6个Terminal(Ctrl+Alt+F1~F6)和1个X window(Ctrl+Alt+F7,图形化界面)让用户登录
Linux的runlevel一共有7级,上述的6个terminal运行在runlevel 3,Xwindow运行在runlevel5,如果安装的是Fedora,Ubuntu这类发行版的话会直接进入图形界面。
以Ubuntu为例,若想要开机进入字符界面而不是图形界面,可以在终端中输入命令$sudo vi /etc/default/grub, 找到GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”将其改成GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash text”

Linux命令结构

$command    [-options]   parameter1      parameter2……  

Note:
* 一行命令中的第一个输入的部分 绝对是“命令(Command)”或“可执行文件”
* 选项通常会以 – 开头
* 一条命令的中间用空格分开,不论多少个空格都算作一个
* 命令太长时可以使用<\>来转义,续到下一行

Linux的根目录结构

/bin :binaries
/etc :etcetera
/mnt :temporary mounts
/opt :optional application software packages
/proc :virtual filesystem providing process and kernel information as files
/sbin :binaries used for system
/srv :specific data for services provided by the system
/usr :unix system source,不是user的缩写,user的文件夹是 /home
/var :variable files
/src :source

Linux权限

Linux系统内的文件有三种身份:owner、group、others。每种身份有三种权限:r、w、x,习惯于Windows的同学都知 道.doc用word打开,.exe可以直接运行,但是Linux中不按文件的扩展名区分文件,一个文件能否被执行,取决于文件详细属性中的10个属性, 只要权限中有“x”就可以被执行。但执行后能否产生用户期望的结果是另一回事,一个按照pdf规则编写的文件只要有“x”就可以被gedit执行,但是应 该不会产生用户想要的结果。 不过,习惯上为了使文件的种类一目了然,Linux的用户也经常使用扩展名来帮助记忆。注意,从网络上下载下来的可执行文件存到Linux中文件的属性和 权限是会被改变的
$chown :改变文件所有者
$chgrp :改变文件所属用户组
$chmod :来修改权限

Linux的10种文件

1) -:一般文件,regular file
2) d:directory ,文件夹
3) l :linkfile ,链接文件
4) b :block设备文件,设备文件里可供存储的接口设备
5) c :character设备文件,设备文件里的串行端口设备
6) ASCII :纯文件文件,一切可以用来作为设置的文件
7) binary:Linux中的可执行文件
8) data :数据格式文件
9) s :Socket数据接口文件,通常被用在网络上的数据连接
10) p :FIFO pipe,用来解决多个程序同时访问一个文件所造成的错误问题。

认识Linux软件包

Linux主流的软件包,source,rpm,deb。
Source一般可以再任何版本的Linux变异安装;
rpm可以再RedHat,Fedoral安装;
deb可以再debian,ubuntu上安装。
使用alien可以实现上述三种包的相互转换,但并不能保证一定可以安装,尽可能使用源码安装或者专用包安装

TAGS: