JerryJi !

Linux Apache Mysql Php jQuery

 您当前位置 : Linux
今天PHP的导出EXCEL里面突然出现超时
虽然我在PHP脚本里面写了set_time_limit(0);
但是他还是出现那种50x错误
查看日志文件后发现里面写着:
upstream timed out (110: Connection timed out) while reading response
header from upstream

解决办法如下:
编辑ngnix对应的虚拟主机配置文件
fastcgi_read_timeout 后面的时间可以根据自己的情况设置,默认是60秒
        location ~ .+\.php?$
        {
            fastcgi_pass          127.0.0.1:1025;
        #   fastcgi_pass          unix:/usr/local/webserver/fastcgi/sock/fastcgi.sock;
            fastcgi_index         index.php;
        #   For Time out                这句是注释,可以不写
            fastcgi_read_timeout 500;

            include               fastcgi_params;
        }

全文阅读>>

2010-04-06 14:05:37 | 作者:jerryji | 评论:1 | 标签:ngnix 50x错误 upstream timed out (110: Connection timed out) while reading response header from upstream 解决办法

记得以前介绍过在Ubuntu 9.04中开启Ctrl+Alt+Backspace这篇文章,那个方法现在在Ubuntu 9.10中已经不适用了,但我们还是很容易的通过以下方法来开启这个组合键:

依次打开
系统–>首选项–>键盘,点击布局选项卡,然后点击左下角的”布局选项”

找到Key sequence to kill the X server,勾选上

Contrl+Alt+BackSpace

或者 直接在命令行输入

setxkbmap -option terminate:ctrl_alt_bksp

Snap24

全文阅读>>

2010-03-30 17:19:31 | 作者:jerryji | 评论:0 | 标签:Ubuntu 9.10中Ctrl+Alt+Backspace启用方法

1 .要用apt-get的方式安装,最好,也可能是必须先运行下面在命令升级自己的系统,我的就只能先升级后才能安装mysql5 + Apache2 + PHP5的。
我在没升级前运行sudo apt-get install apache2 php5 mysql-server 是没有用的。而如果你找的源不好或是你的网络不稳定的话,你也有可能升级不成。这样的话,你想用apt-get的方式来安装一些软件时可能是不能安装的。
#sudo apt-get update
#sudo apt-get dist-upgrade

2.安装:
#sudo apt-get install mysql-server
安装上mysql5,安装的时候会提示输入root密码
#sudo apt-get install apache2
安装apache2
#sudo apt-get install php5
安装php5
#sudo apt-get install php5-mysql
安装php的mysql模块
#sudo apt-get install php5-gd
安装GD库
在运行上面的命令的时候,可以留心看下libapache2-mod-auth-mysql(安装apache2时可能会安上)和libapache2-mod-php5,如果看到安上了就不用再单独安装了。


mysql的配置文件-my.cnf:(路径:/etc/mysql/my.cnf)

#sudo gedit /etc/mysql/my.conf #编辑my.conf

apache2的配置文件-apache2.conf(路径:/etc/apache2/apache2.conf)
#sudo gedit /etc/apache2/apache2.conf #编辑apache2.conf

PHP的配置文件-php.ini:(路径:/etc/php5/apache2/php.ini)
#sudo gedit /etc/php5/apache2/php.ini #编辑php.ini

此时这三个文件暂时不用编辑,如为了安全起见和优化,是一定要编辑的。具体的大家可参观其它资料,此篇暂不多说!!

4 . 安装phpmyadmin
#sudo apt-get install phpmyadmin
安装完毕可测试:http://127.0.0.1/phpmyadmin 当出来界面就行了,暂时先别登录,等改下你的PHPMYADMIN的配置文件(config.inc.php)再登陆。
终端输入:sudo gedit /etc/phpmyadmin/config.inc.php
找到$cfg['Servers'][$i]['password']= ”;
改成:$cfg['Servers'][$i]['password']= ‘123456′;
‘123456‘是刚才设置的mysql的密码。
如果无法解析PHPMYADMIN
默认安装在 /usr/share/phpmyadmin,作个链接到 /var/www/ 目录下,
命令为:sudo ln -s /usr/share/phpmyadmin/ /var/www/,再使用 http://localhost/phpmyadmin 即可以访问。

 

5 . 此时最好重新启动计算机,(在网看到有人这样说,因是第二次安装也就照做了)打开浏览器http://localhost/phpmyadmin/
用户名输入root,再输入刚改的密码,然后执行
可以看到在win下那可亲的phpmyadmin面貌了。

小结:
apache2的操作命令:
启动:sudo /etc/init.d/apache2 start
重启:sudo /etc/init.d/apache2 restart
关闭:sudo /etc/init.d/apache2 stop
apache2的默认主目录:/var/www/
如要修改,
sudo gedit /etc/phpmyadmin/config.inc.php,
将DocumentRoot设置为新路径,同时将Directory节点也改为新路径。

然后重启Web Server:sudo /etc/init.d/apache2 restart
如果浏览器没有变化,可能缓存了数据,ctrl+f5强制刷新即可。

全文阅读>>

2010-03-30 15:13:40 | 作者:jerryji | 评论:0 | 标签:UBUNTU 9.10下安装LAMP环境

、使用更新源的國內鏡像
CentOS 安裝完畢,首先應該修改更新源,並升級到最新的系統。

國內速度較快的常用更新源:

http://mirror.be10.com/centos/
http://centos.candishosting.com.cn/
http://ftp.sjtu.edu.cn/centos/
http://ftp.hostrino.com/pub/centos/
http://mirrors.ta139.com/centos/
http://ftp.iasi.roedu.net/mirrors/centos.org/centos/

首先備份CentOS-Base.repo,然後再編輯 yum 的配置文件

[admingu@googe ~]$ sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

[admingu@googe ~]$ sudo vi /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://centos.candishosting.com.cn/$releasever/os/$basearch/
http://mirrors.ta139.com/centos/$releasever/os/$basearch/
http://mirror.be10.com/centos/$releasever/os/$basearch/
http://ftp.sjtu.edu.cn/centos/$releasever/os/$basearch/
http://ftp.hostrino.com/pub/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://centos.candishosting.com.cn/$releasever/updates/$basearch/
http://mirrors.ta139.com/centos/$releasever/updates/$basearch/
http://mirror.be10.com/centos/$releasever/updates/$basearch/
http://ftp.sjtu.edu.cn/centos/$releasever/updates/$basearch/
http://ftp.hostrino.com/pub/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
baseurl=http://centos.candishosting.com.cn/$releasever/addons/$basearch/
http://mirrors.ta139.com/centos/$releasever/addons/$basearch/
http://mirror.be10.com/centos/$releasever/addons/$basearch/
http://ftp.sjtu.edu.cn/centos/$releasever/addons/$basearch/
http://ftp.hostrino.com/pub/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://centos.candishosting.com.cn/$releasever/extras/$basearch/
http://mirrors.ta139.com/centos/$releasever/extras/$basearch/
http://mirror.be10.com/centos/$releasever/extras/$basearch/
http://ftp.sjtu.edu.cn/centos/$releasever/extras/$basearch/
http://ftp.hostrino.com/pub/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://centos.candishosting.com.cn/$releasever/centosplus/$basearch/
http://mirrors.ta139.com/centos/$releasever/centosplus/$basearch/
http://mirror.be10.com/centos/$releasever/centosplus/$basearch/
http://ftp.sjtu.edu.cn/centos/$releasever/centosplus/$basearch/
http://ftp.hostrino.com/pub/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
baseurl=http://centos.candishosting.com.cn/$releasever/contrib/$basearch/
http://mirrors.ta139.com/centos/$releasever/contrib/$basearch/
http://mirror.be10.com/centos/$releasever/contrib/$basearch/
http://ftp.sjtu.edu.cn/centos/$releasever/contrib/$basearch/
http://ftp.hostrino.com/pub/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

其中:

repositoryid:用於指定一個倉庫

name:用於指定易讀的倉庫名稱

baseurl:用於指定本倉庫的URL,可以是以下的3種類型,如http,ftp,file

mirrorlist:用於指定倉庫的鏡像站點

enable:用於指定是否使用本倉庫,默認值為1,即可用。

gpgcheck:用於指定是否檢查套裝軟體的GPG簽名。

gpgkey:用於指定GPG簽名文件的URL。

執行命令:

[admingu@googe ~]$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

二、使用非官方更新源

下面以安裝rpmforge和DAG套裝軟體為例添加非官方更新源

I、添加rmpforge軟體庫

1)到http://dag.wieers.com/rpm/packages/rpmforge-release/搜尋適用於RHEL5 /CentOS5的套裝軟體。

2)下載適用於RHEL5/CentOS5的套裝軟體。

[admingu@googe ~]$ sudo wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

[admingu@googe ~]$ sudo rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

[admingu@googe ~]$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-*

安裝rpmforge-release套裝軟體之後,就可以看到/etc/yum.repos.d/rpmforge.repo文件,以後yum就 可以使用這個更新源了。

II、添加DAG更新倉庫 。//這個庫我更新時總是出現問題,望達人幫我一下!

1)在/etc/yum.repos.d/下建立dag.repo

2)編輯dag.repo

[admingu@googe ~]$ sudo vi /etc/yum.repos.d/dag.repo

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el5/en/i386/dag/
gpgcheck=1
enabled=1
gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

保存退出。

然後導入Key,

[admingu@googe ~]$ wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

[admingu@googe ~]$ sudo rpm --import RPM-GPG-KEY.dag.txt

[admingu@googe ~]$ sudo rm -f RPM-GPG-KEY.dag.txt //這個可以先移除也可以不移除

以下是好友Nick提供的解決方法,非常感謝他!

在定義 yum 非官方庫 dag.repo 後,使用 yum 安裝非官方庫裏定義的軟體是,如果出現錯誤:

Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 883 kB 00:59
http://apt.sw.be/redhat/el5/en/i386/dag/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum
Trying other mirror.
Error: failure: repodata/primary.xml.gz from dag: [Errno 256] No more mirrors to try.

這個錯誤應該是因為"/var/cache/yum/dag/”裏的 primary.xml.gz 不能通過校驗導致的。(暫時找不到原因,用多線程軟體下載就沒問題,如'myget')

這個錯誤我自己的 解決方法是:是用軟體'myget'下載 primary.xml.gz 到 "/var/cache/yum/dag/” ;然後再重新用yum安裝軟體。

三、使用如下命令更新到最新系統

# yum upgrade

四、安裝必要的軟體工具

# yum install wget bzip2 unzip zip nmap tree lynx fileutils ncftp lftp

若您需要在本機編譯源代碼的軟體,請安裝開發工具組的套裝軟體

# yum groupinstall "Development Tools"

<script. type="text/javascript"><!--

google_ad_client = "pub-8157613744109761";
/* 728x90, 創建於 09-1-14 */
google_ad_slot = "1763164732";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script. type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

全文阅读>>

2010-03-29 13:03:19 | 作者:jerryji | 评论:0 | 标签:CentOS5.2設置更新源

如何删除grub,修复windows引导
 

是不是想让系统直接启动到Windows,不出现Linux的Grub(或LILO)引导界面或者是在Windows中删除了Linux分区后无法正确启 动Windows,而停留在“grub>”提示符处,怎么办? 请往下看,这里给你提供几种实用的方法:

Solution 0

要是手头没有DOS启动盘,可以使用windowXP系统盘,按R进 入到故障恢复台,然后使用命令 FIXMBR 多数情况也能够恢复,没有DOS启动盘,一般采取此方法

Solution 1

用DOS命令fdisk恢复主引导扇区MBR(Main/Master Boot Record)

用光盘引导到DOS命令行下,执行:"fdisk /mbr"即可。
Solution 2

在Linux系统中,恢复MBR。(如果你还能登陆到Linux系统中的话)
在终端的命令提示符后输入: "dd if=/boot/boot.NNNN of=/dev/hda bs=446 count=1"
注意,其中bs(buffer size)是指重写的字节数。为什么不是512呢?主引导扇区是一个扇区(512字节呀),因为我们只是想通过扇面的命令修复系统MBR的引导或删除 Grub/LILO引导;而不是恢复整个主引导扇区。所以我们只把主引导扇区的备份文件boot.NNNN的前446个字节重写入主引导扇区。 boot.NNNN是我们在安装Linux之前整个主引导分区的备份。如果我们把512个字节全部写入主引导扇区就可能会把安装了Linux后改变了的硬 盘DPT表也破坏掉。那就坏事了!!! (MBR的512字节中前446字节为引导程序,紧跟着后面64字节为分区表,最后面2个字节为结束标记)
Solution 3
如果你的fdisk不好使,或者Linux已经不能使用,可以使用Clear MBR 0.9来清除MBR:

下载Clear MBR 0.9 ,直接运行执行“Clear MBR”即可(说明,我并没有下载到,所以这种方式没有试)
Solution 4
Linux的分区已经被你从Windows中删除,系统启动后停在“grub>”提示符处。

在“grub>”提示符后输入:“rootnoverify (hd0,0)” 回车。//将第一块硬盘(hd0)的第一个分区(0)设为根分区/root设备,但不加载文件系统。

在“grub>”提示符后输入:“chainloader +1” 回车。//将启动引导权转交给当前分区的首扇区(Windows系统所在分区的首扇区)。

在“grub>”提示符后输入:“boot” 回车。系统将启动Windows。如果不成功,则表明 (hd0,0) 不是 Windows 系统所在分区,再从第一步开始试一下“root (hd0,1)/root (hd0,2)/root (hd0,3)/...”,总之这样一定可以引导启动你的Windows系统。

好了,进入Windows了,请采用Solution 3的方法清除MBR。

全文阅读>>

2010-03-28 15:32:53 | 作者:jerryji | 评论:0 | 标签:如何删除grub,修复windows引导

今天刻盘安装了Ubuntu9.10,安装成功。默认启动项是Ubuntu,启动正常,登录到Ubuntu9.10感觉界面很好,喜欢,可以说是非常完 美!
但是我在想换回来使用我本来已经安装在硬盘第一个分区的Windows XP系统时,在启动项列表里选择了Windows XP系统后却提示Ntldr is missing.无法正常启动Windows XP了,郁闷。找网上找了个方法,不知可行不可行,暂且先放在这,明天试试。
----------------------------------------------------------------------------------
ubuntu9.10和以前的版本不一样,其中较大的区别在于使用了 grub2引导系统。
以前我常用的修改menu.lst引导windows的方法不行了,因为在 grub2中,/boot/grub文件夹里没有了menu.lst文件。
grub2采用grub.cfg(在/boot/grub文件夹中)来引导系统。要想修改grub.cfg,就得修改grub这个文件(在/etc /default文件夹中)。
修改grub和修改menu.lst的方法一样,先用打开终端,输入命令:

cd /etc/defauft
sudo chmod 777 grub

改变grub文件属性,然后修改打开grub,在文件末尾添加:
注意,前面带#号的。不是注释符

#title Microsoft windows
#root (hd0,0)
#savedefault
#makeactive
#chainloader +1

root (hd0,0)是我的windows操作系统所在的分区(磁盘第一分区),修改成你的windows所在分区就好了,如果是第二分区就改成 (hd0,1),依次类推。保存文件。再在终端里输入:

sudo update-grub

更新grub.cfg文件。
完成,重启电脑,就能在grub菜单里看到windows选项了。

全文阅读>>

2010-03-27 16:26:47 | 作者:jerryji | 评论:0 | 标签:ubuntu9.10--grub--引导 windows的解决办法

移动光标
上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行
下:j nj:向下移动n行
左:h nh:向左移动n列
右:l nl:向右移动n列

w:光标以单词向前移动 nw:光标向前移动n个单词 光标到单词的第一个字母上
b:与w相反
e: 光标以单词向前移动 ne:光标向前移动n个单词 光标到单词的最后一个字母上
ge:与e相反

$:移动光标到行尾 n$:移动到第n行的行尾
0(Num):移动光标到行首
^:移动光标到行首第一个非空字符上去

f<a>:移动光标到当前行的字符a上,nf<a>移动光标到当前行的第n个a字符上
F:相反

%:移动到与制匹配的括号上去(),{},[],<>等。

nG:移动到第n行上 G:到最后一行

CTRL+G 得到当前光标在文件中的位置

向前翻页:CTRL+F
向下移动半屏:CTRL+G
向后翻页:CTRL+B

存盘:
:q! :不存盘退出
:e! :放弃修改文件内容,重新载入该文件编辑
:wq :存盘退出

dw:删除一个单词,需将光标移到单词的第一个字母上,按dw,如果光标在单词任意位置,用daw
dnw:删除n个单词
dne:也可,只是删除到单词尾
dnl:向右删除n个字母
dnh:向左删除n个字母
dnj:向下删除n行
dnk:向上删除n行
d$:删除当前光标到改行的行尾的字母
dd:删除一行
cnw[word]:将n个word改变为word
cc:改变整行
C$:改变到行尾

J: 删除换行符,将光标移到改行,按shift+j删除行尾的换行符,下一行接上来了.
u: 撤销前一次的操作
shif+u(U):撤销对该行的所有操作。

:set showmode :设置显示工作模式

o:在当前行的下面另起一行
O(shift+o):在当前行的上面另起一行

nk或nj:光标向上或向下移n行,n为数字
an!【ESC】:在行后面加n个感叹号(!)
nx:执行n次x(删除)操作

ZZ:保存当前文档并退出VIM

:help :查看帮助文档,在这之中,按CTRL+] 进入超连接,按CTRL+O 返回。
:help subject :看某一主题的帮助,ZZ 退出帮助

:set number / set nonumber :显示/不显示行号
:set ruler /set noruler:显示/不显示标尺

/pattern 正方向搜索一个字符模式
?pattern 反方向搜索一个字符模式
然后按n 继续向下找

把光标放到某个单词上面,然后按×号键,表示查找这个单词
查找整个单词:/\<word\>

:set hlsearch 高亮显示查找到的单词
:set nohlsearch 关闭改功能

m[a-z]:在文中做标记,标记号可为a-z的26个字母,用`a可以移动到标记a处

r:替换当前字符
nr字符:替换当前n个字符

查找替换:
way1:
/【word】 :查找某个word
cw【newword】:替换为新word
n: 继续查找
.: 执行替换

way2:
:s/string1/string2/g:在一行中将string1替换为string2,g表示执行 用c表示需要确认
:num1,num2 s/string1/string2/g:在行num1至num2中间将string1替换为string2
:1,$ s/string1/string2/g:在全文中将string1替换为string2


v:进入visual 模式
【ESC】退出
V:shift+v 进入行的visual 模式
CTRL+V:进如块操作模式用o和O改变选择的边的大小。

粘贴:p,这是粘贴用x或d删除的文本
复制:
ynw:复制n个单词
yy:复制一行
ynl:复制n个字符
y$:复制当前光标至行尾处
nyy:拷贝n行
完了用p粘贴

:split:分割一个窗口
:split file.c :为另一个文件file.c分隔窗口
:nsplit file.c: 为另一个文件file.c分隔窗口,并指定其行数
CTRL+W在窗口中切换
:close:关闭当前窗口

在所有行插入相同的内容如include<,操作方法如下:
将光标移到开始插入的位置,按CTRL+V进入VISUAL模式,选择好模块后
按I(shift+i),后插入要插入的文本,按[ESC]完成。

:read file.c 将文件file.c的内容插入到当前光标所在的下面
:0read file.c 将文件file.c的内容插入到当前文件的开始处(第0行)
:nread file.c 将文件file.c的内容插入到当前文件的第n行后面
:read !cmd :将外部命令cmd的输出插如到当前光标所在的下面

:n1,n2 write temp.c 将本文件中的n1,到n2行写入temp.c这个文件中去

CTRL+L刷新屏幕
shift + < 左移一行
shift + > 右移一行

u: undo
CTRL+R: re-do
J: 合并一行
CTRL+p 自动完成功能
CTRL+g 查看当前文件全路径

q[a-z] 开始记录但前开始的操作为宏,名称可为【a-z】,然后用q终止录制宏。
用reg显示当前定义的所有的宏,用@[a-z]来在当前光标处执行宏[a-z].

全文阅读>>

2010-03-17 23:16:41 | 作者:jerryji | 评论:0 | 标签:Vim命令

1、LINUX下FTP添加一个用户:

useradd -d /var/www/html uername

2、设置username密码:

passwd username

结果出现了:500 OOPS: cannot change错误,解决方法如下:

su -                                      切换到root用户

getsebool -a | grep ftp      把ftp_home_dir的值改成on

setsebool -P ftp_home_dir on

getsebool -a | grep ftp      运行结果:

[root@kiriyamablevins ~]# getsebool -a | grep ftp
allow_ftpd_anon_write --> on
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> on 
httpd_enable_ftp_server --> off

全文阅读>>

2010-03-15 14:47:40 | 作者:jerry | 评论:0 | 标签:FTP useradd 500 OOPS: cannot change

1.重新编译Apache

Apache的默认配置不是为了最大化性能而设置的,而是考虑到向后兼容性和平台兼容性的问题。因此很多2.x的新特性没有能够体现出来。在编译的时候,需要加入一些参数,增加的这些模块应该会大幅的提高性能。

既然重新编译,建议使用最新的2.2版,里面有些部分对性能有不少加强。

2.编译的时候建议加入下面的参数

./buildconf

./configure \

--with-mpm=worker \

--enable-cache--enable-disk-cache--enable-mem-cache--enable-file-cache \

--enable-nonportable-atomics \

--enable-mods-shared=most

2.1 Multi-Processing Modules (MPM)

--with-mpm={prefork,worker}

这个是设置Apache的多任务处理的。prefork是指每个连接一个进程,也就是多进程并行处理;而worker是多线程并行处理。支持多线程处理,本来是Apache

2的一大改进,可是为了和以前的兼容,所以对于Unix默认的都是prefork,这个改进并没有体现出来。而这个设置只能在编译的时候进行优化,这也是为什么一定要重新编译一下apache的原因。

apache文档这么说:

“·worker MPM

使用多进程,每个进程包含多线程的方式。每个线程一次处理一个连接。worker对于高流量的服务器通常是一个好的选择,因为它比prefork MPM占用更少的内存。

·prefork MPM

使 用多进程,每个进程只包含1个线程的方式。每个进程一次处理一个连接。在许多系统上,prefork具有与worker相媲美的速度,但是它会占用更多的 内存。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平 台而言,它也更容易调试一些。”

这么说确实没有什么必要用prefork,刚才看了一下FC5,也是用的prefork模式。所以重新编译apache是肯定的了。我还不知道哪个Linux发布版本的apache默认是worker的呢。

为了设置MPM为worker需要设置:

--with-mpm=worker

2.2 Caching

mod_cache是从mod_proxy分离出来的。在以前apache

1.3的时候,就已经在mod_proxy中支持缓冲技术了。现在是为了加强缓冲能力,从mod_proxy中独立出来,而mod_proxy被完全重写了,更强调代理的作用了。

从Apache

2.2开始,mod_cache将不再是实验模块而作为稳定模块发布了。为了能够支持cache,需要在编译的时候,启用它,因为默认caching是禁用的。我估计是因为以前还是实验模块,所以还是为了向后兼容的问题,暂时是默认禁用的。

mod_cache一共有三种mod_mem_cache,mod_disk_cache和mod_file_cache。具体怎么用可以看apache的文档,虽然是英文,不过不是很难懂:

http://httpd.apache.org/docs/2.2/caching.html

网上也有一些关于mod_cache的中文配置文章可以参考。

总值为了能够用cache,需要在编译的时候设置:

--enable-cache--enable-disk-cache--enable-mem-cache--enable-file-cache

2.3 原子操作

有些模块中,如mod_cache中使用了一些原子操作,多任务中的互斥量操作之类的。为了可移植性,一般都是用互斥量环绕条件语句来判断来实现。比如:

acquire_lock(mutex);

if( a==0){

a=3;

}

release_lock(mutex);

加锁的目的是确保if和赋值不会被其他线程中断。可是有些cpu中提供了一条指令来做判断赋值,不需要这么复杂的操作,比如486加入的指令:

cmpxchg [edx], eax

先测试[edx]是否为0,如果为0,就让[edx]=eax。

通 过硬件保证了中间不会被中断。要知道一旦用到了互斥量,那么线程切换的等待就避免不了,这对于线程太多并且有公用数据的程序来说,影响性能的因素之一。因 此一旦得到了硬件的直接支持。在多线程程序的处理上,就少了很多的锁,也就提高了一定的性能。但是,不是所有的cpu都有这样的指令,因此默认情况下还是 使用锁的老办法。除非编译时明确声明:

--enable-nonportable-atomics=yes

需要注意的是,这样编译后,只能用在486及其以上的计算机中。我估计一般的服务器不是跑在386上吧。呵呵,对了,也尽量不要是64位的系统。

2.4

允许后期动态加载模块

--enable-mods-shared=most

这将编译大部分的模块为动态模块,这样后期可以动态的调入。默认情况竟然是不允许,太令我诧异了。呵呵。我感觉对于典型的多进程应用,模块就应该是动态加载,这样比较节省内存空间,反正大家用得都差不多的模块。

3. 检查

至于是否还想加其他的模块你就看着办吧,一般来说这就够了。

需 要提一下的是,现在apache在2.2种引入了一种新的MPM来提高性能,叫做event。可惜还在实验状态,未能稳定。event是 worker的变种,和线程类似,也是多线程模型,不同的是,它将做数据处理的线程和等待连接的线程分开,以此试图解决KeepAlive大了也不是,小 了也不是的性能调整问题。

event是使用一个比较小的线程来等待所有的socket,包括等候连接的socket和那些 KeepAlive的连接。一旦这些socket有任何发送HTTP请求了,这个等候的线程,就会这个socket交给真正做数据处理的线程进行处理,那 个线程处理完成后,会将这个socket交还给这个守候线程。

这样,即使有大量的KeepAlive连接,也不用担心性能损耗,因为只有一 个简单的线程来负责维护这些KeepAlive的连接,而那些真正做任务处理的线程则在一个HTTP响应处理完成后就退回到可用线程池或者被释放了,因此 很省资源。这个思路很好,现在还在实验,如果试验成功,估计会成为 2.4或者2.6的稳定MPM。

3.1 httpd -l

通过这条命令可以检查mpm是prefork还是worker。很不幸默认是prefork,FC5显示如下:

Compiledinmodules:

core.c

prefork.c

http_core.c

mod_so.c

3.2 apachectl -l

通过这条指令可以检查cache模块的加载情况,很不幸,默认是啥都没有。

4. KeepAlive

我 看到KeepAlive默认设置为On,KeepAliveTimeout默认是5秒。这个设置的含义时说,对于HTTP/1.1的客户端来说,将会尽量 的保持客户的HTTP连接,通过一个连接传送多份HTTP请求<->响应。这样对于客户端来说,可以提高50%左右的响应时间,而对于服务端 来说则降低了更多个连接的开销。不过这个依赖于客户端是否想保持连接。我知道IE默认是保持连接的,当你打开100个图片的网站时,IE 好像只开 2个连接,通过这两个连接传送数据,而不是开100个连接。KeepAliveTimeout时说这次连接结束后开始计时,如果5秒内没有重新发送 HTTP请求,就断掉连接。这个值可以稍微大一点,但是不可太大,否则会出现同时等候过多的连接,导致过多限制资源,而使服务器性能下降。可以调调看。

全文阅读>>

2009-07-27 11:48:46 | 作者:jerry | 评论:0 | 标签:Apache 性能优化

今天想在FC8下安装zendstudio结果安装不上。
呵呵 最后好不容易搞定,还是在国外论坛上找到的解决办法,贴出来跟大家分享一下吧。
[jerry@localhost Downloads]$ sudo ./ZendStudio-5_5_1.bin
口令:
Sorry, try again.
口令:
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

java: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.
已放弃



[root@localhost Downloads]# cp -R /tmp/install.dir.3217/Linux/resource/jre/ /root/java
[root@localhost Downloads]# cd /root/java/lib/i386/xawt/
[root@localhost xawt]# ls
libmawt.so
[root@localhost xawt]# sed -i 's/XINERAMA/FAKEEXTN/g' libmawt.so
[root@localhost xawt]# cd /e/Downloads/
[jerry@localhost Downloads]$ ./ZendStudio-5_5_1.bin LAX_VM /home/jerry/java/bin/java
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

Command.run(): process completed before monitors could start.

全文阅读>>

2009-03-17 17:26:46 | 作者:jerry | 评论:0 | 标签:fc8 Zendstudio

1 [2] [3] [4] 下页 尾页   第 1 页,共 4 页 34 条