九王爷

九王爷的府邸


  • 首页

  • 分类

  • 归档

  • 标签

Linux的一些命令介绍

发表于 2006-11-23 | 分类于 Linux

which
which -a : 它使 which 向您显示您的 PATH 中给定程序的所有实例

find
$ find /usr/share/doc -name README*

搜索中忽略大小写:
$ find /usr/share/doc -iname readme*

使用 -regex 选项将把输出限制成匹配某一模式的文件名
项,该选项忽略模式中的大小写。例如:
$ find /etc -iregex ‘.xt.‘

-type 选项允许您查找某一类型的文件系统对象-type 参数是
b (块设备)、c(字符设备)、d(目录)、p(命名管道)、f(常规文件)、l(符号链接)和 s(套接字)
例:
$ find /home -name ‘sh‘ -type f

-mtime 选项允许您根据最近一次的修改时间来选择文件。mtime 的参数以 24 小时为单位,
当输入时带加号(表示”之后”)或者减号(表示”之前”)时,它最有用。例

find . -name ? -mtime -1 :搜索在过去的 24 小时之内创建的文件

-daystart 选项

时间周期以今天的开始时为开始,而不是 24 小时之前。例如,这是昨天和前天创建的一组文件

-size 选项
size 选项允许您根据文件的大小来查找它们。缺省情况下,-size 的参数是 512 个字节的块,但是添加后缀可以使操作更简便
可用的后缀是 b(512 字节的块)、c(字节)、k(千字节)和 w(2 字节的字)。另外,您可以在前放置加号(”大于”)或者减号(”小于”)。

例如,要在 /usr/bin 中查找小于 50 个字节的常规文件:

$ find /usr/bin -type f -size -50c

-exec
选项处理找到的文件
这个选项接受命令行作为它的参数来执行,它以 ; 中断,并用文件名来替换任何出现的 {} 。下面这个示例可以帮助您完全理解它:
例:
$ find /usr/bin -type f -size -50c -exec ls -l ‘{}’ ‘;’

locate
运行 updatedb 来生成搜索数据库

slocate

在 Linux 的许多分发版(distribution)中,locate 命令已经被 slocate 所替代。通常有一个至”locate”的符号链接,这样
您不需要记住拥有的是哪一个。slocate 代表”安全定位(secure locate)”。它将许可权信息存储在数据库中,这样普通用户不
能以别的方式窥探他们不能读取的目录。slocate 的用法信息在本质上与 locate 的信息相同,尽管输出可能不同(取决于正在运行
命令的用户)。

停止进程 ctrl +C

使用 fg 命令使其可以在前台运行
使用 bg命令使其可以在后台运行
使用 &使其在后台运行

jobs -l 列出了从您 bash 会话上启动的进程

killall -TERM mysqld 干掉mysql进程,其他同理

nohup
使用户注销以后程序依然可以运行

例如:# nonup /local/bin/my_back_script.sh

exit

ps
查看您系统上所有的进程
例如:

ps aux

–forest 选项可以很容易地查看进程的层次结构

ps x –forest

top
同PS相同查看进程列表,不过这个是动态的
nice 修运进程的运行级
renice :如果您想要更改正在运行的进程 nice 值设置,那么使用 renice

“>” 重定向

>> 追加.
例如:
$ echo ‘some’ > myfile.sh # 将字符串写进文件(覆盖方式)如果文件不存在,则自动创建

bzip2

例: $ bzip2 -d linux-2.4.16.tar.bz2

echo

echo 将它的参数打印到终端。如果您想要嵌入反斜杠转义序列,那么使用 -e 选项;例如
echo -e “foonfoo” 将打印 foo,然后打印一个换行,接着再打印 foo。使用 -n 选项
告知 echo 省略缺省情况下附加到输出的最后一个换行。

cat、sort 和 uniq

cat 将指定为参数的文件内容打印到终端。作为管道的第一个命令,这是很方便的,例如,cat foo.txt | blah。

sort

sort 按字母次序打印在命令行上指定的文件内容。当然,sort 也接受用管道传送的输入。输入 man sort 来熟悉控制排序行为的各种选项。

uniq

uniq 获取已排序的文件或数据流(通过管道)并除去重复行。

wc、head 和 tail

wc 打印出指定文件或输入流(来自管道)中的行、字和字节的数量。输入 man wc 来学习如何精调显示的内容。

head

head 打印出文件或流的前十行。使用 -n 选项来指定应显示的行数。

tail

打印出文件或流的最后十行。使用 -n 选项来指定应显示的行数

tac、expand 和 unexpand

tac

tac 与 cat 类似,但它以逆向顺序打印所有行,换句话说,先打印最后一行。

expand

expand 将输入制表符转换为空格。使用 -t 选项来指定制表符停止位。

unexpand

unexpand 将输入空格转换为制表符。使用 -t 选项来指定制表符停止位。

cut、nl 和 pr

cut

cut 从输入文件或流的每个行上抽取出由字符限定的字段。

nl

nl 将行号添加到输入的每个行上。这对于打印输出很有用。

pr

pr 将文件分解为多个页面的输出;通常用于打印。

tr、sed 和 awk

tr

tr 是字符转换工具;它用来将输入流中的某些字符映射成输出流中的某些其它字符。

sed

sed 是一个功能强大的面向流的文本编辑器。您可以在下面的 developerWorks 文章中学习有关 sed 的知识:

Sed by example, Part 1: Get to know the powerful UNIX editor
Sed by example, Part 2: Taking further advantage of the UNIX text editor
Sed by example, Part 3: Data crunching, sed style

awk

awk 是一种方便的面向行的文本处理语言。要学习有关 awk 的知识,请阅读下面 IBM 的 developerWorks 文章:

Awk by example, Part 1: Intro to the great language with the strange name
Awk by example, Part 2: Records, loops, and arrays
Awk by example, Part 3: String functions and … checkbooks?

od、split 和 fmt

od

od 将输入流转换为八进制或十六进制的”转储”格式。

split

split 将较大的文件拆分成许多较小、更易处理的块。

fmt

fmt 对段落重新格式化以便在其边缘处进行换行。这个能力被构建到大多数文本编辑器中,但是应知道它仍是一个好工具。

paste、join 和 tee

paste

paste 获取两个或更多文件作为输入,连接输入文件上的每个后续行,并输出结果行。它对于创建文本的表或列是很有用的。

join

join 与 paste 类似,但它在每个输入行中使用一个字段(缺省情况下是第一个字段)来匹配一在单行上合并的字段。

tee

tee 将它的输入打印到文件和屏幕。当您想创建某些日志记录,但还想在屏幕上看时,这很有用。

改变 suid 和 sgid

设置和除去 suid 与 sgid 位相当简单。这里,我们设置 suid 位:

<span style="font-size: 130%; font-family: Verdana"><u># chmod u+s /usr/bin/myapp</u></span>`</pre>
<span style="font-size: 130%; font-family: Verdana"><u>此处,我们从一个目录_除去_ sgid 位。我们将看到 sgid 位怎样影响下面几屏中的目录:</u></span>
<pre>`<span style="font-size: 130%; font-family: Verdana"><u> # chmod g-s /home/drobbins</u></span>

wget——优秀的下载工具

发表于 2006-11-23 | 分类于 Linux

wget是一个命令行工具,用于批量下载文件,支持HTTP和FTP。究竟比其他的工具好在哪里?看看内容吧 :)

wget基本上所有的Linux版本都自己带了,但是有多少人在用呢?呵呵,如果你没有用过,不妨试试。Windows下面的用户可以使用GNUwin32的项目,wget,基本功能完全一致。好吧,我们来以几个简单的例子看看wget的威力。

如果我们想下载ftp里面某个目录里面的所有文件,我们也可以不用ftp这个笨蛋,呵呵,可以享受cute ftp等图形化工具的拖一个目录的轻松了。如

wget -r ftp://10.8.8.8/movie/

呵呵,等吧!下完了,发觉有些不对劲,怎么出来个10.8.8.8的目录,进去看看,又是一个movie,哦,wget将目录结构和网站标题都给记录下来了,不要??没有问题!比如说还是这个例子

wget -r -nd ftp://10.8.8.8/movie/

结果什么目录都没有了,faint!怎么会这样?呵呵,你如果想要这样就让它这样吧,否则使用

wget -r -nH ftp://10.8.8.8/movie/

恩?movie也不要?OK,那就这样

wget -r -nH –cut-dirs=1 ftp://10.8.8.8/movie/

这有什么用啊?cuteftp比他好用多了,而且,你这断了线能连吗?呵呵,不好意思,可以连

wget -c -r -nH –cut-dirs=1 ftp://10.8.8.8/movie/

但 是cuteftp能做下面的事情吗?比如,现在很多网站使用Apache建站,并不提供ftp服务,但是Apache有一个indexing功能,可以 提供一个类似于ftp的界面,好多文件我想下啊,怎么办?由于是HTTP协议,CuteFTP无能为力了,倒是flash get等有什么get all这种功能,不知道他们对于目录处理怎么样。但是wget一点问题都没有,不信?我们拿CTAN为例(例子并不恰当,CTAN有FTP服务),我们下 载这里面所有的宏包,呵呵

wget -r -k http://www.ctan.org/tex-archive/macros/latex/

-k表示将连接转换为本地连接。但是现在同样有上面的问题啊,那就把你需要的加上吧,另外也许你根本不需要向下走那么多层,比如,我们就要到第二层,那么

wget -r -l2 -k http://www.ctan.org/tex-archive/macros/latex/

现在新的问题是,由于网页有一个排序功能,很讨厌,因为下载的时候把网页重复了好多次,那么我们可使用-A和-R开关控制下载类型,并且可以使用通配符,呵呵,现在随心所欲了吧

wget -r -R “.htm?*” -k http://www.ctan.org/tex-archive/macros/latex/

这次没有那种网页了吧?-R的意义在于拒绝下载匹配类型的文件,-A表示仅仅接受的文件类型,如-A “*.gif”将仅下载gif图片,如果有多个允许或者不允许,可以使用,分开。

那 么,我们现在在使用代理服务器,怎么办呢?呵呵,很高兴你选择了wget,你可以使用它的配置文件,环境变量来利用代理。这里推荐使用环境变量,如在 bash里面我们可以把天天用的proxy加到.bash_profile里面,这是Linux标准写法(很多软件都用的,什么apt-get,yum等 等)

export http_proxy=http://10.20.30.40:8080

然后,proxy就默认打开了,如果需要暂时关闭,可以使用

wget –proxy=off -r -k http://www.ctan.org/tex-archive/macros/latex/

当然,写一个.wgetrc文件也可以,该文件可以从/usr/local/etc里面找到,里面有很详细的注释,我就不多说了。

下载网页的时候比较麻烦的事情是,有的网页被同时指向了很多遍,那么为了避免多次下载,我们使用

wget -nc -r -k http://www.ctan.org/tex-archive/macros/latex/

可以避免这件事情。为了不被有的连接指向非http://www.ctan.org/tex-archive/macros/latex/内层目录,我们还应该加上

wget -nc -np -r -k http://www.ctan.org/tex-archive/macros/latex/

避免下载非该目录里面的文件,这也避免了到不同的host上面去。当然,如果你希望有这个功能,在多个host之间跳来跳去的下载,可以使用

wget -nc -np -H -r -k http://www.ctan.org/tex-archive/macros/latex/

使得可以在多个host之间span,同时-I和-X可以使得我们仅仅跟踪某些目录或者不跟踪某些目录。如果某些HTML里面你需要的东西不是由这种东西作出来的,你就得使用–follow-tags和–ignore-tags了。嘿,我有个文件里面都是连接,怎么办?要是不是html你只需要

wget -i your.file
如果是,那也不繁
wget -F **-i your.fileWget 的完全用法
-V 版本信息
-h 帮助信息
-b 后台执行Wget
-o filename 把记录放在文件filename
-a filename 把记录附加在文件filename
-d 显示调试信息
-q 无输出下载方式
-v 详细的屏幕输出(默认)
-nv 简单的屏幕输出
-i inputfiles 从文本文件内读取地址列表
-F forcehtml 从html文件内读取地址列表
-t number number次重试下载(0时为无限次)
-O output document file 写文件到文件
-nc 不覆盖已有的文件
-c 断点下传
-N 时间时间戳。该参数指定wget只下载更新的文件,也就是说,与本地目录中的对应文件的长度和最后修改日期一样的文件将不被下载。
-S 显示服务器响应
-T timeout 超时时间设置(单位秒)
-w time 重试延时(单位秒)
-Y proxy=on/off 是否打开代理
-Q quota=number 重试次数
目录:
-nd –no-directories 不建立目录.
-x, –force-directories 强制进行目录建立的工作.
-nH, –no-host-directories 不建立主机的目录.
-P, –directory-prefix=PREFIX 把档案存到 PREFIX/…
–cut-dirs=NUMBER 忽略 NUMBER 个远端的目录元件.
HTTP 选项:
–http-user=USER 设 http 使用者为 USER.
–http0passwd=PASS 设 http 使用者的密码为 PASS.
-C, –cache=on/off 提供/关闭快取伺服器资料 (正常情况为提供).
–ignore-length 忽略 Content-Length' 标头栏位. --proxy-user=USER 设 USER 为 Proxy 使用者名称. --proxy-passwd=PASS 设 PASS 为 Proxy 密码. -s, --save-headers 储存 HTTP 标头成为档案. -U, --user-agent=AGENT 使用 AGENT 取代 Wget/VERSION 作为识别代号. FTP 选项: --retr-symlinks 取回 FTP 的象徵连结. -g, --glob=on/off turn file name globbing on ot off. --passive-ftp 使用 "passive" 传输模式. 使用递回方式的取回: -r, --recursive 像是吸入 web 的取回 -- 请小心使用!. -l, --level=NUMBER 递回层次的最大值 (0 不限制). --delete-after 删除下载完毕的档案. -k, --convert-links 改变没有关连的连结成为有关连. -m, --mirror 开启适合用来映射的选项. -nr, --dont-remove-listing 不要移除.listing’ 档.
递回式作业的允许与拒绝选项:
-A, –accept=LIST 允许的扩充项目的列表
. -R, –reject=LIST 拒绝的扩充项目的列表.
-D, –domains=LIST 允许的网域列表.
–exclude-domains=LIST 拒绝的网域列表 (使用逗号来分隔).
-L, –relative 只跟随关联连结前进.
–follow-ftp 跟随 HTML 文件里面的 FTP 连结.
-H, –span-hosts 当开始递回时便到外面的主机.
-I, –include-directories=LIST 允许的目录列表.
-X, –exclude-directories=LIST 排除的目录列表.
-nh, –no-host-lookup 不透过 DNS 查寻主机.
-np, –no-parent 不追朔到起源目录.
wget -t0 -c -nH -np -b -m -P /localdir http://freesoft.online.sh.cn/mirrors/ftp.redhat.com -o

**wget经常用于成批量地下载Internet网站上的文件,或制作远程网站的镜像。

语法:

wget [options] [URL-list]
URL地址格式说明:可以使用如下格式的URL:
http://host[:port]/path
例如:
http://fly.cc.fer.hr/
ftp://ftp.xemacs.org/pub/xemacs/xemacs-19.14.tar.gz
ftp://username:password@host/dir/file
在最后一种形式中,以URL编码形式为FTP主机提供了用户名和密码(当然,也可以使
用参数提供该信息,见后)。

参数说明:

wget的参数较多,但大部分应用只需要如下几个常用的参数:
-r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是
一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递归深度
由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,
递归方法与HTTP主机类似。

-N 时间戳:该参数指定wget只下载更新的文件,也就是说,与本地目录中的对
应文件的长度和最后修改日期一样的文件将不被下载。

-m 镜像:相当于同时使用-r和-N参数。

-l 设置递归级数;默认为5。-l1相当于不递归;-l0为无穷递归;注意,当递
归深度增加时,文件数量将呈指数级增长。

-t 设置重试次数。当连接中断(或超时)时,wget将试图重新连接。如果指
定-t0,则重试次数设为无穷多。

-c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别
的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才需要
指定此参数。

使用举例:
wget -m -l4 -t0 http://oneweb.com.cn/
将在本地硬盘建立http://oneweb.com.cn/的镜像,镜像文件存入当前目录下一个名为
oneweb.com.cn的子目录中(你也可以使用-nH参数指定不建立该子目录,而直接在当前
目录下建立镜像的目录结构),递归深度为4,重试次数为无穷(若连接出现问题,
wget将坚韧不拔地永远重试下去,知道任务完成!)

另外一些使用频率稍低的参数如下:
-A acclist / -R rejlist:
这两个参数用于指定wget接受或排除的文件扩展名,多个名称之间用逗号隔开。例如,
假设我们不想下载MPEG视频影像文件和.AU声音文件,可使用如下参数:
-R mpg,mpeg,au

其它参数还有:
-L 只扩展相对连接,该参数对于抓取指定站点很有用,可以避免向宿主主机
的其他目录扩散。例如,某个人网站地址为:http://www.xys.org/~ppfl/,使用
如下命令行:
wget -L http://www.xys.org/~ppfl/
则只提取该个人网站,而不涉及主机www.xys.org上的其他目录。

-k 转换连接:HTML文件存盘时,将其中的非相对连接转换成为相对连接。

-X 在下载FTP主机上的文件时,排除若干指定的目录

另外,下面参数用于设置wget的工作界面:
-v 设置wget输出详细的工作信息。
-q 设置wget不输出任何信息。

如果我们已经在一个HTML文档(或普通文本文档)中存储了所要提取的文件的连接,
可以让wget直接从该文件中提取信息,而不用在命令行中提供URL地址,参数格式为:
-i filename
地址文件也可以不是HTML文档,例如,一个普通的文本文件,其中有需要下载的URL列
表即可。
我们可以用以下技巧提高下载速度:由于Linux是一个多任务系统,我们可以同时运行
多个wget进程以提高下载速度,例如,先下载某主页文件(index.html),然后将该
文件所列出的所有地址分别用一个独立的wget进程进行下载。

至于其他的参数,可参考wget的man手册页,命令为:
man wget

MySQL4.0.27数据库 转移 MySQL5.0.24

发表于 2006-11-23 | 分类于 Linux

1. 导出4.0数据: mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt databse > test.sql

2. 在5.0服务器上创建一个数据库同样是使用gbk编码

3. mysql -uroot -p –default-character-set=gbk -f test

另外修改MYSQL服务器默认字符集字GBK

/etc/my.cnf 填加

[mysqld]
default-character-set=gbk

程序上连接数据库的时候

也要统一编码

查询数据库执行 SET NAMES gbk 要调置的编码例如gbk

提供以下脚本:

options(MYSQLI_INIT_COMMAND,”SET AUTOCOMMIT=0; SET NAMES GB2312”);
@ $conn->real_connect($host,$name,$pass,$db);
//检查是否成功连接数据库
if(mysqli_connect_errno())
{
throw new Exception(“连数数据库失败”);
}
}
?>

防火墙脚本

发表于 2006-11-23 | 分类于 Linux

/etc/sysconfit/iptables

Firewall configuration written by system-config-securitylevel

Manual customization of this file is not recommended.

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 65535 -j ACCEPT
COMMIT

/root/work/*

1. deny_death_ping.sh

/sbin/iptables -N ping

#/sbin/iptables -A ping -p icmp –icmp-type echo-request -m limit –limit 1/second -j RETURN
/sbin/iptables -A ping -p icmp -j REJECT
/sbin/iptables -I INPUT -p icmp –icmp-type echo-request -m state –state NEW -j ping

2. prevent_scan.sh

/sbin/iptables -A INPUT -i eth0 -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp –tcp-flags ALL ALL -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp –tcp-flags ALL NONE -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp –tcp-flags SYN,RST SYN,RST -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP

3. sync_flood.sh

/sbin/iptables -N synfoold
/sbin/iptables -A synfoold -p tcp –syn -m limit –limit 1/s -j RETURN
/sbin/iptables -A synfoold -p tcp -j REJECT –reject-with tcp-reset
/sbin/iptables -A INPUT -p tcp -m state –state NEW -j synfoold

4. deny_mac.sh

#/sbin/iptables -A INPUT -m mac –mac-source xx:xx:xx:xx:xx:xx -j DROP

5.set_ipcheck_on.sh

set ip check on

if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for f in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $f
done
fi
// prevent ip attack
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
//set ip forward off
echo 0 > /proc/sys/net/ipv4/ip_forward

/etc/rc.d/rc.local

#!/bin/sh
#

This script will be executed after all the other init scripts.

You can put your own initialization stuff in here if you don’t

want to do the full Sys V style init stuff.

/root/work/deny_death_ping.sh
/root/work/iptables.sh
/root/work/set_ipcheck_on.sh
/root/work/deny_mac.sh
/root/work/prevent_scan.sh
/root/work/sync_flood.sh

Client does not support authenticationprotocol req

发表于 2006-11-23 | 分类于 Other

请使用以下两种方法之一

其一:

mysql> SET PASSWORD FOR

-> ‘’some_user’’@’’some_host’’ =OLD_PASSWORD(‘’newpwd’’);

其二:

mysql> UPDATE mysql.user SET Password =OLD_PASSWORD(‘’newpwd’’)

-> WHERE Host = ‘’some_host’’ AND User =’’some_user’’;

mysql> FLUSH PRIVILEGES;

Apache 配置安全

发表于 2006-11-23 | 分类于 Apache , Linux

一、确保你安装的是最新的补丁

  如果门是敞开的话,在窗户上加锁就毫无意义。同样道理,如果你没有打补丁,继续下面的操作就没有什么必要。

  二、隐藏Apache的版本号及其它敏感信息

  默认情况下,很多Apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的Apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。

  这里有两条语句,你需要添加到你的httpd.conf文件中:

  ServerSignature Off

  ServerTokens Prod

   ServerSignature出现在Apache所产生的像404页面、目录列表等页面的底部。ServerTokens目录被用来判断Apache 会在Server HTTP响应包的头部填充什么信息。如果把ServerTokens设为Prod,那么HTTP响应包头就会被设置成:

  Server:Apache

  如果你非常想尝试其它事物,你可以通过编辑源代码改成不是Apache的其它东西,或者你可以通过下面将要介绍的mod_security实现。

  三、确保Apache以其自身的用户账号和组运行

  有的Apache安装过程使得服务器以nobody的用户运行,所以,假定Apache和你的邮件服务器都是以nobody的账号运行的,那么通过Apache发起的攻击就可能同时攻击到邮件服务器,反之亦然。

  User apache

  Group apache

  四、确保web根目录之外的文件没有提供服务

  我们不让Apache访问web根目录之外的任何文件。假设你的所以web站点文件都放在一个目录下(例如/web),你可以如下设置:

  Order Deny,Allow

  Deny from all

  Options None

  AllowOverride None

  Order Allow,Deny

  Allow from all

  注意,因为我们设置Opitins None 和AllowOverride None,这将关闭服务器的所有Option和Override。你现在必须明确把每个目录设置成Option或者Override。 五、关闭目录浏览

  你可以在Directory标签内用Option命令来实现这个功能。设置Option为None或者-Indexes。

  Options -Indexes

  六、关闭includes

  这也可以通过在Directory标签内使用Option命令来实现。设置Option为None或者-Includes。

  Options -Includes

  七、关闭CGI执行程序

  如果你不用CGI,那么请把它关闭。在目录标签中把选项设置成None或-ExecCGI就可以:

  Options -ExecCGI

  八、禁止Apache遵循符号链接

  同上,把选项设置成None或-FollowSymLinks:

  Options -FollowSymLinks

  九、关闭多重选项

  如果想关闭所有选项,很简单:

  Options None

  如果只想关系一些独立的选项,则通过将Options做如下设置可实现:

  Options -ExecCGI -FollowSymLinks -Indexes

  十、关闭对.htaccess文件的支持

  在一个目录标签中实现:

  AllowOverride None

  如果需要重载,则保证这些文件不能够被下载,或者把文件名改成非.htaccess文件。比如,我们可以改成.httpdoverride文件,然后像下面这样阻止所有以.ht打头的文件:

  AccessFileName .httpdoverride

  Order allow,deny

  Deny from all

  Satisfy All

  十一、运行mod_security

  Run mod_security是O’Reilly出版社出版的Apache Security一书的作者,Ivan Ristic所写的一个非常好用的一个Apache模块。可以用它实现以下功能:

  ·简单过滤

  ·基于过滤的常规表达式

  ·URL编码验证

  ·Unicode编码验证

  ·审计

  ·空字节攻击防止

  ·上载存储限制

  ·服务器身份隐藏

  ·内置的Chroot支持

  ·更多其它功能

  十二、关闭任何不必要的模块

  Apache通常会安装几个模块,浏览Apache的module documentation,了解已安装的各个模块是做什么用的。很多情况下,你会发现并不需要激活那些模块。

  找到httpd.conf中包含LoadModule的代码。要关闭这些模块,只需要在代码行前添加一个#号。要找到正在运行的模块,可以用以下语句:

  grep LoadModule httpd.conf

限制APACHE的进程

发表于 2006-11-23 | 分类于 Apache , Linux

/etc/security/limits.conf

RLimitCPU 指令
说明: 限制由Apache载入的子进程的CPU占用
语法: RLimitCPU 数值|max [数值|max]
默认值: 未定义,使用操作系统默认值
上下文: 服务器配置, 虚拟主机, 目录, .htaccess
覆盖项: All
状态: 核心
模块: core使用一个或两个参数。第一个参数设置了所有进程的软资源限制,第二个参数设置了最大资源限制。两个参数均可设置为一个数值或是max以表示服务器的限制设置为操作系统允许的最大值。增大此资源限制最大值需要以root运行服务器或是在初始化启动语句中进行设置。

这个限制将施于Apache子服务请求衍生出的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,但不包括所有从Apache父进程衍生出的进程。比如说管道日志。

CPU资源限制表示为每进程占用的秒数。
参见
RLimitMEM
RLimitNPROC

RLimitMEM 指令
说明: 限制由Apache载入的子进程的内存占用
语法: RLimitMEM 数值|max [数值|max]
默认值: 未定义,使用操作系统默认值
上下文: 服务器配置, 虚拟主机, 目录, .htaccess
覆盖项: All
状态: 核心
模块: core

使用一个或两个参数。第一个参数设置了所有进程的软资源限制,第二个参数设置了最大资源限制。两个参数均可设置为一个数值或是max以表示服务器的限制设置为操作系统允许的最大值。增大此资源限制最大值需要以root运行服务器或是在初始化启动语句中进行设置。

这个限制将施于Apache子服务请求衍生出的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,但不包括所有从Apache父进程衍生出的进程。比如说管道日志。

内存资源限制表示为每进程占用的字节数。
参见
RLimitCPU
RLimitNPROC

RLimitNPROC 指令
说明: 限制由Apache载入的子进程的进程载入数目
语法: RLimitNPROC 数值|max [数值|max]
默认值: 未定义,使用操作系统默认值
上下文: 服务器配置, 虚拟主机, 目录, .htaccess
覆盖项: All
状态: 核心
模块: core

使用一个或两个参数。第一个参数设置了所有进程的软资源限制,第二个参数设置了最大资源限制。两个参数均可设置为一个数值或是max以表示服务器的限制设置为操作系统允许的最大值。增大此资源限制最大值需要以root权限运行服务器或是在初始化启动语句中进行设置。

这个限制将施于Apache子服务请求衍生出的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,但不包括所有从Apache父进程衍生出的进程。比如说管道日志。

进程限制控制了每用户的进程数。

请注意:如果CGI进程不是以web服务器的userid启动的,那么此指令将限制服务器自己能够创建的进程数目。此种情况将在错误日志中以无法创建进行记录。
参见
RLimitMEM
RLimitCPU

Linux运行环境安装全解

发表于 2006-11-23 | 分类于 Linux

最新的软件包下载下来后,我开始正是编译安装:
一、编译安装Apache2.2.3。

CODE:
shell>tar xvf httpd-2.2.3.tar.gz
shell>cd httpd-2.2.3
shell>./configure –prefix=/usr/local/apache \
>–enable-rewrite=shared \
>–enable-speling=shared
shell>make
shell>make install
shell>vi /usr/local/apache /conf/httpd.conf
//进入usr/local/apache/bin
shell>./apachectl -k start
//这时候可以通过http://localhost/. 测试
shell>./apachectl -k stop
二、然后安装MYSQL5.0.22

CODE:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> tar zxvf mysql-5.0.22.tar.gz
shell> cd mysql-5.0.22
shell> ./configure –prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> bin/mysql_install_db –user=mysql //创建MySQL授权表
shell> chown -R root .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> bin/mysqld_safe –user=mysql & //启动MYSQL服务器
shell>bin/mysqladmin -u root passwor “123456”//修改 mysql 的 root 密码
三、安装GD库(让PHP支持GIF,PNG,JPEG)
a.安装 jpeg6

CODE:
建立目录:
# mkdir -p /usr/local/jpeg6
# mkdir -p /usr/local/jpeg6/bin
# mkdir -p /usr/local/jpeg6/lib
# mkdir -p /usr/local/jpeg6/include
# mkdir -p /usr/local/jpeg6/man
# mkdir -p /usr/local/jpeg6/man1
# mkdir -p /usr/local/jpeg6/man/man1

# tar -zvxf jpegsrc.v6b.tar.gz
# cd jpeg-6b
# ./configure –prefix=/usr/local/jpeg6/ –enable-shared –enable-static
# make; make install
b.安装libpng

CODE:
# tar -zvxf libpng-1.2.12.tar.gz
# cd libpng-1.2.12
# ./configure –prefix=/usr/local/libpng/
# make; make install
c.安装 freetype

CODE:
# tar -zvxf freetype-2.1.1.tar.gz
# cd freetype-2.1.1
# mkdir -p /usr/local/freetype
# ./configure –prefix=/usr/local/freetype
# make;make install
d.:安装zlib

CODE:
#tar -zxvf zlib-1.2.3.tar.gz
#cd zlib.1.2.3
# ./configure
# make;make install
e.安装GD库

CODE:
# tar -zvxf gd-2.0.33.tar.gz
# mkdir -p /usr/local/gd2
# cd gd-2.0.33
# ./configure –prefix=/usr/local/gd2 –with-jpeg=/usr/local/jpeg6/
–with-png=/usr/local/lib/
–with-zlib=/usr/local/lib/
–with-freetype=/usr/local/freetype/
# make; make install
四、安装PHP5(安装libxml2 )

CODE:
# tar -zxf libxml2-2.6.24.tar.gz
# cd libxml2-2.6.24
# mkdir -p /usr/local/libxml2
# ./configure –prefix=/usr/local/libxml2
# make; make install

CODE:
# tar -zvxf php-5.1.4.tar.gz

cd php-5.1.4

./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs

–with-mysql=/usr/local/mysql/
–with-libxml-dir=/usr/local/libxml2
–with-expat-dir=/usr/lib –enable-soap
–with-gd=/usr/local/gd2/
–with-jpeg-dir=/usr/local/jpeg6/
–with-zlib-dir=/usr/local/lib/
–with-png=/usr/local/lib/
–with-freetype-dir=/usr/local/freetype/

make

make install

cp php.ini-dist /usr/local/php/lib/php.ini 其中./configure 后的

–prefix=/usr/local/php
–with-apxs2=/usr/local/apache/bin/apxs
–with-mysql=/usr/local/mysql/
–with-libxml-dir=/usr/local/libxml2
是必要的选项

–with-gd=/usr/local/gd2/
–with-jpeg-dir=/usr/local/jpeg6/
–with-png=/usr/local/lib
–with-zlib-dir=/usr/lib
–with-freetype-dir=/usr/local/freetype
这是让PHP支持GD库的配置选项

–with-curl=/usr/local/curl 支持CURL库
–enable-ftp 打开FTP库函数支持

–enable-soap –with-xsl=/usr/local/libxslt –enable-xslt
让PHP支持SOAP, 上面这些一般用得少, 可以去掉

五、重新配置apache2让他支持php。

配置 httpd.conf 让apache支持PHP

vi /usr/local/apache/conf/httpd.conf

找到 AddType application/x-gzip .gz .tgz 在其下添加如下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

重启apache

/usr/local/apache/bin/apachectl restart

六、安装ZendOptimizer加速PHP

#tar zxvf ZendOptimizer-2.5.3-linux-glibc21-i386.tar.gz

#cd ZendOptimizer-2.5.3-linux-glibc21-i386

#./install.sh

注意:忘了mysql的root口令怎么办

/usr/local/mysql/support-files/mysql.server stop

mysqld_safe –skip-grant-tables &

mysqladmin -u user password ‘newpassword’

mysqladmin flush-privileges

RHEL AS4U3+httpd2.2+tomcat5.5+mysql5.0+php5.1

发表于 2006-11-23 | 分类于 Linux

<![CDATA[一、 所用软件及版本
1、 操作系统:RHEL as4u3
2、 Apache:httpd-2.2.2.tar.gz
apr-util-1.2.7.tar.gz
apr-1.2.7.tar.gz
3、 Tomcat:apache-tomcat-5.5.15.tar.gz
4、 Mysql:mysql-5.0.22.tar.gz
5、 Jdk:jdk-1_5_0_07-linux-i586.bin
6、 Apache和Tomcat连接:tomcat-connectors-1.2.18-src.tar.gz
7、 Php: php-5.1.4.tar.gz
二、 安装步骤:
1、 安装操作系统:这里就不介绍了,主要将相关的开发包装上。我将所有开发包都安装了。
2、 Apache安装:将以上所需要的所有软件上传到/usr/local下。
先解压:

tar xvfz httpd-2.2.2.tar.gz

cd httpd-2.2.2
首先可以看看里面的安装说明INSTALL和README。
在安装apache之前先安装apr-util-1.2.7.tar.gz和apr-1.2.7.tar.gz
首先安装apr。

tar xvfz apr-1.2.7.tar.gz

cd apr-1.2.7

./configure --prefix=/usr/local/apr-httpd

make

make install

cd ..
再安装apr-util-1.2.7.tar.gz
tar xvfz apr-util-1.2.7.tar.gz

cd apr-util-1.2.7

./configure --prefix=/usr/local/apr-util-httpd --with-apr=/usr/local/apr-httpd

make

make install
3、 接下来继续安装apache
cd ../httpd-2.2.2

./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-module=most --with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd --enable-so

make

make install
如果没有报错,apache基本安装完毕。 4、 安装JDK 回到local目录下:
cd ..

./jdk-1_5_0_07-linux-i586.bin

ln –s jdk1.5.0_07 jdk
设置JDK环境变量
vi /etc/profile
再文件尾部增加以下几句:
JAVA_HOME=/usr/local/jdk

JRE=$JAVA_HOME/jre

LC_ALL=zh_CN.GBK

PATH=$JAVA_HOME/bin:$JRE/bin:$PATH

CLASSPATH=.:$JAVA_HOME/bin/tools.jar:$JAVA_HOME/lib/dt.jar

export JAVA_HOME JRE LC_ALL CLASSPATH PATH 

5、 安装MYSQL

tar xvfz mysql-5.0.22.tar.gz

cd mysql-5.0.22

./configure --prefix=/usr/local/mysql/ --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler

make

make install

groupadd mysql

useradd -g mysql mysql

cp support-files/my-medium.cnf /etc/my.cnf

cd /usr/local/mysql

bin/mysql_install_db --user=mysql

chown -R root  .

chown -R mysql var

chgrp -R mysql .

bin/mysqld_safe --user=mysql &

mysqladmin –uroot password new-password
6、 安装php
tar xvfz php-5.1.4.tar.gz

cd php-5.1.4

./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs

make && make install

cp php.ini-dist /usr/local/lib/php.ini
7、 安装tomcat
tar xvfz apache-tomcat-5.5.15.tar.gz

mv apache-tomcat-5.5.15 tomcat
8、 安装Apache和Tomcat连接
tar zxvf tomcat-connectors-1.2.18-src.tar.gz

cd tomcat-connectors-1.2.18-src/ native/

./configure --with-apxs=/usr/local/apache/bin/apxs

make && make install
三、 配置httpd.conf
cd /usr/local/conf/

vi httpd.conf
1、 注释掉一下几行
#ServerAdmin [email protected]

#ServerName www.example.com:80

#DocumentRoot "/usr/local/apache/htdocs"
2、 修改里面相关内容 A、

    Options FollowSymLinks

#    AllowOverride None

     AllowOverride all

     Order deny,allow

#    Deny from all

     Allow from all

B、
#

    #

    # Possible values for the Options directive are "None", "All",

    # or any combination of:

    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

    #

    # Note that "MultiViews" must be named *explicitly* --- "Options All"

    # doesn't give it to you.

    #

    # The Options directive is both complicated and important.  Please see

    # http://httpd.apache.org/docs/2.2/mod/core.html#options

    # for more information.

    #

#    Options Indexes FollowSymLinks

    #

    # AllowOverride controls what directives may be placed in .htaccess files.

    # It can be "All", "None", or any combination of the keywords:

    #   Options FileInfo AuthConfig Limit

    #

    AllowOverride None

    #

    # Controls who can get stuff from this server.

    #

    Order allow,deny

    Allow from all

因为我这里将网站放在/usr/local/tomcat/webapps下 C、将
#Include conf/extra/httpd-vhosts.conf
这行#除掉 3、 增加以下内容: A、在AddType application/x-gzip .gz .tgz下增加以下两行
AddType application/x-httpd-php .php .phtml

   AddType application/x-httpd-php-source .phps
B、结尾增加
#add mod_jk module

LoadModule jk_module modules/mod_jk.so

# Update this path to match your modules location

# Where to find workers.properties

# Update this path to match your conf directory location (put workers.properties next to #httpd.conf)

  JkWorkersFile /usr/local/apache/conf/workers.properties

# Where to put jk logs

# Update this path to match your logs directory location (put mod_jk.log next to access_log)

  JkLogFile     /usr/local/apache/logs/mod_jk.log

# Set the jk log level [debug/error/info]

  JkLogLevel    info

# Select the log format

  JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,

  JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format

  JkRequestLogFormat     "%w %V %T"

# Send everything for context /examples to worker named worker1 (ajp13)

  JkMount  /*.jsp worker1

C、在/usr/local/apache/conf下增加一个workers.properties文件,内容如下:

# Define 1 real worker using ajp13

worker.list=worker1

Set properties for worker1 (ajp13)

worker.worker1.type=ajp13

worker.worker1.host=localhost

worker.worker1.port=8009

worker.worker1.lbfactor=50

worker.worker1.cachesize=10

worker.worker1.cache_timeout=600

worker.worker1.socket_keepalive=1

worker.worker1.reclycle_timeout=300
D、再编辑/usr/local/apache/conf/extra/下httpd-vhosts.conf文件

vi httpd-vhosts.conf

将里面例子修改一下


DirectoryIndex index.htm index.html index.jsp index.php

ServerAdmin [email protected]

DocumentRoot /usr/local/tomcat/webapps/ROOT

ServerName 192.168.0.170

ErrorLog logs/170-error_log

CustomLog logs/170-access_log common


因为没有做域名解析,我这里在ServerName下直接用的是IP地址。
四、 测试
先启动tomcat,再启动apache。启动apache之前可以到apache/bin下测试一下虚拟域是否配置正确。./httpd –S 如果配置有错误会提示你。
没 有问题后,在IE地址栏输入http://192.168.0.170 此时将显示的是
tomcat的]]
>

1…2627
九王爷

九王爷

这里是外宅,备份用的

269 日志
19 分类
41 标签
© 2017 九王爷
由 Hexo 强力驱动
主题 - NexT.Pisces