现在用document.images.length来判断图片个数
经过昨天各位同学的帮忙,我现在能在中央民族大学二十七号楼的研究生宿舍很安静的上网,成功回到学校,要感谢以下人:老游,小盘,妖怪,东哥,车夫,中天路,丰奎兄,在此在农业科学院渡过了一个很愉快的三个月,在此,昨天帮我搬东西,我都没怎么动手,再次谢谢他们。。。。呵呵。。。
Windows Media Player文件
小情歌
词曲:吴青峰
演唱:苏打绿
苏打绿-小情歌
这是一首简单的小情歌
唱着人们心肠的曲折
我想我很快乐
当有你的温热
脚边的空气转了
唱着我们心头的白鸽
我想我很适合
当一个歌颂者
青春在风中飘着
你知道就算大雨让这座城市颠倒
我会给你怀抱
受不了看见你背影来到
写下我度秒如年难捱的离骚
就算整个世界被寂寞绑票
我也不会奔跑
逃不了最后谁也都苍老
写下我时间和琴声交错的城堡
最后谁也都苍老
$ 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
Windows Media Player文件
<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>
[漫天飞絮]太多时间没有写日记了,开始写日记,但是用本子,而不是博客,博客写技术文章,不谈情感,不外露,不对现实事情发表评论,感觉工作了,太累了,只是想自己喂给一下自己纷乱的思绪,在这孤单角色里,回首都是回忆,9月1号搬家了,回学校了,哈哈,回去读书的感觉,唯一感觉自己不是学生了,是工作的人了呵呵,还好有上研的老乡给我找了个房子,看不出在这一次我接受她的帮忙,本来就不该搬出去,既然知道了,我就回去了,呵呵,搬出来的结果就是花钱,伤心,破费。。。。
太阳出来了,据说今天很暖和,偌大的屋子里,踩在依然木质的地板上,却阴冷的要命。昨晚第N次没有回家里,没有打开床头的台灯,没有打开手边city fm的广播,没有打开空调,没有回家洗澡,更没有回家睡觉——因为finally,终于搬家了。
NiGHT,又回到这个地方,空荡荡的房间,又一次打开空调打开广播坐在我的榻榻米上打开电脑,听到这首云雾中的高速公路,对白一遍一遍地放,空荡荡的房间都能听到回声。很奇怪,为什么对这房子都有留恋。收拾东西的几天,才发现我的东西那么那么多,装了n箱也没装完,扔掉了很多,带走的更多,留下的更多更多。。。
好些天没有看樱桃小丸子(真人版)了。有一段时间好像都已经迷上了小兰和新一的感情,对这动画片的喜欢,从侦探故事转为感情故事,所以才更加喜欢看剧场版——每一次都是不经意的生离死别和久别重逢。。。
累了。。。
这高速路上的云雾何时才能消散。。。
NiGHT,又回到这个地方,空荡荡的房间,又一次打开空调打开广播坐在我的榻榻米上打开电脑,听到这首云雾中的高速公路,对白一遍一遍地放,空荡荡的房间都能听到回声。很奇怪,为什么对这房子都有留恋。收拾东西的几天,才发现我的东西那么那么多,装了n箱也没装完,扔掉了很多,带走的更多,留下的更多更多。。。
好些天没有看樱桃小丸子(真人版)了。有一段时间好像都已经迷上了小兰和新一的感情,对这动画片的喜欢,从侦探故事转为感情故事,所以才更加喜欢看剧场版——每一次都是不经意的生离死别和久别重逢。。。
累了。。。
这高速路上的云雾何时才能消散。。。
Windows Media Player文件
云雾中的高速公路
词:阿男. 晋佑 曲:阿男 编:权赫
阿男)又一次被你孤独的摆放在 布满了云雾的高速路上
看不到远方的云雾中的高速公路
又吹来刮来一阵失恋风这成了使我勇往直前的
唯有的麻醉剂
阿润)一步一步走着 就是这样走着 有时候真的好想停下来好好的歇歇
的确是走得精疲力尽无力持续却怕走过的所有一切完全成为半途而废
谢谢你 这倒是个难得的转变 上帝为了早点使我领悟人生的酸甜苦辣
(赐给我失恋)我不会做一个永远的失败者
女 )OH BOY WHY WHY WHY MY GOOD BOY WHY WHY 你为何还不明白 哦--
阿男)(别说我不明白)(去找你那白马王子吧)
女) WHY WHY WHY MY GOOD BOY WHY WHY 这会是彼此双方 最好的去路
阿男)(我不需要 不需要你来安慰我)
权赫)爱情在悲痛中结束 诺言向分离低头 看着桌上的照片
轻轻的叫过你的名字(ANY)你留下的痛苦往事已残留在我心底
对你说的对你说这是彼此双方最好的去路 我也这么想 完全正确谢谢你
你让我明白了什么叫绝望 我绝不会怪你 不怪你 怪得怪自己
晋佑)漂亮的美眉 今天全都来奉陪 我喜欢看她们穿得一身黑 我们一起HI
他们对我笑 我的身体飘 我的形象变得很糟糕 这个世界变得如此美丽
你的选择我很满意 我将继续我的高速公路上勇往直前
虽然不知高速路上的云雾何时才能消散
女 )OH BOY WHY WHY WHY MY GOOD BOY WHY WHY 你为何还不明白 哦--
阿男)(别说我不明白)(去找你那白马王子吧)
女) WHY WHY WHY MY GOOD BOY WHY WHY 这会是彼此双方 最好的去路
阿男)(I KNOW 我不需要 不需要你来安慰我)
阿男)万万没有去想过 像你这么纯真的女孩
竟然也会去选择 这种方式来对我
这样的结局本应该 早一点想到才是对
要怪就得怪当初 把爱看得太简单
女 )OH BOY WHY WHY WHY MY GOOD BOY WHY WHY 你为何还不明白 哦--
阿男)(OH I LOVE YOU NO NO 别说我不明白 去找你那白马王子吧)
女) WHY WHY WHY MY GOOD BOY WHY WHY 这会是彼此
下午好不容易安装好了,发现我的还可以群发的,同事也安装了,就是不能群发。。。同样的机器,同样的版本,同样的操作系统freebsd6.2,就是不能群发。。。我晕。。。
最后,让系统部重新装了系统,我再装成功。。。人品问题。。^_^
最后,让系统部重新装了系统,我再装成功。。。人品问题。。^_^
今天配置一台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>