现在用document.images.length来判断图片个数
$ sed '/test/'d example-----删除example文件所有包含test的行。
1. Sed简介
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。
2. 定址
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。
3. Sed命令
调用sed命令有两种形式:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
a\
在当前行后面加入一行文本。
b lable
分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
c\
用新的文本改变本行的文本。
d
从模板块(Pattern space)位置删除行。
D
删除模板块的第一行。
i\
在当前行上面插入文本。
h
拷贝模板块的内容到内存中的缓冲区。
H
追加模板块的内容到内存中的缓冲区
g
获得内存缓冲区的内容,并替代当前模板块中的文本。
G
获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l
列表不能打印字符的清单。
n
读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N
追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p
打印模板块的行。
P(大写)
打印模板块的第一行。
q
退出Sed。
r file
从file中读行。
t label
if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label
错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file
写并追加模板块到file末尾。
W file
写并追加模板块的第一行到file末尾。
!
表示后面的命令对所有没有被选定的行发生作用。
s/re/string
用string替换正则表达式re。
=
打印当前行号码。
#
把注释扩展到下一个换行符以前。
以下的是替换标记
g表示行内全面替换。
p表示打印行。
w表示把行写入一个文件。
x表示互换模板块中的文本和缓冲区中的文本。
y表示把一个字符翻译为另外的字符(但是不用于正则表达式)
4. 选项
-e command, --expression=command
允许多台编辑。
-h, --help
打印帮助,并显示bug列表的地址。
-n, --quiet, --silent
取消默认输出。
-f, --filer=script-file
引导sed脚本文件名。
-V, --version
打印版本和版权信息。
5. 元字符集
^
锚定行的开始 如:/^sed/匹配所有以sed开头的行。
$
锚定行的结束 如:/sed$/匹配所有以sed结尾的行。
.
匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。
*
匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[]
匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。
[^]
匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\(..\)
保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
&
保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\<
锚定单词的开始,如:/\
\>
锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\}
重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。
x\{m,\}
重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。
x\{m,n\}
重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。
6. 实例
删除:d命令
$ sed '2d' example-----删除example文件的第二行。
$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
$ sed '$d' example-----删除example文件的最后一行。
$ sed '/test/'d example-----删除example文件所有包含test的行。
替换:s命令
$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加localhost,变成192.168.0.1localhost。
$ sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
$ sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。
选定行的范围:逗号
$ sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。
$ sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。
$ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。
多点编辑:e命令
$ sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
$ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋值。
从文件读入:r命令
$ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
写入文件:w命令
$ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。
追加命令:a命令
$ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。
插入:i命令
$ sed '/test/i\\
new line
-------------------------' example
如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。
下一个:n命令
$ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。
变形:y命令
$ sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。
退出:q命令
$ sed '10q' example-----打印完第10行后,退出sed。
保持和获取:h命令和G命令
$ sed -e '/test/h' -e '$G example-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。
保持和互换:h命令和x命令
$ sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。
7. 脚本
Sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。
8. 小技巧
在sed的命令行中引用shell变量时要使用双引号,而不是通常所用的单引号。下面是一个根据name变量的内容来删除named.conf文件中zone段的脚本:
name='zone\ "localhost"'
sed "/$name/,/};/d" named.conf
1. Sed简介
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。
2. 定址
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。
3. Sed命令
调用sed命令有两种形式:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
a\
在当前行后面加入一行文本。
b lable
分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
c\
用新的文本改变本行的文本。
d
从模板块(Pattern space)位置删除行。
D
删除模板块的第一行。
i\
在当前行上面插入文本。
h
拷贝模板块的内容到内存中的缓冲区。
H
追加模板块的内容到内存中的缓冲区
g
获得内存缓冲区的内容,并替代当前模板块中的文本。
G
获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l
列表不能打印字符的清单。
n
读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N
追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p
打印模板块的行。
P(大写)
打印模板块的第一行。
q
退出Sed。
r file
从file中读行。
t label
if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label
错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file
写并追加模板块到file末尾。
W file
写并追加模板块的第一行到file末尾。
!
表示后面的命令对所有没有被选定的行发生作用。
s/re/string
用string替换正则表达式re。
=
打印当前行号码。
#
把注释扩展到下一个换行符以前。
以下的是替换标记
g表示行内全面替换。
p表示打印行。
w表示把行写入一个文件。
x表示互换模板块中的文本和缓冲区中的文本。
y表示把一个字符翻译为另外的字符(但是不用于正则表达式)
4. 选项
-e command, --expression=command
允许多台编辑。
-h, --help
打印帮助,并显示bug列表的地址。
-n, --quiet, --silent
取消默认输出。
-f, --filer=script-file
引导sed脚本文件名。
-V, --version
打印版本和版权信息。
5. 元字符集
^
锚定行的开始 如:/^sed/匹配所有以sed开头的行。
$
锚定行的结束 如:/sed$/匹配所有以sed结尾的行。
.
匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。
*
匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[]
匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。
[^]
匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\(..\)
保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
&
保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\<
锚定单词的开始,如:/\
\>
锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\}
重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。
x\{m,\}
重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。
x\{m,n\}
重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。
6. 实例
删除:d命令
$ sed '2d' example-----删除example文件的第二行。
$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
$ sed '$d' example-----删除example文件的最后一行。
$ sed '/test/'d example-----删除example文件所有包含test的行。
替换:s命令
$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加localhost,变成192.168.0.1localhost。
$ sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
$ sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。
选定行的范围:逗号
$ sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。
$ sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。
$ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。
多点编辑:e命令
$ sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
$ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋值。
从文件读入:r命令
$ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
写入文件:w命令
$ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。
追加命令:a命令
$ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。
插入:i命令
$ sed '/test/i\\
new line
-------------------------' example
如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。
下一个:n命令
$ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。
变形:y命令
$ sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。
退出:q命令
$ sed '10q' example-----打印完第10行后,退出sed。
保持和获取:h命令和G命令
$ sed -e '/test/h' -e '$G example-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。
保持和互换:h命令和x命令
$ sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。
7. 脚本
Sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。
8. 小技巧
在sed的命令行中引用shell变量时要使用双引号,而不是通常所用的单引号。下面是一个根据name变量的内容来删除named.conf文件中zone段的脚本:
name='zone\ "localhost"'
sed "/$name/,/};/d" named.conf
<html>
<head>
<script language="javascript">
function showPic(FilePathValue,strShowImgDivID,strW,strH)
{
var Pic = document.getElementById(strShowImgDivID);
Pic.innerHTML="<img src='"+FilePathValue+"' width='"+strW+"' height='"+strH+"' border='0'>";
}
</script>
</head>
<body>
<input type="file" onChange="showPic(this.value,'div1',200,200);">
<div id="div1"></div>
</body>
</html>
<head>
<script language="javascript">
function showPic(FilePathValue,strShowImgDivID,strW,strH)
{
var Pic = document.getElementById(strShowImgDivID);
Pic.innerHTML="<img src='"+FilePathValue+"' width='"+strW+"' height='"+strH+"' border='0'>";
}
</script>
</head>
<body>
<input type="file" onChange="showPic(this.value,'div1',200,200);">
<div id="div1"></div>
</body>
</html>
今天配置一台FreeBSD的WEB服务器, 以前都没怎么搞成功Mysql和Apache自动启动的问题,今天重新碰见, 上线问网友, 说只要写一个脚本到/usr/local/etc/rc.d下面就行, 于是我写了个脚本, 重启动系统后还是无法启动服务。
郁闷!
后来他又说,有没有把文件的属性设为755,我一看,没有,呵呵,设置了,重启动,行了。
举例说明:
比如我要启动mysql, 那么我就需要写一个 mysql.sh的文件,里面包含以下内容:
#! /bin/sh
/usr/local/mysql/bin/mysqld_safe &
然后把mysql.sh 复制到 /usr/local/etc/rc.d 下面,然后:
chmod 755 /usr/local/etc/rc.d/mysql.sh
就是设置为该脚本文件属性为755,重启动系统后就能自动启动该服务了!
启动其他服务类似。
当然,除了上面的启动服务方式,还有一种方法。
就是在 /etc/rc.local 里面加上要启动的服务,那么系统下次启动的时候就会自动启动。
如果 /etc/rc.local 文件不存在,那么就建立一个,比如我们要让我们的mysql启动,那么就编辑该文件:
ee /etc/rc.local
然后在里面加上一行:
/usr/local/mysql/bin/mysqld_safe &
那么下次系统启动的话,mysql就启动了,如果要启动很多,就依此类推加上启动命令。
另外,今天还有个问题,就是停用sendmail服务的问题,因为我不需要这个服务,而且它还可能构成安全威胁。我们知道普通的停用一些inetd管理的服务的话,都是在 /usr/rc.conf里面加上:
sshd_enable="NO"
就行了,于是我就加上
sendmail_enable="NO"
重启系统后,ps一看,sendmail还在,晕!
问网友,才知道,sendmail跟别的不一样,必须设成:
sendmail_enable="NONE"
重启后,就不会启动sendmail了!
郁闷!
后来他又说,有没有把文件的属性设为755,我一看,没有,呵呵,设置了,重启动,行了。
举例说明:
比如我要启动mysql, 那么我就需要写一个 mysql.sh的文件,里面包含以下内容:
#! /bin/sh
/usr/local/mysql/bin/mysqld_safe &
然后把mysql.sh 复制到 /usr/local/etc/rc.d 下面,然后:
chmod 755 /usr/local/etc/rc.d/mysql.sh
就是设置为该脚本文件属性为755,重启动系统后就能自动启动该服务了!
启动其他服务类似。
当然,除了上面的启动服务方式,还有一种方法。
就是在 /etc/rc.local 里面加上要启动的服务,那么系统下次启动的时候就会自动启动。
如果 /etc/rc.local 文件不存在,那么就建立一个,比如我们要让我们的mysql启动,那么就编辑该文件:
ee /etc/rc.local
然后在里面加上一行:
/usr/local/mysql/bin/mysqld_safe &
那么下次系统启动的话,mysql就启动了,如果要启动很多,就依此类推加上启动命令。
另外,今天还有个问题,就是停用sendmail服务的问题,因为我不需要这个服务,而且它还可能构成安全威胁。我们知道普通的停用一些inetd管理的服务的话,都是在 /usr/rc.conf里面加上:
sshd_enable="NO"
就行了,于是我就加上
sendmail_enable="NO"
重启系统后,ps一看,sendmail还在,晕!
问网友,才知道,sendmail跟别的不一样,必须设成:
sendmail_enable="NONE"
重启后,就不会启动sendmail了!
一:虚拟机IP配置方法:
二:虚拟机域名配置方法:
二:虚拟机域名配置方法:
经过一晚上的操作,终于成功整合.写一篇文章和大家交流一下经验,什么问题可以联系我. 我使用的操作系统是FreeBSD最新版本6.1,如果是别的操作系统安装方法有少许不一样,请作适当处理.
说明:本文档系alone原创,经过辛勤实验,努力编辑而成,转载无妨,请不要修改任何内容。参考不少前辈文章,不一一列举,谨表感谢!如有错误,敬请好手斧正!费话少说,进入正题.
首先安装整合的工具必不可少.我整个过程用的到工具如下:
Freebsd6.1
下载地址:http://www.freebsd.org
Apache2.2.3
下载地址: http://www.apache.org
Mysql5.0.26 for freebsd
下载地址: http://dev.mysql.com/downloads/
Php5.1.6
下载地址: http://www.php.net/downloads.php
libxml2-2.6.19
下载地址:
http://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.19.tar.gz
libiconv-1.9.1
下载地址: http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz
Phpmyadmin2.9.0.2 for nix
下载地址: http://www.mycodes.net/soft/6369.htm
一、 Freebsd的安装
安装FreeBSD就不讲了,熟悉linux的很容易上手,只要稍微定制一下就可以了,过程我就不说了。建议新手选择ALL安装方式。
二、 安装Apache
安装Apache要简单点,我这里安装的Apache版本是 httpd-2.2.3,下载回来的包叫做 httpd-2.2.3.tar.gz 我们放在 /usr/local/src目录下。如果没有该目录,就自己建一个。
首先进入目录后解压缩:
# cd /usr/local/src
# tar -zxvf httpd-2.0.50.tar.gz
然后就会得到 httpd-2.0.50目录,我们进入目录
# cd httpd-2.0.50
首先配置:
# ./configure --prefix=/usr/local/apache \--enable-module=so
\*--prefix指定我们要把Apache安装在那个目录,我们这里装在 /usr/local/apache下*\
\*--enable-module=so必设,不然后面配置php时要出问题*\
执行上面的命令,如果没有错误信息,证明配置成功,然后进行编译:
# make
一两分钟就编译完了,然后进行安装:
# make install
安装完成后,Apache就存放在 /usr/local/apache目录下了, bin是执行文件的目录,conf是配置文件目录,htdocs是网页的主目录,logs是日志目录.
Apache通过 bin/apachectl或者bin/httpd来控制启动或者停止.
# /usr/local/apache/bin/httpd -k start #启动apache
# /usr/local/apache/bin/httpd -k stop #停止apache
# /usr/local/apache/bin/httpd -k restart #重启apache
然后你可以通过 http://IP来测试apache是否安装成功,如果出现apache的页面则安装成功,否则请检查上面的步骤.
三、 安装MySQL
我使用的的Mysql是5.0.26二进制版,不需要编译。
把它下到/usr/local/src目录下,下载回来的包名字叫 mysql-5.0.26.tar.gz,然后我们把它解压出来:
# tar -zxvf mysql-5.0.26.tar.gz
解压后生成/usr/local/mysql目录,我们进入该目录:
# cd mysql
#pw groupadd mysql #建立mysql组
#pw useradd –g mysql mysql #建立mysql用户并且加入到mysql组中
#scripts/mysql_install_db --user=mysql #初试化表并且规定用mysql用户来访问
#chown -R root . #然后设置权限
#chown -R mysql data
#chgrp -R mysql .
设置完成后,基本上就装好了,好了,我们运行一下我们的mysql:
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
如果没有问题的话,应该会出现类似这样的提示:
[1] 42264 # Starting mysqld daemon with databases from /usr/local/mysql/var
这就证明你安装成功了,如果出现:
[1] 42264
# Starting mysqld daemon with databases from /usr/local/mysql/var
062110 01:53:45 mysqld ended
则证明你的mysql运行不来,请查看错误日志: /usr/local/mysql/var/*.err 然后确定安装是否成功,如果没有成功,请检查上面的步骤是否正确
.
安装完成后,能够通过 /usr/local/mysql/bin/mysql 来连接mysql进行管理,如果你装了apache并且能够解析php的话,也能使用phpMyadmin来管
理你的mysql,记得装完后使用mysql或者mysqladmin来修改root的密码,这里我们就不说了,请参考相关的文章.
四、 安装php5脚本支持
去以下地址下载源代码包到/usr/local/src/下,
接着,安装libxml2 (安装php5必须,我们先不装,测试一下效果):
#cd /usr/local/src
#tar –zxvf php-5.1.6.tar.gz
#cd php-5.1.6
#./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-libxml-dir=/usr/local/libxml2 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
有关于zend 的参数 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
可见php内建对php加速软件zend的支持
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
configure: error: xml2-config not found. Please check your libxml2 installation.
出错啦
现在来装libxml2
#tar –zxvf libxml2-sources-2.6.19.tar.gz
# cd libxml2-2.6.19
# ./configure
#make;make install
再来配置:
# cd /usr/local/src/php-5.1.6
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
显示:
configure: error: Please specify the install prefix of iconv with --with-iconv=;
--with-iconv-dir=DIR XMLRPC-EPI: iconv dir for XMLRPC-EPI.
xmlrpc-epi is an implementation of the xmlrpc protocol in C. It provides an easy to use API for developers to serialize RPC requests to and from XML.
# cd /usr/ports/converters/iconv
# make all
# make install
===>; Installing for iconv-2.0_3
===>; iconv-2.0_3 depends on file: /usr/local/bin/perl5.8.5 - found
===>; Generating temporary packing list
===>; Checking if converters/iconv already installed
pkg_info: package bsdpan-DBD-mysql-2.9007 has no origin recorded
pkg_info: package bsdpan-DBI-1.48 has no origin recorded
===>; lib
install -C -o root -g wheel -m 444 libbiconv.a /usr/local/lib
install -C -o root -g wheel -m 444 libbiconv_p.a /usr/local/lib
install -s -o root -g wheel -m 444 libbiconv.so.2 /usr/local/lib
ln -fs libbiconv.so.2 /usr/local/lib/libbiconv.so
install -C -o root -g wheel -m 444 biconv.h /usr/local/include
install -o root -g wheel -m 444 biconv.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_open.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_close.3.gz /usr/local/man/man3
===>; ccs
cd /usr/ports/converters/iconv/work/iconv-2.0/ccs; install -o root -g wheel -m 444 big5.cct cns11643-plane1.cct cns11643-plane2.cct cns11643-plane14.cct cp775.cct cp850.cct cp852.cct cp855.cct cp866.cct gb_2312-80.cct iso-8859-1.cct iso-8859-2.cct iso-8859-4.cct iso-8859-5.cct iso-8859-15.cct jis_x0201.cct jis_x0208-1983.cct jis_x0212-1990.cct koi8-r.cct koi8-u.cct ksx1001.cct shift_jis.cct /usr/local/share/iconv; install -o root -g wheel -m 555 iconv_mktbl /usr/local/bin
===>; ces
cd /usr/ports/converters/iconv/work/iconv-2.0/ces && install -o root -g wheel -m 444 euc-jp.so euc-kr.so euc-tw.so gb2312.so iso-10646-ucs-2.so iso-10646-ucs-4.so ucs-2-internal.so utf-16.so /usr/local/libexec/iconv
===>; util
install -s -o root -g wheel -m 555 biconv /usr/local/bin
install -o root -g wheel -m 444 biconv.1.gz /usr/local/man/man1
{ echo "# BEGIN iconv"; cat /usr/ports/converters/iconv/work/iconv-2.0/ccs/charset.aliases /usr/ports/converters/iconv/work/iconv-2.0/ces/charset.aliases | /usr/ports/converters/iconv/work/iconv-2.0/iconv_builtin -n us-ascii utf-8 ucs-4-internal; echo "# END iconv"; } >; /usr/local/share/iconv/charset.aliases
===>; Running ldconfig
/sbin/ldconfig -m /usr/local/lib
===>; Registering installation for iconv-2.0_3
再装libiconv-1.9.1.tar.gz,把libiconv-1.9.1.tar.gz放到/usr/local/src/下
# tar -zvxf libiconv-1.9.1.tar.gz
# cd libiconv-1.9.1
# ./configure
#make;make install
# cd /php-5.0.4
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
到此php5成功配置完成. Thanks : )
#make
#make test
#make install
# cp /usr/local/src/php-5.0.4/php.ini-dist /usr/local/lib/php.ini
配置php.ini请参考手册
五、 phpMyAdmin的安装
phpMyAdmin是比较好的通过web访问方式来管理数据库的免费程序。
下载该程序后,通过flashfxp上传到/usr/local/apache/htdocs/目录下,执行如下命令:
#cd /usr/local/apache/htdocs
#tar –zvxf phpMyAdmin-2.9.0.2.tar.gz
mv –fi phpMyAdmin-2.9.0.2 phpmyadmin
www# cd phpmyadmin
www#cp config..simple.inc.php config.inc.php
修改config.inc.php文件如下:
(1)查找$cfg['PmaAbsoluteUri'] = ''; ,将该行内容更改为$cfg['PmaAbsoluteUri'] = 'http://IP/phpmyadmin/';
执行:wq!命令保存退出,在IE浏览器里输入http://IP/phpmyadmin/就可以访问了。
请注意其中的红色文字,默认的mysql数据库用户名root是没有密码的,这是一个安全漏洞,所以我们要修改数据库的密码,请执行如下步骤:
首先点“权限”,进入另一个页面
在新页面中,勾选三个用户,只剩下一个用户名为root、主机为localhost的用户,然后点“执行”来删除那三个勾选的用户,
只剩下一个root用户了,勾选它,点“编辑”,再点击“更改密码”下面的“密码”前的圆圈,选择它,然后敲入你的mysql数据库密码(比如789),再点“执行”。这样mysql的数据库密码就改变了。当然了,我们也可以通过phpmyadmin来创建新的mysql数据库名,用户名等等,这些功能就要你自己去探索了。我们再点IE浏览器里的“刷新”来刷新该页面,就会出现无法访问的情况。
出现上面的情况后,也不要着急,我们可以修改phpmyadmin的配置文件config.inc.php来解决这个问题,执行如下命令:
www#vi config.inc.php
更改内容如下:
(2)查找$cfg['Servers'][$i]['auth_type'] = 'config';
更改为$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['controluser'] = '你的用户名';
$cfg['Servers'][$i]['controlpass'] = '你的密码';
然后重新在IE浏览器里输入http://IP/phpmyadmin/ 访问,敲入用户名“root”和密码后,点“确定”,就可以重新进入到phpmyadmin管理页面,至此,phpmyadmin安装完毕。
到些,整个过程完毕.你可以上传php网站程序、修改apache的httpd.conf文件配置一台高性能的web服务器,当然也不要忘了mysql数据库对数据库、用户相应的增减。在这里我就不说了。现在已经是凌晨3点,累就一个字。呼呼去咯……
后话:当然你也可以直接选择ports安装,更方便快捷。
附过程:
# cd /usr/ports/www/apache2
# make install clean
# cd /usr/ports/databases/mysql5X-server
# make install clean
# source ~/.cshrc
# mysql_install_db --user=mysql
# cd /usr/ports/lang/php5
# make install clean
在出现的界面中选中apache2, 如果要用zend,不要选debug
cp /usr/local/etc/php.ini-dist php.ini
vi /usr/local/etc/apache2/httpd.conf
添加
AddType application/x-http-php .php
AddType application/x-http-php-source .phps
在 DirectoryIndex 后加一个 index.php
# cd /usr/ports/lang/php5-extensions
# make config
在出现的界面中选种想要的
# make install clean
如果要装zend,去www.zend.com 下载相应的包,解压缩
# ./install.sh
就这么简单。
如果php要装GD libxml2 libxslt 等支持,源码都要自己装,用ports只要选一下就ok了~而且以后方便升级和维护。
由于改版,把资料弄得有点混乱,现在重发下。
说明:本文档系alone原创,经过辛勤实验,努力编辑而成,转载无妨,请不要修改任何内容。参考不少前辈文章,不一一列举,谨表感谢!如有错误,敬请好手斧正!费话少说,进入正题.
首先安装整合的工具必不可少.我整个过程用的到工具如下:
Freebsd6.1
下载地址:http://www.freebsd.org
Apache2.2.3
下载地址: http://www.apache.org
Mysql5.0.26 for freebsd
下载地址: http://dev.mysql.com/downloads/
Php5.1.6
下载地址: http://www.php.net/downloads.php
libxml2-2.6.19
下载地址:
http://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.19.tar.gz
libiconv-1.9.1
下载地址: http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz
Phpmyadmin2.9.0.2 for nix
下载地址: http://www.mycodes.net/soft/6369.htm
一、 Freebsd的安装
安装FreeBSD就不讲了,熟悉linux的很容易上手,只要稍微定制一下就可以了,过程我就不说了。建议新手选择ALL安装方式。
二、 安装Apache
安装Apache要简单点,我这里安装的Apache版本是 httpd-2.2.3,下载回来的包叫做 httpd-2.2.3.tar.gz 我们放在 /usr/local/src目录下。如果没有该目录,就自己建一个。
首先进入目录后解压缩:
# cd /usr/local/src
# tar -zxvf httpd-2.0.50.tar.gz
然后就会得到 httpd-2.0.50目录,我们进入目录
# cd httpd-2.0.50
首先配置:
# ./configure --prefix=/usr/local/apache \--enable-module=so
\*--prefix指定我们要把Apache安装在那个目录,我们这里装在 /usr/local/apache下*\
\*--enable-module=so必设,不然后面配置php时要出问题*\
执行上面的命令,如果没有错误信息,证明配置成功,然后进行编译:
# make
一两分钟就编译完了,然后进行安装:
# make install
安装完成后,Apache就存放在 /usr/local/apache目录下了, bin是执行文件的目录,conf是配置文件目录,htdocs是网页的主目录,logs是日志目录.
Apache通过 bin/apachectl或者bin/httpd来控制启动或者停止.
# /usr/local/apache/bin/httpd -k start #启动apache
# /usr/local/apache/bin/httpd -k stop #停止apache
# /usr/local/apache/bin/httpd -k restart #重启apache
然后你可以通过 http://IP来测试apache是否安装成功,如果出现apache的页面则安装成功,否则请检查上面的步骤.
三、 安装MySQL
我使用的的Mysql是5.0.26二进制版,不需要编译。
把它下到/usr/local/src目录下,下载回来的包名字叫 mysql-5.0.26.tar.gz,然后我们把它解压出来:
# tar -zxvf mysql-5.0.26.tar.gz
解压后生成/usr/local/mysql目录,我们进入该目录:
# cd mysql
#pw groupadd mysql #建立mysql组
#pw useradd –g mysql mysql #建立mysql用户并且加入到mysql组中
#scripts/mysql_install_db --user=mysql #初试化表并且规定用mysql用户来访问
#chown -R root . #然后设置权限
#chown -R mysql data
#chgrp -R mysql .
设置完成后,基本上就装好了,好了,我们运行一下我们的mysql:
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
如果没有问题的话,应该会出现类似这样的提示:
[1] 42264 # Starting mysqld daemon with databases from /usr/local/mysql/var
这就证明你安装成功了,如果出现:
[1] 42264
# Starting mysqld daemon with databases from /usr/local/mysql/var
062110 01:53:45 mysqld ended
则证明你的mysql运行不来,请查看错误日志: /usr/local/mysql/var/*.err 然后确定安装是否成功,如果没有成功,请检查上面的步骤是否正确
.
安装完成后,能够通过 /usr/local/mysql/bin/mysql 来连接mysql进行管理,如果你装了apache并且能够解析php的话,也能使用phpMyadmin来管
理你的mysql,记得装完后使用mysql或者mysqladmin来修改root的密码,这里我们就不说了,请参考相关的文章.
四、 安装php5脚本支持
去以下地址下载源代码包到/usr/local/src/下,
接着,安装libxml2 (安装php5必须,我们先不装,测试一下效果):
#cd /usr/local/src
#tar –zxvf php-5.1.6.tar.gz
#cd php-5.1.6
#./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-libxml-dir=/usr/local/libxml2 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
有关于zend 的参数 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
可见php内建对php加速软件zend的支持
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
configure: error: xml2-config not found. Please check your libxml2 installation.
出错啦
现在来装libxml2
#tar –zxvf libxml2-sources-2.6.19.tar.gz
# cd libxml2-2.6.19
# ./configure
#make;make install
再来配置:
# cd /usr/local/src/php-5.1.6
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
显示:
configure: error: Please specify the install prefix of iconv with --with-iconv=
--with-iconv-dir=DIR XMLRPC-EPI: iconv dir for XMLRPC-EPI.
xmlrpc-epi is an implementation of the xmlrpc protocol in C. It provides an easy to use API for developers to serialize RPC requests to and from XML.
# cd /usr/ports/converters/iconv
# make all
# make install
===>; Installing for iconv-2.0_3
===>; iconv-2.0_3 depends on file: /usr/local/bin/perl5.8.5 - found
===>; Generating temporary packing list
===>; Checking if converters/iconv already installed
pkg_info: package bsdpan-DBD-mysql-2.9007 has no origin recorded
pkg_info: package bsdpan-DBI-1.48 has no origin recorded
===>; lib
install -C -o root -g wheel -m 444 libbiconv.a /usr/local/lib
install -C -o root -g wheel -m 444 libbiconv_p.a /usr/local/lib
install -s -o root -g wheel -m 444 libbiconv.so.2 /usr/local/lib
ln -fs libbiconv.so.2 /usr/local/lib/libbiconv.so
install -C -o root -g wheel -m 444 biconv.h /usr/local/include
install -o root -g wheel -m 444 biconv.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_open.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_close.3.gz /usr/local/man/man3
===>; ccs
cd /usr/ports/converters/iconv/work/iconv-2.0/ccs; install -o root -g wheel -m 444 big5.cct cns11643-plane1.cct cns11643-plane2.cct cns11643-plane14.cct cp775.cct cp850.cct cp852.cct cp855.cct cp866.cct gb_2312-80.cct iso-8859-1.cct iso-8859-2.cct iso-8859-4.cct iso-8859-5.cct iso-8859-15.cct jis_x0201.cct jis_x0208-1983.cct jis_x0212-1990.cct koi8-r.cct koi8-u.cct ksx1001.cct shift_jis.cct /usr/local/share/iconv; install -o root -g wheel -m 555 iconv_mktbl /usr/local/bin
===>; ces
cd /usr/ports/converters/iconv/work/iconv-2.0/ces && install -o root -g wheel -m 444 euc-jp.so euc-kr.so euc-tw.so gb2312.so iso-10646-ucs-2.so iso-10646-ucs-4.so ucs-2-internal.so utf-16.so /usr/local/libexec/iconv
===>; util
install -s -o root -g wheel -m 555 biconv /usr/local/bin
install -o root -g wheel -m 444 biconv.1.gz /usr/local/man/man1
{ echo "# BEGIN iconv"; cat /usr/ports/converters/iconv/work/iconv-2.0/ccs/charset.aliases /usr/ports/converters/iconv/work/iconv-2.0/ces/charset.aliases | /usr/ports/converters/iconv/work/iconv-2.0/iconv_builtin -n us-ascii utf-8 ucs-4-internal; echo "# END iconv"; } >; /usr/local/share/iconv/charset.aliases
===>; Running ldconfig
/sbin/ldconfig -m /usr/local/lib
===>; Registering installation for iconv-2.0_3
再装libiconv-1.9.1.tar.gz,把libiconv-1.9.1.tar.gz放到/usr/local/src/下
# tar -zvxf libiconv-1.9.1.tar.gz
# cd libiconv-1.9.1
# ./configure
#make;make install
# cd /php-5.0.4
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
到此php5成功配置完成. Thanks : )
#make
#make test
#make install
# cp /usr/local/src/php-5.0.4/php.ini-dist /usr/local/lib/php.ini
配置php.ini请参考手册
五、 phpMyAdmin的安装
phpMyAdmin是比较好的通过web访问方式来管理数据库的免费程序。
下载该程序后,通过flashfxp上传到/usr/local/apache/htdocs/目录下,执行如下命令:
#cd /usr/local/apache/htdocs
#tar –zvxf phpMyAdmin-2.9.0.2.tar.gz
mv –fi phpMyAdmin-2.9.0.2 phpmyadmin
www# cd phpmyadmin
www#cp config..simple.inc.php config.inc.php
修改config.inc.php文件如下:
(1)查找$cfg['PmaAbsoluteUri'] = ''; ,将该行内容更改为$cfg['PmaAbsoluteUri'] = 'http://IP/phpmyadmin/';
执行:wq!命令保存退出,在IE浏览器里输入http://IP/phpmyadmin/就可以访问了。
请注意其中的红色文字,默认的mysql数据库用户名root是没有密码的,这是一个安全漏洞,所以我们要修改数据库的密码,请执行如下步骤:
首先点“权限”,进入另一个页面
在新页面中,勾选三个用户,只剩下一个用户名为root、主机为localhost的用户,然后点“执行”来删除那三个勾选的用户,
只剩下一个root用户了,勾选它,点“编辑”,再点击“更改密码”下面的“密码”前的圆圈,选择它,然后敲入你的mysql数据库密码(比如789),再点“执行”。这样mysql的数据库密码就改变了。当然了,我们也可以通过phpmyadmin来创建新的mysql数据库名,用户名等等,这些功能就要你自己去探索了。我们再点IE浏览器里的“刷新”来刷新该页面,就会出现无法访问的情况。
出现上面的情况后,也不要着急,我们可以修改phpmyadmin的配置文件config.inc.php来解决这个问题,执行如下命令:
www#vi config.inc.php
更改内容如下:
(2)查找$cfg['Servers'][$i]['auth_type'] = 'config';
更改为$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['controluser'] = '你的用户名';
$cfg['Servers'][$i]['controlpass'] = '你的密码';
然后重新在IE浏览器里输入http://IP/phpmyadmin/ 访问,敲入用户名“root”和密码后,点“确定”,就可以重新进入到phpmyadmin管理页面,至此,phpmyadmin安装完毕。
到些,整个过程完毕.你可以上传php网站程序、修改apache的httpd.conf文件配置一台高性能的web服务器,当然也不要忘了mysql数据库对数据库、用户相应的增减。在这里我就不说了。现在已经是凌晨3点,累就一个字。呼呼去咯……
后话:当然你也可以直接选择ports安装,更方便快捷。
附过程:
# cd /usr/ports/www/apache2
# make install clean
# cd /usr/ports/databases/mysql5X-server
# make install clean
# source ~/.cshrc
# mysql_install_db --user=mysql
# cd /usr/ports/lang/php5
# make install clean
在出现的界面中选中apache2, 如果要用zend,不要选debug
cp /usr/local/etc/php.ini-dist php.ini
vi /usr/local/etc/apache2/httpd.conf
添加
AddType application/x-http-php .php
AddType application/x-http-php-source .phps
在 DirectoryIndex 后加一个 index.php
# cd /usr/ports/lang/php5-extensions
# make config
在出现的界面中选种想要的
# make install clean
如果要装zend,去www.zend.com 下载相应的包,解压缩
# ./install.sh
就这么简单。
如果php要装GD libxml2 libxslt 等支持,源码都要自己装,用ports只要选一下就ok了~而且以后方便升级和维护。
由于改版,把资料弄得有点混乱,现在重发下。
<script language="javascript">
function setcheckboxes(str)
{
var ischecked = document.form4.boxname.checked;
var element = document.getElementsByName(str);
var num = (typeof(element.length) != 'undefined') ? element.length : 0;
if (num)
{
for (var i = 0; i < num; i++)
{
element[i].checked = ischecked;
}
}
else
{
element.checked = ischecked;
}
document.getElementsByName('boxname').checked=ischecked;
}
</script>
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<form action="" method="POST" name="form4">
<td colspan="7" style="text-align:left;"><input type="checkbox" name="boxname" id="boxname" onclick="setcheckboxes('checkent[]')" value="aa1" style="margin:0 0 0 0.7%" />
<label for="aa1">全选/取消</label></td>
</tr>
</form>
function setcheckboxes(str)
{
var ischecked = document.form4.boxname.checked;
var element = document.getElementsByName(str);
var num = (typeof(element.length) != 'undefined') ? element.length : 0;
if (num)
{
for (var i = 0; i < num; i++)
{
element[i].checked = ischecked;
}
}
else
{
element.checked = ischecked;
}
document.getElementsByName('boxname').checked=ischecked;
}
</script>
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<tr align=left> <td class="ck"><input name="checkent[]" type="checkbox" value="%s" />
<form action="" method="POST" name="form4">
<td colspan="7" style="text-align:left;"><input type="checkbox" name="boxname" id="boxname" onclick="setcheckboxes('checkent[]')" value="aa1" style="margin:0 0 0 0.7%" />
<label for="aa1">全选/取消</label></td>
</tr>
</form>
<TD colspan=3 width=600 bgColor=#B2DFEE>工作日志提交人:$name<TD></TR>
style=table-layout: fixed这种属性很少用,直接用width就fix了
#wrap{word-break:break-all; width:888px; overflow:auto;}
<div id="wrap">字。。。</div>
(firfox出现滚动条)
dony:
word-wrap:break-word;
参考了解:http://homepage.yesky.com/207/7707707.shtml
style=table-layout: fixed这种属性很少用,直接用width就fix了
#wrap{word-break:break-all; width:888px; overflow:auto;}
<div id="wrap">字。。。</div>
(firfox出现滚动条)
dony:
word-wrap:break-word;
参考了解:http://homepage.yesky.com/207/7707707.shtml
安装所需软件
sendmail.8.12.10.tar.gz http://www.sendmail.org/
cyrus-sasl-2.1.18.tar.gz http://asg.web.cmu.edu/cyrus/
安装步骤
1、先安装cyrus-sasl-2.1.18.tar.gz,sendmail安装时要用到sasl(简单认证和安全层协议)的库文件的头文件。
解压缩:
# tar -zxvf cyrus-sasl-2.1.18.tar.gz
编译:
进入刚解压的源码目录,运行以下命令完成安装。
#./configure --prefix=/usr/local/sasl2 --enable-login
一定要加--enable-login,因为SASL2默认不支持login这种验证方式,而OUTLOOK是通过login来进行SMTP验证的。
#make # 编译
#make install # 安装
完成以上linux程序安装三步曲之后,就可以开始配置和测试了。
2、配置SASL
为了把SASL应用于sendmail认证,还需进行一些配置工作。sendmail会到/usr/lib目录下去找SASL2库,而我们是把程序安装在 /usr/local/sasl2中,为什么不把软件安装在/usr/lib目录呢?这主要是为了好管理自已安装的软件啦。所以我们要在/usr/lib 目录下做一个链接:
# cd /usr/lib
# ln -s /usr/local/sasl2/lib/* .
ok,接着要在/var/目录下建一个目录给saslauthd进程存在临时数据。
# cd /var
# mkdir state
# cd state
# mkdir saslauthd
注:如果没有这些目录,运行saslauthd时,会提示出错。
ok, 接着为确保CYRUS-SASL2函数库知道怎样验证所收来的SASL认证请求,必须创建一个SASL的配置文件来把MTA程序定义成一个SASL 应用。配置文件名为Sendmail.conf(注意是大写的S),位于/usr/lib/sasl2目录中,也就是 /usr/local/sasl2/lib/sasl2这个目录,记得上面新建的链接了吗?在该文件中你定义你希望使用的认证数据库方法,以下这个例子使用saslauthd来验证认证请求。
# cd /usr/lib/sasl2
# echo 'pwcheck_method: saslauthd' > Sendmail.conf
3、测试
ok,现在可以运行saslauthd了,并进行测试。
# cd /usr/local/sasl2/sbin
# ./saslauthd -a shadow
用shadow的用户和密码进行验证
# ./testsaslauthd -u userid -p password
0: OK "Success."
如果出现以上信息,就说明saslauthd正常运行了。testsaslauthd程序默认是没有编译的,你需要在源码目录树的saslauthd子目录中运行 # make testsaslauthd命令生成。
4、sasl2安装完成后,就要开始安装sendmail了。
先解压sendmail源码。
# tar -zxvf sendmail.8.12.10.tar.gz
如果要sendmail支持SASL,需要修改源码的位置配置文件site.config.m4。site.config.m4位于源码目录树的devtools/Site。文件中应包含以下行:
PREPENDDEF(`confMAPDEF', `-DMAP_REGEX')
APPENDDEF(`confENVDEF', `-DTCPWRAPPERS -DSASL=2')
APPENDDEF(`conf_sendmail_LIBS', `-lwrap -lsasl2')
APPENDDEF(`confLIBDIRS', `-L/usr/local/sasl2/lib')
APPENDDEF(`confINCDIRS', `-I/usr/local/sasl2/include')
第一行配置正则表达式相关内容
第二、三行配置表示在sendmail程序中支持sasl2和tcp_wrapper(可通过hosts.allow和hosts.deny控制访问)
第四、五行配置指出sasl2的库文件和头文件的位置。
ok,接着在编译前要建立一些用户和目录,并确保有正确的权限。
sendmail必须有一个set-group-id(默认是smmsp组)的程序来在一个组可写的目录中查询排队邮件。所以我们要建立一个smmsp用户和组。并建立如下目录并设置相应的权限,具体设置要求可查询源码目录树下sendmail/SECURITY文档。
# groupadd smmsp
# useradd smmsp -d /var/spool/clientmqueue -s /dev/null
# mkdir /var/spool/clientmqueue
# chown -R smmsp:smmsp /var/spool/clientmqueue
# chmod -R 770 /var/spool/clientmqueue
# mkdir /etc/mail
# mkdir /var/spool/mqueue
# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
ok,接下来就可以进入源码目录树开始编译了。
# ./Build -c
-c选项能删除上次编译产生的文件。
# ./Build install
编译完成后就可以进行安装。
5、sendmail配置
要sendmail 正常运行,还需配置几个文件,首先最重要的就是sendmail.cf 文件了。它在源码目录树下的cf/cf目录下有很多例子可参考。你可以拷贝使用。由于sendmail.cf中的语法很复杂,所以不建议手工修改。我们可以以sendmail.mc文档配合sendmail-cf目录下的宏通过m4预处理器自动生成。m4预处理器用来从一组宏文件中创建sendmail配置文件。宏文件作为输入被读进来。宏被展开,然后写到一个输出文件。sendmail-cf目录一般放在/usr/share目录下。其实 sendmail-cf目录的内容和源码目录树下的cf目录的内容是一样的,所以,为了保证sendmail-cf目录的内容与安装版本同步,要把源码目录树下的cf目录的内容拷贝到/usr/share/sendmail-cf目录。
sendmail.mc配置文档内容如下:
divert(-1)
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
dnl Uncomment and edit the following line if your mail needs to be sent out
dnl through an external mail server:
dnl define(`SMART_HOST',`smtp.your.provider')
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/mail/aliases')dnl
define(`STATUS_FILE', `/etc/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')
dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
define(`confTO_IDENT', `0')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl The '-t' option will retry delivery if e.g. the user runs over his quota.
sendmail.8.12.10.tar.gz http://www.sendmail.org/
cyrus-sasl-2.1.18.tar.gz http://asg.web.cmu.edu/cyrus/
安装步骤
1、先安装cyrus-sasl-2.1.18.tar.gz,sendmail安装时要用到sasl(简单认证和安全层协议)的库文件的头文件。
解压缩:
# tar -zxvf cyrus-sasl-2.1.18.tar.gz
编译:
进入刚解压的源码目录,运行以下命令完成安装。
#./configure --prefix=/usr/local/sasl2 --enable-login
一定要加--enable-login,因为SASL2默认不支持login这种验证方式,而OUTLOOK是通过login来进行SMTP验证的。
#make # 编译
#make install # 安装
完成以上linux程序安装三步曲之后,就可以开始配置和测试了。
2、配置SASL
为了把SASL应用于sendmail认证,还需进行一些配置工作。sendmail会到/usr/lib目录下去找SASL2库,而我们是把程序安装在 /usr/local/sasl2中,为什么不把软件安装在/usr/lib目录呢?这主要是为了好管理自已安装的软件啦。所以我们要在/usr/lib 目录下做一个链接:
# cd /usr/lib
# ln -s /usr/local/sasl2/lib/* .
ok,接着要在/var/目录下建一个目录给saslauthd进程存在临时数据。
# cd /var
# mkdir state
# cd state
# mkdir saslauthd
注:如果没有这些目录,运行saslauthd时,会提示出错。
ok, 接着为确保CYRUS-SASL2函数库知道怎样验证所收来的SASL认证请求,必须创建一个SASL的配置文件来把MTA程序定义成一个SASL 应用。配置文件名为Sendmail.conf(注意是大写的S),位于/usr/lib/sasl2目录中,也就是 /usr/local/sasl2/lib/sasl2这个目录,记得上面新建的链接了吗?在该文件中你定义你希望使用的认证数据库方法,以下这个例子使用saslauthd来验证认证请求。
# cd /usr/lib/sasl2
# echo 'pwcheck_method: saslauthd' > Sendmail.conf
3、测试
ok,现在可以运行saslauthd了,并进行测试。
# cd /usr/local/sasl2/sbin
# ./saslauthd -a shadow
用shadow的用户和密码进行验证
# ./testsaslauthd -u userid -p password
0: OK "Success."
如果出现以上信息,就说明saslauthd正常运行了。testsaslauthd程序默认是没有编译的,你需要在源码目录树的saslauthd子目录中运行 # make testsaslauthd命令生成。
4、sasl2安装完成后,就要开始安装sendmail了。
先解压sendmail源码。
# tar -zxvf sendmail.8.12.10.tar.gz
如果要sendmail支持SASL,需要修改源码的位置配置文件site.config.m4。site.config.m4位于源码目录树的devtools/Site。文件中应包含以下行:
PREPENDDEF(`confMAPDEF', `-DMAP_REGEX')
APPENDDEF(`confENVDEF', `-DTCPWRAPPERS -DSASL=2')
APPENDDEF(`conf_sendmail_LIBS', `-lwrap -lsasl2')
APPENDDEF(`confLIBDIRS', `-L/usr/local/sasl2/lib')
APPENDDEF(`confINCDIRS', `-I/usr/local/sasl2/include')
第一行配置正则表达式相关内容
第二、三行配置表示在sendmail程序中支持sasl2和tcp_wrapper(可通过hosts.allow和hosts.deny控制访问)
第四、五行配置指出sasl2的库文件和头文件的位置。
ok,接着在编译前要建立一些用户和目录,并确保有正确的权限。
sendmail必须有一个set-group-id(默认是smmsp组)的程序来在一个组可写的目录中查询排队邮件。所以我们要建立一个smmsp用户和组。并建立如下目录并设置相应的权限,具体设置要求可查询源码目录树下sendmail/SECURITY文档。
# groupadd smmsp
# useradd smmsp -d /var/spool/clientmqueue -s /dev/null
# mkdir /var/spool/clientmqueue
# chown -R smmsp:smmsp /var/spool/clientmqueue
# chmod -R 770 /var/spool/clientmqueue
# mkdir /etc/mail
# mkdir /var/spool/mqueue
# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
ok,接下来就可以进入源码目录树开始编译了。
# ./Build -c
-c选项能删除上次编译产生的文件。
# ./Build install
编译完成后就可以进行安装。
5、sendmail配置
要sendmail 正常运行,还需配置几个文件,首先最重要的就是sendmail.cf 文件了。它在源码目录树下的cf/cf目录下有很多例子可参考。你可以拷贝使用。由于sendmail.cf中的语法很复杂,所以不建议手工修改。我们可以以sendmail.mc文档配合sendmail-cf目录下的宏通过m4预处理器自动生成。m4预处理器用来从一组宏文件中创建sendmail配置文件。宏文件作为输入被读进来。宏被展开,然后写到一个输出文件。sendmail-cf目录一般放在/usr/share目录下。其实 sendmail-cf目录的内容和源码目录树下的cf目录的内容是一样的,所以,为了保证sendmail-cf目录的内容与安装版本同步,要把源码目录树下的cf目录的内容拷贝到/usr/share/sendmail-cf目录。
sendmail.mc配置文档内容如下:
divert(-1)
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
dnl Uncomment and edit the following line if your mail needs to be sent out
dnl through an external mail server:
dnl define(`SMART_HOST',`smtp.your.provider')
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/mail/aliases')dnl
define(`STATUS_FILE', `/etc/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')
dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
define(`confTO_IDENT', `0')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl The '-t' option will retry delivery if e.g. the user runs over his quota.
请参阅 Ubuntu简介
请参阅 添加其他软件库
请参阅 安装Codecs
请参阅 安装DVDPlayback
sudo apt-get install mplayer
sudo apt-get install mplayer-fonts
sudo apt-get install mozilla-mplayer
sudo cp /etc/mplayer/mplayer.conf /etc/mplayer/mplayer.conf_backup
sudo gedit /etc/mplayer/mplayer.conf
找出下面这一行
...
vo=x11, # To specify default video driver (see -vo help for
...
以下面这一行取代
vo=xv, # To specify default video driver (see -vo help for
安装 w32codecs解码器(用于播放wmv、rmvb等常见windows平台下的多媒体文件;假设你已经添加了ubuntu-cn源)。
$ sudo apt-get install w32codecs
你也可以自己到Mplayer网站下载最新的解码包,网址是 http://www.mplayerhq.hu/design7/dload.html 选择其中“Binary Codec Packages”标题下的“linux x86 ...”, 如Linux x86 20061022, 下载後解压到 /usr/lib/win32/ 即可。
* 配置中文字幕显示(可选)
cd ; mkdir .mplayer
ln -sf /usr/share/fonts/truetype/arphic/uming.ttf .mplayer/subfont.ttf
gedit .mplayer/gui.conf
sub_cp = "GBK"
font_text_scale = "4.000000"
font_osd_scale = "4.000000"
sub_fuzziness=2
mplayer皮肤的安装:假设下载回来的是名字是skin_name.tar.bz2的压缩包:(以下操作以在Nautilus文件管理器下操作为主)
解压缩下载回来的tar.bz2包,得到skin_name这个文件夹。接下来把这个文件夹剪切到自己home目录下的 .mplayer/skins下,此目录为隐藏属性需要ctrl+h键才能看到。#mplayer皮肤列表中将显示为the_other_name
1. 请参阅 刷新GNOME面板
2. 应用程序 -> 影音 -> MPlayer
3. 重启Firefox使mozilla-mplayer插件生效
请参阅 添加其他软件库
请参阅 安装Codecs
请参阅 安装DVDPlayback
sudo apt-get install mplayer
sudo apt-get install mplayer-fonts
sudo apt-get install mozilla-mplayer
sudo cp /etc/mplayer/mplayer.conf /etc/mplayer/mplayer.conf_backup
sudo gedit /etc/mplayer/mplayer.conf
找出下面这一行
...
vo=x11, # To specify default video driver (see -vo help for
...
以下面这一行取代
vo=xv, # To specify default video driver (see -vo help for
安装 w32codecs解码器(用于播放wmv、rmvb等常见windows平台下的多媒体文件;假设你已经添加了ubuntu-cn源)。
$ sudo apt-get install w32codecs
你也可以自己到Mplayer网站下载最新的解码包,网址是 http://www.mplayerhq.hu/design7/dload.html 选择其中“Binary Codec Packages”标题下的“linux x86 ...”, 如Linux x86 20061022, 下载後解压到 /usr/lib/win32/ 即可。
* 配置中文字幕显示(可选)
cd ; mkdir .mplayer
ln -sf /usr/share/fonts/truetype/arphic/uming.ttf .mplayer/subfont.ttf
gedit .mplayer/gui.conf
sub_cp = "GBK"
font_text_scale = "4.000000"
font_osd_scale = "4.000000"
sub_fuzziness=2
mplayer皮肤的安装:假设下载回来的是名字是skin_name.tar.bz2的压缩包:(以下操作以在Nautilus文件管理器下操作为主)
解压缩下载回来的tar.bz2包,得到skin_name这个文件夹。接下来把这个文件夹剪切到自己home目录下的 .mplayer/skins下,此目录为隐藏属性需要ctrl+h键才能看到。#mplayer皮肤列表中将显示为the_other_name
1. 请参阅 刷新GNOME面板
2. 应用程序 -> 影音 -> MPlayer
3. 重启Firefox使mozilla-mplayer插件生效
cat cpp.txt | awk -F " " '{print $2}' | awk -F "|" '{print "cat "$1"|grep WebMailTmpl >>/tmp/" $1}'
ls -lsa | grep sample | awk '{print $10}' | awk -F ".s" '{print "mv " $1 ".sample "$1}'|sh
==> actions.cpp <==
WebMailTmpl(tmpl,"actions");
==> addjunk.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"addjunk");
==> autoavset.cpp <==
WebMailTmpl(tmpl, "autoavset");
==> changeusrpsw.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"changeusrpsw");
==> chkmsgs.cpp <==
if(folder=="new") WebMailTmpl(tmpl,"chkmsgs_new");
else if(folder=="tmp") WebMailTmpl(tmpl,"chkmsgs_tmp");
else if(folder=="out") WebMailTmpl(tmpl,"chkmsgs_out");
else if(folder=="cur") WebMailTmpl(tmpl,"chkmsgs_cur");
else if(folder=="sinajunk") WebMailTmpl(tmpl,"chkmsgs_junk");
else WebMailTmpl(tmpl,"chkmsgs");
==> chknewmsgs.cpp <==
WebMailTmpl(tmpl,"chknewmsgs");
==> compose.cpp <==
WebMailTmpl(tmpl,"mordcompose");
WebMailTmpl(tmpl,"compose");
==> favorite.cpp <==
WebMailTmpl(tmpl,"favorite");
==> fax.cpp <==
WebMailTmpl(tmpl,"send_ok");
==> folder.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"folder_add");
CTmpl tmpl;WebMailTmpl(tmpl,"folder_add");
CTmpl tmpl;WebMailTmpl(tmpl,"folder_list");
==> folderfunc.cpp <==
// modi global WebMailTmpl
==> global.cpp <==
void WebMailTmpl(CTmpl& tmpl,LPCSTR tmplname) {
WebMailTmpl(tmpl,"alert");
WebMailTmpl(tmpl,"alert2");
==> junkmail.cpp <==
WebMailTmpl(tmpl, "junkmail");
==> mail.cpp <==
WebMailTmpl(tmpl,"sinamail");
==> mailboxinfo.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"mailboxinfo");
==> mailfilter.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"mailfilter");
==> mailrv.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"mailrv");
==> mailwarn.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"warn");
==> pop.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"pop_add");
CTmpl tmpl;WebMailTmpl(tmpl,"pop_add");
CTmpl tmpl;WebMailTmpl(tmpl,"pop_list");
==> prof.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"profile");
==> rdMail.cpp <==
WebMailTmpl(tmpl, tmplfn);
==> redirect.cpp <==
==> refuse.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"refuse");
==> reply.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"reply");
==> scompose.cpp <==
WebMailTmpl(tmpl,"smordcompose");
WebMailTmpl(tmpl,"scompose");
==> search.cpp <==
WebMailTmpl(tmpl,"search_result");
WebMailTmpl(tmpl,"search");
==> sendmsg.cpp <==
WebMailTmpl(tmpl,"draft_save");
WebMailTmpl(tmpl,"send_ok");
==> setautocc.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"setautocc");
==> sizeandfilter.cpp <==
==> srdMail.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"smail_body");
==> ssendmsg.cpp <==
WebMailTmpl(tmpl,"send_ok");
==> ssetting.cpp <==
WebMailTmpl(tmpl,"ssetting");
ls -lsa | grep sample | awk '{print $10}' | awk -F ".s" '{print "mv " $1 ".sample "$1}'|sh
==> actions.cpp <==
WebMailTmpl(tmpl,"actions");
==> addjunk.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"addjunk");
==> autoavset.cpp <==
WebMailTmpl(tmpl, "autoavset");
==> changeusrpsw.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"changeusrpsw");
==> chkmsgs.cpp <==
if(folder=="new") WebMailTmpl(tmpl,"chkmsgs_new");
else if(folder=="tmp") WebMailTmpl(tmpl,"chkmsgs_tmp");
else if(folder=="out") WebMailTmpl(tmpl,"chkmsgs_out");
else if(folder=="cur") WebMailTmpl(tmpl,"chkmsgs_cur");
else if(folder=="sinajunk") WebMailTmpl(tmpl,"chkmsgs_junk");
else WebMailTmpl(tmpl,"chkmsgs");
==> chknewmsgs.cpp <==
WebMailTmpl(tmpl,"chknewmsgs");
==> compose.cpp <==
WebMailTmpl(tmpl,"mordcompose");
WebMailTmpl(tmpl,"compose");
==> favorite.cpp <==
WebMailTmpl(tmpl,"favorite");
==> fax.cpp <==
WebMailTmpl(tmpl,"send_ok");
==> folder.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"folder_add");
CTmpl tmpl;WebMailTmpl(tmpl,"folder_add");
CTmpl tmpl;WebMailTmpl(tmpl,"folder_list");
==> folderfunc.cpp <==
// modi global WebMailTmpl
==> global.cpp <==
void WebMailTmpl(CTmpl& tmpl,LPCSTR tmplname) {
WebMailTmpl(tmpl,"alert");
WebMailTmpl(tmpl,"alert2");
==> junkmail.cpp <==
WebMailTmpl(tmpl, "junkmail");
==> mail.cpp <==
WebMailTmpl(tmpl,"sinamail");
==> mailboxinfo.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"mailboxinfo");
==> mailfilter.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"mailfilter");
==> mailrv.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"mailrv");
==> mailwarn.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"warn");
==> pop.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"pop_add");
CTmpl tmpl;WebMailTmpl(tmpl,"pop_add");
CTmpl tmpl;WebMailTmpl(tmpl,"pop_list");
==> prof.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"profile");
==> rdMail.cpp <==
WebMailTmpl(tmpl, tmplfn);
==> redirect.cpp <==
==> refuse.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"refuse");
==> reply.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"reply");
==> scompose.cpp <==
WebMailTmpl(tmpl,"smordcompose");
WebMailTmpl(tmpl,"scompose");
==> search.cpp <==
WebMailTmpl(tmpl,"search_result");
WebMailTmpl(tmpl,"search");
==> sendmsg.cpp <==
WebMailTmpl(tmpl,"draft_save");
WebMailTmpl(tmpl,"send_ok");
==> setautocc.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"setautocc");
==> sizeandfilter.cpp <==
==> srdMail.cpp <==
CTmpl tmpl;WebMailTmpl(tmpl,"smail_body");
==> ssendmsg.cpp <==
WebMailTmpl(tmpl,"send_ok");
==> ssetting.cpp <==
WebMailTmpl(tmpl,"ssetting");
1. 安装Mysql
2. 安装Apache
3. 安装PHP
4. 配置httpd.conf
5. 启动/停止apache
1. 安装Mysql
================
《MySQL Reference Manual》手册中提供了标准安装方法,详见"MySQL Reference Manual -> 2. Installing MySQL -> 2.7. Installing MySQL on Other Unix-Like Systems"
1.1 二进制版本的安装方法
# created by wandering 2005/04/09
--------------------------
#
# 目前的Mysql都是编译好的二进制代码,configure后可直接使用,且无需初始化数据库
# 默认情况,我把安装文件放在/usr/src目录中,把应用安装到/usr/local目录中
#
shell> 先创建mysql用户和mysql组
shell> cd /usr/local
shell> tar zxvf mysql-standard-4.1.11-unknown-freebsd4.7-i386.tar.gz
shell> ln -s ./mysql-standard-4.1.11-unknown-freebsd4.7-i386 ./mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
shell> /usr/local/mysql/bin/mysqld_safe --user=root &
shell> echo "/usr/local/mysql/bin/mysqld_safe &" >> /etc/rc.local
OK,Mysql已安装完毕。
1.2 源代码版本的编译安装方法
# added by wandering 2005/12/28
-----------------------------
有时我们也需要编译安装, 最近我在FreeBSD6.0上安装Mysql时, 发现Mysql的二进制版本最高只支持FreeBSD5.3, 经测试, 二进制的安装方法没有成功. 只好手工编译安装了.
安装之前一定要仔细看看INSTALL-SOURCE这个文件, 非常之有用啊!!!
shell> pw group add mysql
shell> pw user add -n mysql -d /usr/local/mysql -s /usr/sbin/nologin
shell> tar zxvf mysql-5.0.18
shell> cd mysql-5.0.18
shell> ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> mkdir data
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
shell> echo "/usr/local/mysql/bin/mysqld_safe &" >> /etc/rc.local
OK, 可以用了.
用netstat命令可以看到服务器3306端口处于监听状态。
/usr/local/mysql/bin/mysqladmin -u root -p password
enter password:
# 修改root口令,root初始密码为空,所以直接回车就可以了
测试一下新的密码:
mysql -u root -p mysql
enter password:
*注意: 有的时候在一些系统上, mysql要求必须要有mysql.host表存在, 才能正常启动mysql服务进程. 只好把别的机子上的mysql.host的三个文件拷贝过来才能解决. 奇怪!
2. 安装Apache
===============
*注意: 建议先安装perl, 再安装apache.
# tar zxvf httpd-2.2.0.tar.gz
# cd httpd-2.2.0
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=all --enable-rewrite=shared --enable-speling=shared && make && make install
#
**注: 其中--enable-so选项是配置Apache以共享后安装的模块
3. 安装PHP
============
步骤:
3.1 安装gd-2.0.33.tar.gz
3.2 安装libxml2-2.6.27.tar.gz
3.3 安装libiconv-1.9.2.tar.gz
3.4 安装php
3.1 安装gd
------------
gd需要以下模块:
. zlib-1.2.3.tar.gz
. libpng-1.2.8-config.tar.gz
. freetype-2.1.10.tar.gz (可选装)
. xpm-3.4k.tar.gz (可选装)
. jpegsrc.v6b.tar.gz (可选装)
3.1.1 安装zlib
-----------------
# tar zxvf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
# ./configure && make && make install
默认情况zlib被安装到/usr/local/include/
http://directory.fsf.org/zlib.html
http://www.zlib.net/
3.1.2 安装libpng
----------------
# tar zxvf libpng-1.2.12.tar.gz
# cd libpng-1.2.12
# ./configure && make && make install
默认情况libpng被安装到/usr/local/include/libpng/
http://www.libpng.org/pub/png/libpng.html
3.1.3 安装gd
--------------
# tar zxvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# cp /usr/local/include/png.h .
# cp /usr/local/include/pngconf.h .
# ./configure && make && make install
#
*** 我遇到过gd_png.c找不到png库文件的情况, 这时要手工把png.h和pngconf.h两个文件拷贝到gd_png.c所在目录就可以了. ***
默认情况gd被安装到/usr/local/include/
http://www.boutell.com/gd/
3.2 安装libxml2
-----------------
# tar zxvf libxml2-2.6.26.tar.gz
# cd libxml2-2.6.26
# ./configure && make && make install
#
http://xmlsoft.org/
3.3 安装libiconv
-------------------
# tar zxvf libiconv-1.9.2.tar.gz
# cd libiconv-1.9.2
# ./configure && make && make install
#
http://www.gnu.org/software/libiconv/
3.4 安装PHP
--------------
# tar zvxf php-5.1.4.tar.gz
# cd php-5.1.4
# vi /usr/local/apache/bin/apxs
将"#!/replace/with/path/to/perl/interpreter -w"替换为"#!/usr/bin/perl -w"
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --with-libxml-dir=/usr/local/include/libxml2/libxml --enable-mbstring --with-gd --with-zlib
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini
# vi /usr/local/php/lib/php.ini
php.ini配置:
1、找到;default_charset = "iso-8859-1", 在下面添加default_charset = "gb2312"
2、配置max_execution_time,它的意思为“Maximum execution time of each script, in seconds”,经常需要长时间数据操作或去处的页面应该进行适当调整,这里我设置为300秒。
这是在redhat下编译的一个配置实例:
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --with-libxml-dir=/usr/local/include/libxml2/libxml --with-iconv-dir=/usr/local --enable-mbstring --with-gd --enable-gd-native-ttf --with-jpeg-dir=/usr --with-png-dir=/usr/local --with-zlib-dir=/usr/local --with-ttf=/usr/local --with-freetype-dir=/usr/local
*** 注: 在configure过程中, 可能会遇到下面的错误! Sorry, I cannot run apxs. ***
configure: error: Sorry, I cannot run apxs. Either you need to install Perl or you need to pass the absolute path of apxs by using --with-apxs=/absolute/path/to/apxs
网上有很多介绍解决方法的, 但最经典的只有Darrell Brogdon在2001/03/15写的<
我之所以说这么多, 只是想说明目前我看到的方法, 没有能够真正解决这个问题的.
OK, 下面我说明一下我是如何解决这个问题的:
首先, 通过错误提示, 我们得知"I cannot run apxs". 我一直以为是apxs安装有问题, 但找了很久仍未得到合理的解释和解决方法.
于是我直接运行"/usr/local/apache/bin/apxs"这个脚本, 得到下面的错误提示:
bash: ./apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
哦, 给人的感觉很像仍然是apxs程序有问题, 但问题在哪里呢? "interpreter"是什么呢? interpreter是"解释程序"!
嗯, 看来我们接近答案了, 运行"head -1 /usr/local/apache/bin/apxs"得到下面内容:
#!/replace/with/path/to/perl/interpreter -w
天啊, 这里没有指明正确的perl执行程序的位置! 原来这就才是真正的问题原因所在!!!
把这一行更改为"#!/usr/bin/perl -w". 再运行php的configure, 一切正常!
至此, 问题已解决.
*** Sorry, I cannot run apxs. ***
4. 配置httpd.conf
====================
4.1 找到ServerName , 将 替换为本机的域名
------------------------------------------
ServerName freebsd6.local:80
4.2 找到"DirectoryIndex index.html", 在"index.html"后面加入"index.php"
------------------------------------------------------------------------
DirectoryIndex index.html index.php
4.3 找到
-------------------------------------------------------------------------------
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
4.4 找到
-----------------------------------------------------------------------------
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
4.5 找到
------------------------------------------------------------------------------
AllowOverride None
Options None
Order allow,deny
Allow from all
4.6 找到
----------------------------------------------------------------
Alias /it "/data1/apache/htdocs/it"
Alias /it_old "/data1/apache/htdocs/it_old"
ScriptAlias /perl/ "/data1/apache/htdocs/perl/"
5. 启动/停止apache
=====================
/usr/local/apache/bin/apachectl start
/usr/local/apache/bin/apachectl stop
**注: 要确保主机名能够正常被解析为本机的IP地址.
*** 在执行"/usr/local/apache/bin/apachectl start"的时候可能会出现下面错误提示:
[Fri Dec 30 09:35:01 2005] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter
解决方法:
step 1
-------
编辑/etc/hosts和/etc/rc.conf, 配置主机域名. 例如:
shell> cat /etc/hosts
127.0.0.1 localhost
192.168.177.130 freebsd6 freebsd6.local
shell> cat /etc/rc.conf
hostname="freebsd6.local"
...
step 2
-------
on FreeBSD, you need to add a kernelmodule
kldload accf_http
grep accf /boot/defaults/loader.conf
accf_data_load="NO" # Wait for data accept filter
accf_http_load="NO" # Wait for full HTTP request accept filter
add the second to /boot/loader.conf with 'YES' to enable this permenately.
-----------------------------------------------------------------------------
# 2005/04/09 16:00 - 2005/04/10 13:16 Created by Wandering
# 2005/12/29 23:28 Modified by Wandering
# 2006/03/12 19:31 Modified by Wandering
# 2006/03/18 00:45 Modified by Wandering
# 2006/07/17 23:56 Modified by Wandering
附录:
*Apache 2.0的DSO功能简要说明:
-------------------------------
编译并安装已发布的Apache模块,比如编译mod_foo.c为mod_foo.so的DSO模块:
$ ./configure --prefix=/path/to/install --enable-foo=shared
$ make install
编译并安装第三方Apache模块, 比如编译mod_foo.c为mod_foo.so的DSO模块:
$ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared
$ make install
配置Apache以共享后安装的模块:
$ ./configure --enable-so
$ make install
用apxs在Apache源代码树以外编译并安装第三方Apache模块,比如编译mod_foo.c为mod_foo.so的DSO模块:
$ cd /path/to/3rdparty
$ apxs -c mod_foo.c
$ apxs -i -a -n foo mod_foo.la
共享模块编译完毕以后,都必须在httpd.conf中用LoadModule指令使Apache激活该模块。
看到朋友们在Unix/Linux上装mysql有点麻烦,我也好不容易装完了,所以就来讲件,也许能帮帮大家的忙. 我使用的操作系统是FreeBSD5.2.1,如果别的操作系统安装方法也许不一样,请酌情处理.
安装FreeBSD就不讲了,只要稍微定制一下就可以了,过程我就不说了,我用的FreeBSD版本是5.2.1,应该是现在比较新的版本,以后就不知道了 :) .
一. 安装MySQL
我使用的的Mysql是4.0.20,源代码版,你也可以使用RPM包或者二进制版,安装方法可能不一样,请参考其它文章.
先下载Mysql2.0.20的源代码版,地址: http://dev.mysql.com/downloads/mysql/4.0.html
把它下到/usr/local/src目录下,如果没有该目录,就自己建一个.下载回来的包名字叫 mysql-4.0.20.tar.gz,然后我们把它解压出来:
# tar -zxvf mysql-4.0.20.tar.gz
解压后生成mysql-4.0.20目录,我们进入该目录:
# cd mysql-4.0.20
进入后就开始配置mysql了,配置过程中我们要给mysql设置一个安装目录,我们设置在 /usr/local/mysql 下,以为把文件放到一个地方比较容易管理,如果你还想获得更多的配置信息,使用 ./configure --help:
# ./configure --prefix=/usr/local/mysql
然后等几秒钟,配置完成后就编译源代码:
# make
这个编译的过程比较长,如果机器比较慢的话,可能要近二十分种 ( PS:我的机器是很普通的机器,所有用了差不多15,6分种 :( ) .
编译完成后就安装:
# make install
等上几秒钟,安装完成.下面就到了最关键的部分了,为什么老安装不成功,(PS:至少我是安装了N次,N > 10 ,呵呵),问题关键就在这里,访问mysql要一个专门的用户,而且必须给相应的访问权限,这里我们就设置root和mysql有权限访问.
我们先建立一个mysql和mysql用户来访问mysql:
# pw groupadd mysql #建立mysql组
# pw useradd mysql -g mysql #建立mysql用户并且加入到mysql组中
建立用户后我们就初始化表 (注意:必须先执行本步骤后才能进行以下步骤)
# ./scripts/mysql_install_db --user=mysql #初试化表并且规定用mysql用户来访问
初始化表以后就开始给mysql和root用户设定访问权限, 我们先到安装mysql的目录:
# cd /usr/local/mysql
然后设置权限
# chown -R root . #设定root能访问/usr/local/mysql
# chown -R mysql var #设定mysql用户能访问/usr/local/mysql/var ,里面存的是mysql的数据库文件
# chown -R mysql var/. #设定mysql用户能访问/usr/local/mysql/var下的所有文件
# chown -R mysql var/mysql/. #设定mysql用户能访问/usr/local/mysql/var/mysql下的所有文件
# chgrp -R mysql . #设定mysql组能够访问/usr/local/mysql
设置完成后,基本上就装好了,好了,我们运行一下我们的mysql:
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
如果没有问题的话,应该会出现类似这样的提示:
[1] 42264
# Starting mysqld daemon with databases from /usr/local/mysql/var
这就证明你安装成功了,如果出现:
[1] 42264
# Starting mysqld daemon with databases from /usr/local/mysql/var
040818 10:53:45 mysqld ended
则证明你的mysql运行不来,请查看错误日志: /usr/local/mysql/var/*.err 然后确定安装是否成功,如果没有成功,请检查上面的步骤是否正确.
安装完成后,能够通过 /usr/local/mysql/bin/mysql 来连接mysql进行管理,如果你装了apache并且能够解析php的话,也能使用phpMyadmin来管理你的mysql,记得装完后使用 mysql或者mysqladmin来修改root的密码,这里我们就不说了,请参考相关的文章.
控制mysql就通过 /usr/local/mysql/libexec/mysqld 来控制启动或者停止mysql:
# /usr/local/mysql/libexec/mysqld start #启动mysql
# /usr/local/mysql/libexec/mysqld stop #停止mysql
# /usr/local/mysql/libexec/mysqld restart #重启mysql
为了每次系统重启后都能运行mysql,可以写一个脚本放到 /usr/local/etc/rc.d目录下,用来运行mysql,我们写一个脚本mysql_start.sh
#! /bin/sh
/usr/local/mysql/bin/mysqld_safe&
然后保存到/usr/local/etc/rc.d目录下,那么以后reboot系统后都能启动mysql了.
二. 安装Apache
安装Apache要简单点,我这里安装的Apache版本是 httpd-2.0.50,去下载压缩包: http://httpd.apache.org/download.cgi.
下载回来的包叫做 httpd-2.0.50.tar.gz 我们放在 /usr/local/src目录下.
首先进入目录后解压缩:
# cd /usr/local/src
# tar -zxvf httpd-2.0.50.tar.gz
然后就会得到 httpd-2.0.50目录,我们进入目录
# cd httpd-2.0.50
首先配置:
# ./configure \
? --prefix=/usr/local/apache \ #我们要把Apache安装在那个目录,我们这里装在 /usr/local/apache下
? --enable-shared=max \
? --enable-module=rewrite \
? --enable-module=so
执行上面的命令,如果没有错误信息,证明配置成功,然后进行编译:
# make
一两分钟就编译完了,然后进行安装:
# make install
安装完成后,Apache就存放在 /usr/local/apache目录下了, bin是执行文件的目录,conf是配置文件目录,htdocs是网页的主目录,logs是日志目录.
Apache通过 bin/apachectl或者bin/httpd来控制启动或者停止.
# /usr/local/apache/bin/httpd -k start #启动apache
# /usr/local/apache/bin/httpd -k stop #停止apache
# /usr/local/apache/bin/httpd -k restart #重启apache
然后你可以通过 http://localhost 来测试apache是否安装成功,如果出现apache的页面则安装成功,否则请检查上面的步骤.
三. 安装PHP
我们使用的PHP版本是4.3.8,先去下载: http://www.php.net/downloads.php, 下回来的包叫做 php-4.3.8.tar.gz, 放到/usr/local/src目录下.
首先进入该目录后解压缩:
# cd /usr/local/src
# tar -zxvf php-4.3.8.tar.gz
解压后进入目录:
# cd php-4.3.8
进行配置,这一步比较关键,一定要设置好,特别是要考虑到你要支持什么,比如GD库,xml,mysql等等,如果想知道详细的配置,执行 ./configure --help来获得:
# ./configure \
? --with-apxs2=/usr/local/apache/bin/apxs \
? --disable-debug \ #关闭php内部调试
? --enable-safe-mode \ #打开php的安全模式
? --enable-trans-sid \
? --with-xml \ #支持xml
? --with-mysql \ #支持mysql
? --enable-short-tags \ #支持PHP的短标记
? --with-gd \ #支持GD库
? --with-zlib \ #支持zlib
? --with-jpeg \
? --with-png \
? --enable-memory-limit \
? --disable-posix \
? --with-config-file-path=/usr/local/lib
如果上面的配置没有错误的话,那么应该最后会显示感谢使用PHP等字样,那么证明配置成功,如果上面的配置选项不支持的话,会提示错误.
比如你没有安装mysql,那么--with-mysql就无法使用,所以一定要注意对应选项系统是否能够支持,如果出现错误,那么就先安装对应的程序,或者去掉相关选项.
配置之后就进行编译:
# make
编译成功后出现"Build complete."字样,那么就可以进行安装了:
# make install
安装完成后把/usr/local/src/php-4.3.8/php.ini-dist复制到/usr/local/lib/,并重命名为php.ini
# cp /usr/local/src/php-4.3.8/php.ini-dist /usr/local/lib/php.ini
基本到这里PHP就安装成功了,如果中间出现错误,除了在配置的时候没有选对选项之后一般都不出现错误.
四. 整合Apache+PHP
为了让Apache能够直接解析php,我们还要进行一些配置.
首先进入apache的配置文件目录:
# cd /usr/local/apache/conf
然后用vi打开配置文件httpd.conf:
# vi httpd.conf
在httpd.conf文件中,添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
应该将以上两句添加在其他AddType之后。
确保文件中有以下一句话,没有就自己添加在所有LoadModule之后。
LoadModule php4_module modules/libphp4.so
好了,在vi中使用":wq"保存httpd.conf文件,退出vi。启动apache server:
# /usr/local/apache/bin/httpd start
现在apache就能够运行php了,写个文件测试一下,在/usr/local/apache/htdocs目录下,新建一个phpinfo.php文件,
文件中只有一行代码:
phpinfo(); ?>
保存此文件, 在你的浏览器中输入http://localhost/phpinfo.php,你应该看到PHP的系统信息。
如果出现错误,比如提示你下灾phpinfo.php,那么apache就是还无法解析php文件,那么请仔细检查以上的操作是否正确.
好,到这里,基本上Mysql+Apache+PHP安装完成,那么就能做Web服务器了,比如传个论坛,
同时提醒可以传个phpMyadmin去管理你的mysql,现在最新版本是phpMyadmin2.6-beta
安装FreeBSD就不讲了,只要稍微定制一下就可以了,过程我就不说了,我用的FreeBSD版本是5.2.1,应该是现在比较新的版本,以后就不知道了 :) .
一. 安装MySQL
我使用的的Mysql是4.0.20,源代码版,你也可以使用RPM包或者二进制版,安装方法可能不一样,请参考其它文章.
先下载Mysql2.0.20的源代码版,地址: http://dev.mysql.com/downloads/mysql/4.0.html
把它下到/usr/local/src目录下,如果没有该目录,就自己建一个.下载回来的包名字叫 mysql-4.0.20.tar.gz,然后我们把它解压出来:
# tar -zxvf mysql-4.0.20.tar.gz
解压后生成mysql-4.0.20目录,我们进入该目录:
# cd mysql-4.0.20
进入后就开始配置mysql了,配置过程中我们要给mysql设置一个安装目录,我们设置在 /usr/local/mysql 下,以为把文件放到一个地方比较容易管理,如果你还想获得更多的配置信息,使用 ./configure --help:
# ./configure --prefix=/usr/local/mysql
然后等几秒钟,配置完成后就编译源代码:
# make
这个编译的过程比较长,如果机器比较慢的话,可能要近二十分种 ( PS:我的机器是很普通的机器,所有用了差不多15,6分种 :( ) .
编译完成后就安装:
# make install
等上几秒钟,安装完成.下面就到了最关键的部分了,为什么老安装不成功,(PS:至少我是安装了N次,N > 10 ,呵呵),问题关键就在这里,访问mysql要一个专门的用户,而且必须给相应的访问权限,这里我们就设置root和mysql有权限访问.
我们先建立一个mysql和mysql用户来访问mysql:
# pw groupadd mysql #建立mysql组
# pw useradd mysql -g mysql #建立mysql用户并且加入到mysql组中
建立用户后我们就初始化表 (注意:必须先执行本步骤后才能进行以下步骤)
# ./scripts/mysql_install_db --user=mysql #初试化表并且规定用mysql用户来访问
初始化表以后就开始给mysql和root用户设定访问权限, 我们先到安装mysql的目录:
# cd /usr/local/mysql
然后设置权限
# chown -R root . #设定root能访问/usr/local/mysql
# chown -R mysql var #设定mysql用户能访问/usr/local/mysql/var ,里面存的是mysql的数据库文件
# chown -R mysql var/. #设定mysql用户能访问/usr/local/mysql/var下的所有文件
# chown -R mysql var/mysql/. #设定mysql用户能访问/usr/local/mysql/var/mysql下的所有文件
# chgrp -R mysql . #设定mysql组能够访问/usr/local/mysql
设置完成后,基本上就装好了,好了,我们运行一下我们的mysql:
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
如果没有问题的话,应该会出现类似这样的提示:
[1] 42264
# Starting mysqld daemon with databases from /usr/local/mysql/var
这就证明你安装成功了,如果出现:
[1] 42264
# Starting mysqld daemon with databases from /usr/local/mysql/var
040818 10:53:45 mysqld ended
则证明你的mysql运行不来,请查看错误日志: /usr/local/mysql/var/*.err 然后确定安装是否成功,如果没有成功,请检查上面的步骤是否正确.
安装完成后,能够通过 /usr/local/mysql/bin/mysql 来连接mysql进行管理,如果你装了apache并且能够解析php的话,也能使用phpMyadmin来管理你的mysql,记得装完后使用 mysql或者mysqladmin来修改root的密码,这里我们就不说了,请参考相关的文章.
控制mysql就通过 /usr/local/mysql/libexec/mysqld 来控制启动或者停止mysql:
# /usr/local/mysql/libexec/mysqld start #启动mysql
# /usr/local/mysql/libexec/mysqld stop #停止mysql
# /usr/local/mysql/libexec/mysqld restart #重启mysql
为了每次系统重启后都能运行mysql,可以写一个脚本放到 /usr/local/etc/rc.d目录下,用来运行mysql,我们写一个脚本mysql_start.sh
#! /bin/sh
/usr/local/mysql/bin/mysqld_safe&
然后保存到/usr/local/etc/rc.d目录下,那么以后reboot系统后都能启动mysql了.
二. 安装Apache
安装Apache要简单点,我这里安装的Apache版本是 httpd-2.0.50,去下载压缩包: http://httpd.apache.org/download.cgi.
下载回来的包叫做 httpd-2.0.50.tar.gz 我们放在 /usr/local/src目录下.
首先进入目录后解压缩:
# cd /usr/local/src
# tar -zxvf httpd-2.0.50.tar.gz
然后就会得到 httpd-2.0.50目录,我们进入目录
# cd httpd-2.0.50
首先配置:
# ./configure \
? --prefix=/usr/local/apache \ #我们要把Apache安装在那个目录,我们这里装在 /usr/local/apache下
? --enable-shared=max \
? --enable-module=rewrite \
? --enable-module=so
执行上面的命令,如果没有错误信息,证明配置成功,然后进行编译:
# make
一两分钟就编译完了,然后进行安装:
# make install
安装完成后,Apache就存放在 /usr/local/apache目录下了, bin是执行文件的目录,conf是配置文件目录,htdocs是网页的主目录,logs是日志目录.
Apache通过 bin/apachectl或者bin/httpd来控制启动或者停止.
# /usr/local/apache/bin/httpd -k start #启动apache
# /usr/local/apache/bin/httpd -k stop #停止apache
# /usr/local/apache/bin/httpd -k restart #重启apache
然后你可以通过 http://localhost 来测试apache是否安装成功,如果出现apache的页面则安装成功,否则请检查上面的步骤.
三. 安装PHP
我们使用的PHP版本是4.3.8,先去下载: http://www.php.net/downloads.php, 下回来的包叫做 php-4.3.8.tar.gz, 放到/usr/local/src目录下.
首先进入该目录后解压缩:
# cd /usr/local/src
# tar -zxvf php-4.3.8.tar.gz
解压后进入目录:
# cd php-4.3.8
进行配置,这一步比较关键,一定要设置好,特别是要考虑到你要支持什么,比如GD库,xml,mysql等等,如果想知道详细的配置,执行 ./configure --help来获得:
# ./configure \
? --with-apxs2=/usr/local/apache/bin/apxs \
? --disable-debug \ #关闭php内部调试
? --enable-safe-mode \ #打开php的安全模式
? --enable-trans-sid \
? --with-xml \ #支持xml
? --with-mysql \ #支持mysql
? --enable-short-tags \ #支持PHP的短标记
? --with-gd \ #支持GD库
? --with-zlib \ #支持zlib
? --with-jpeg \
? --with-png \
? --enable-memory-limit \
? --disable-posix \
? --with-config-file-path=/usr/local/lib
如果上面的配置没有错误的话,那么应该最后会显示感谢使用PHP等字样,那么证明配置成功,如果上面的配置选项不支持的话,会提示错误.
比如你没有安装mysql,那么--with-mysql就无法使用,所以一定要注意对应选项系统是否能够支持,如果出现错误,那么就先安装对应的程序,或者去掉相关选项.
配置之后就进行编译:
# make
编译成功后出现"Build complete."字样,那么就可以进行安装了:
# make install
安装完成后把/usr/local/src/php-4.3.8/php.ini-dist复制到/usr/local/lib/,并重命名为php.ini
# cp /usr/local/src/php-4.3.8/php.ini-dist /usr/local/lib/php.ini
基本到这里PHP就安装成功了,如果中间出现错误,除了在配置的时候没有选对选项之后一般都不出现错误.
四. 整合Apache+PHP
为了让Apache能够直接解析php,我们还要进行一些配置.
首先进入apache的配置文件目录:
# cd /usr/local/apache/conf
然后用vi打开配置文件httpd.conf:
# vi httpd.conf
在httpd.conf文件中,添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
应该将以上两句添加在其他AddType之后。
确保文件中有以下一句话,没有就自己添加在所有LoadModule之后。
LoadModule php4_module modules/libphp4.so
好了,在vi中使用":wq"保存httpd.conf文件,退出vi。启动apache server:
# /usr/local/apache/bin/httpd start
现在apache就能够运行php了,写个文件测试一下,在/usr/local/apache/htdocs目录下,新建一个phpinfo.php文件,
文件中只有一行代码:
phpinfo(); ?>
保存此文件, 在你的浏览器中输入http://localhost/phpinfo.php,你应该看到PHP的系统信息。
如果出现错误,比如提示你下灾phpinfo.php,那么apache就是还无法解析php文件,那么请仔细检查以上的操作是否正确.
好,到这里,基本上Mysql+Apache+PHP安装完成,那么就能做Web服务器了,比如传个论坛,
同时提醒可以传个phpMyadmin去管理你的mysql,现在最新版本是phpMyadmin2.6-beta
http://dev.mysql.com/downloads/mysql/5.0.html