1 文件管理2 软件管理3 系统管理
4 服务管理5 网络管理6 磁盘管理
7 用户管理8 脚本相关9 服务配置
创建空白文件
touch
不提示删除非空目录
rm -rf 目录名
(-r:递归删除-f 强制)
##################################
恢复rm 删除的文件(ext3)
查看磁盘分区格式
df -T
卸载挂载
umount /data/
ext3grep /dev/sdb1 --ls --inode 2
记录信息继续查找目录下文件inode 信息
ext3grep /dev/sdb1 --ls --inode 131081 # 此处是inode
记录下inode 信息开始恢复目录
ext3grep /dev/sdb1 --restore-inode 49153
##################################
windows 文本转linux 文本
dos2unix
linux 文本转windows 文本
unix2dos
转换编码
iconv -f gbk -t utf8 原.txt > 新.txt
查看md5 值
md5sum
硬链接
ln
符号连接
ln -s
查看上下翻页且显示行号
cat ? | nl |less
q 退出
结束状态
ctrl+z
查看文件开头内容
head
查看文件结尾内容
tail -f # 监视日志文件
检查文件类型
file
重命名
rename
rename source_pattern target_pattern source_files
更改默认权限
umask
按数字排序
sort -n
按数字倒叙
sort -nr
过滤重复行
sort -u
删除重复的行
uniq
重复的行出现次数
uniq -c
只显示不重复行
uniq -u
将两个文件合并用tab 键分隔开
paste a b
将两个文件合并指定’+‘符号隔开
paste -d’+’ a b
将多行数据合并到一行用tab 键隔开
paste -s a
设置隐藏属性
chattr [±=] [ASacdistu] 文件或目录
向下分面器
more
搜索
locate 字符串
查看行数
wc -l
实时某个目录下查看最新改动过的文件
watch -d -n 1 ‘df; ls -FlAt /path’
快速备份一个文件
cp filename{,.bak}
##################################
配置编辑器
gconf-editor
vi 配置文件
vi /etc/vimrc
编辑文件
vim
打开行号
:set nu
取消行号
:set nonu
跳转到200
200G
取消高亮
:nohl
设置自动缩进
:set autoindent
查看文本格式
set ff
改为unix 格式
set binary
向前翻页
ctrl+ U
向后翻页
ctrl+ D
全部替换
g/字符1/s//字符2/g
%s/字符1/字符2/g
前编辑文件的文件路径
:w !sudo tee %
##################################
按文件名查找
find /etc -name http
查找某一类型文件
find . -type f
按照文件权限查找
find / -perm
按照文件属主查找
find / -user
按照文件所属的组来查找文件
find / -group
文件使用时间在N 天以内
find / -atime -n
文件使用时间在N 天以前
find / -atime +n
文件内容改变时间在N 天以内
find / -mtime -n
文件内容改变时间在N 天以前
find / -mtime +n
文件状态改变时间在N 天前
find / -ctime +n
文件状态改变时间在N 天内
find / -ctime -n
date -d "7 days ago" +%Y%m%d
date +%Y-%m-%d -d '20110902'
top
前五行是系统整体的统计信息。
第一行是任务队列信息,同uptime 命令的执行结果。其内容如下:
01:06:48 当前时间
up 1:22 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
三个数值分别为1 分钟、5 分钟、15 分钟前到现在的平均值。
第二、三行为进程和CPU 的信息。当有多个CPU 时,这些内容可能会超过两行。内容如下:
Tasks: 29 total 进程总数
1 running 正在运行的进程数
28 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.3% us 用户空间占用CPU 百分比
1.0% sy 内核空间占用CPU 百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU 百分比
98.7% id 空闲CPU 百分比
0.0% wa 等待输入输出的CPU 时间百分比
0.0% hi
0.0% si
最后两行为内存信息。内容如下:
Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号列名含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为?
h PR 优先级
i NI nice 值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU 环境下有意义
k %CPU 上次更新到现在的CPU 时间占用百分比
l TIME 进程使用的CPU 时间总计,单位秒
m TIME+ 进程使用的CPU 时间总计,单位1/100 秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考sched.h
##################################
iptables
内建三个表:nat mangle 和filter
filter 预设规则表,有INPUT、FORWARD 和OUTPUT 三个规则链
INPUT 进入
FORWARD 转发
OUTPUT 出去
ACCEPT 将封包放行
REJECT 拦阻该封包
DROP 丢弃封包不予处理
-A 在所选择的链(INPUT 等)末添加一条或更多规则
-D 删除一条
-E 修改
-p tcp、udp、icmp 0 相当于所有all !取反
-P 设置缺省策略(与所有链都不匹配强制使用此策略)
-s IP/掩码(IP/24) 主机名、网络名和清楚的IP 地址!取反
-j 目标跳转,立即决定包的命运的专用内建目标
-i 进入的(网络)接口[名称] eth0
-o 输出接口[名称]
-m 模块
–sport 源端口
–dport 目标端口
#配置文件
vi /etc/sysconfig/iptables
#将防火墙中的规则条目清除掉
iptables -F
#注意:iptables -P INPUT ACCEPT
#导入防火墙规则
iptables-restore <规则文件
#保存防火墙设置
/etc/init.d/iptables save
#重启防火墙服务
/etc/init.d/iptables restart
#查看规则
iptables -L -n
iptables -L -n --line-numbers
#从某个规则链中删除一条规则
iptables -D INPUT --dport 80 -j DROP
iptables -D INPUT 8
#取代现行规则
iptables -R INPUT 8 -s 192.168.0.1 -j DROP
#插入一条规则
iptables -I INPUT 8 --dport 80 -j ACCEPT
#查看转发
iptables -t nat -nL
#在内核里打开ip 转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
##################################
#允许本地回环
iptables -A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
#允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#开放对外访问
iptables -P OUTPUT ACCEPT
#指定某端口针对IP 开放
iptables -A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
#允许的IP 或IP 段访问
iptables -A INPUT -s 192.168.10.37 -p tcp -j ACCEPT
#开放对外开放端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#关闭入口
iptables -P INPUT DROP
#关闭转发
iptables -P FORWARD DROP
##################################
iptables 规则文件
*filter
:INPUT DROP [637:58967]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [5091:1301533]
#允许的IP 或IP 段访问
-A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
-A INPUT -s 192.168.0.0/255.255.0.0 -p tcp -j ACCEPT
#开放对外开放端口
-A INPUT -p tcp --dport 80 -j ACCEPT
#指定某端口针对IP 开放
-A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
#拒绝所有协议(INPUT 允许的情况)
#-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#拒绝ping
-A INPUT -p tcp -m tcp -j REJECT --reject-with icmp-port-unreachable
COMMIT
启动sendmail 服务
./sendmail start
/etc/init.d/sendmail start
关闭sendmail 服务
./sendmail stop
查看sendmail 服务当前状态
./sendmail status
发送邮件
echo 内容| /bin/mail -s “标题” 收件箱
打开服务列表需要打*
ntsysv
让某个服务不自动启动35 指的是运行级别
httpd:chkconfig --level 35 httpd off
让某个服务自动启动
httpd:chkconfig --level 35 httpd on
查看所有服务的启动状态
chkconfig --list
查看某个服务的启动状态
chkconfig --list |grep httpd
查看服务的状态
chkconfig –-list [服务名称]
设置非独立服务启状态
chkconfig 服务名on|off|set
开启mysql 后台运行
/usr/local/mysql/bin/mysqld_safe --user=mysql &
开机启动执行
vi /etc/rc.d/rc.local
开机启动和关机关闭服务连接
/etc/rc.d/rc3.d/S55sshd
查看硬盘容量
df -h
查看磁盘分区格式
df -T
修改只读文件系统为读写
mount -o remount,rw /
查看卷标
e2label /dev/sda5
创建卷标
e2label /dev/sda5 new-label
NTFS 添加卷标
ntfslabel -v /dev/sda8 new-label
ext2 分区转ext3 分区
tune2fs -j /dev/sda
格式化分区
mkfs -t ext3 /dev/hda3
指定索引块大小
mke2fs -b 2048 /dev/sda5
对文件系统修复
fsck -y /dev/sda6
查看超级块的信息
dumpe2fs -h /dev/sda5
查看当前系统支持文件系统
cat /proc/filesystems
检测硬盘状态
smartctl -H /dev/sda
检测硬盘信息
smartctl -i /dev/sda
检测所有信息
smartctl -a /dev/sda
检测目录下所有文件大小
du -h 目录
显示当前目录中子目录的大小
du -h --max-depth=1
挂载光驱
mount -t iso9660 /dev/dvd /mnt
挂载镜像文件
mount -o loop /software/rhel4.6.iso /mnt/
##################################
磁盘grub 开机引导项添加
/etc/grub.conf
title ms-dos
rootnoverify (hd0,0)
chainloader +1
##################################
建立软RAID1
两块硬盘分区一样,分别新建分区文件类型为software RAID
创建两个就点击raid 合并为RAID1,这里的挂载点为正常linux 目录
查看raid 工作状态
cat /proc/mdstat
两个盘都加grub 引导
查看
cat /boot/grub/grub.conf
grub
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
修改grub 启动项配置文件
vi /boot/grub/grub.conf
复制title CentOS 到最后的四行
在下面粘贴修改为刚才新加的引导(hd1,0)。
查看分区
sfdisk -d /dev/hda
导出A 盘分区列表
sfdisk -d /dev/hda > fq.hda
将分区列表导入到新加的硬盘
sfdisk /dev/hdb < fq.hda
恢复新挂载的硬盘分区
mdadm /dev/md1 -a /dev/hdb5
##################################
正则表达式
^ 行首定位
$ 行为定位
. 匹配除换行符以外的任意字符
while [ $num -lt 10 ]
do
echo n u m ( ( n u m = num ((num= num((num=num+2))
done
##################################
grep a a.txt | while read a
do
echo $a
done
##################################
w=awk -F ":" '{print $1}' c
for d in $w
do
KaTeX parse error: Expected 'EOF', got '#' at position 8: d done #̲###############…{#o[]};i++))
do
echo KaTeX parse error: Expected '}', got 'EOF' at end of input: {o[i]}
done
##################################
until 循环# 当command 不为0 时
until command
do
body
done
##################################
流程控制
break N # 跳出几层循环
continue N # 跳出几层循环,循环次数不变
continue # 重新循环次数不变
##################################
变量
将变量A 赋值为字串
A=“a b c def”
A=命令
间接调用
eval a=$$a
将变量A 定义为組数
A=(a b c def)
set a1 a2 a3 a4
$1 $2 KaTeX parse error: Expected 'EOF', got '#' at position 114: …are -i n=0 env #̲ 查看环境变量 env | g…nu=2222 # 变量引用变量赋值
unset name # 变量清除
export -n name # 去掉只读变量
shift # 用于移动位置变量,调整位置变量,使$3 的值赋给$2.$2 的值赋予$1
name + 0 # 将字符串转换为数字
number " " # 将数字转换成字符串
常用系统变量
$0 # 脚本启动名(包括路径)
basename $0 # 只取脚本名
$n # 当前程式的第n 个参数,n=1,2,…9
$ # 当前程式的所有参数(不包括脚本本身)
$# # 当前程式的参数个数(不包括脚本本身)
$$ # 当前程式的PID
$! # 执行上一个指令的PID
KaTeX parse error: Expected 'EOF', got '#' at position 3: ? #̲ 执行上一个指令的返回值 变量…{}
${name:+value} # 如果设置了name,就把value 显示,未设置则为空
${name:-value} # 如果设置了name,就显示它,未设置就显示value
${name:?value} # 未设置提示用户错误信息value
${name:=value} # 如未设置就把value 设置并显示<写入本地中>,
${#A} # 可得到变量中字节
${#A[]} # 数组个数
${A[2]} # 脚本的一个参数
${A:4:9} # 取变量中第4 位到后面9 位
${A/www/http} # 取变量并且替换每行第一个关键字
${A//www/http} # 取变量并且全部替换每行关键字
定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
${file#/} # 去掉第一条/ 及其左边的字串:dir1/dir2/dir3/my.file.txt
${file##/} # 去掉最后一条/ 及其左边的字串:my.file.txt
${file#.} # 去掉第一个. 及其左边的字串:file.txt
${file##.} # 去掉最后一个. 及其左边的字串:txt
${file%/} # 去掉最后条/ 及其右边的字串:/dir1/dir2/dir3
${file%%/} # 去掉第一条/ 及其右边的字串:(空值)
${file%.} # 去掉最后一个. 及其右边的字串:/dir1/dir2/dir3/my.file
${file%%.*} # 去掉第一个. 及其右边的字串:/dir1/dir2/dir3/my
##################################
test 条件判断
expression 为字符串操作
-n str # 字符串str 是否不为空
-z str # 字符串str 是否为空
expression 为文件操作
-b # 是否块文件
-p # 文件是否为一个命名管道
-c # 是否字符文件
-r # 文件是否可读
-d # 是否一个目录
-s # 文件的长度是否不为零
-e # 文件是否存在
-S # 是否为套接字文件
-f # 是否普通文件
-x # 文件是否可执行,则为真
-g # 是否设置了文件的SGID 位
-u # 是否设置了文件的SUID 位
-G # 文件是否存在且归该组所有
-w # 文件是否可写,则为真
-k # 文件是否设置了的粘贴位
-t fd # fd 是否是个和终端相连的打开的文件描述符(fd 默认为1)
-O # 文件是否存在且归该用户所有
! # 取反
expression 为整数操作
expr1 -a expr2 # 如果expr1 和expr2 评估为真,则为真
expr1 -o expr2 # 如果expr1 或expr2 评估为真,则为真
两值比较
整数字符串
-lt <: # 小于
-gt >: # 大于
-le <=: # 小于或等于
-ge >=: # 大于或等于
-eq ==: # 等不等
-ne !=: # 不等于
判断大小,0 为真,1 为假
test 10 -lt 5
echo $?
1
判断字符串长度是否为0
test -n “hello”
0
##################################
重定向
cmd 1> fiel # 把标准输出重定向到file 文件中
cmd > file 2>&1 # 把标准输出和标准错误一起重定向到file 文件中
cmd 2> file # 把标准错误重定向到file 文件中
cmd 2>> file # 把标准错误重定向到file 文件中(追加)
cmd >> file 2>&1 # 把标准输出和标准错误一起重定向到file 文件中(追加)
cmd < file >file2 # cmd 命令以file 文件作为stdin(标准输入),以file2 文件作为标
准输出
cat <>file # 以读写的方式打开file
cmd < file cmd # 命令以file 文件作为stdin
cmd << delimiter
cmd; #从stdin 中读入,直至遇到delimiter 分界符。
delimiter
&n # 使用系统调用dup (2) 复制文件描述符n 并把结果用作标准输出
<&n # 标准输入复制自文件描述符n
<&- # 关闭标准输入(键盘)
&- # 关闭标准输出
n<&- # 表示将n 号输入关闭
n>&- # 表示将n 号输出关闭
##################################
运算符
[ ] 等同于 []等同于 []等同于(()) # $[]表示形式告诉shell 求中括号中的表达式的值
~var # 按位取反运算符,把var 中所有的二进制为1 的变为0,为0 的变为1
var<右端的各位上补上0 值,每做一次按位左移就有var 乘2
var>>str # 右移运算符,把var 中所有的二进制位向右移动str 位,忽略最右移出的各位,
最左的各位上补0,每次做一次右移就有实现var 除以2
var&str # 与比较运算符,var 和str 对应位,对于每个二进制来说,如果二都为1,结果为1.
否则为0
var^str # 异或运算符,比较var 和str 对应位,对于二进制来说如果二者互补,结果为1,
否则为0
var|str # 或运算符,比较var 和str 的对应位,对于每个二进制来说,如二都该位有一个1
或都是1,结果为1,否则为0
运算符的优先级
级别运算符说明
1 =,+=,-=,/=,%=,*=,&=,^=,|=,<<=,>>== # 赋值运算符
2 || # 逻辑或前面不成功执行
3 && # 逻辑与前面成功后执行
4 | # 按位或
5 ^ # 按异位与
6 & # 按位与
7 ==,!= # 等于/不等于
8 <=,>=,<,> # 大于或等于/小于或等于/大于/小于
9 <<,>> # 按位左移/按位右移(无转意符号)
10 +,- # 加减
11 *,/,% # 乘,除,取余
12 ! ,~ # 逻辑非,按位取反或补码
13 -,+ # 正负
##################################
数学运算
$(( )) 整数运算符号大致有这些:
expr 2 \* 3
expr $LOOP + 1
date +%s%N
.outtmpawk -F " = " '{print $1}' temp.txt
basename $0
[-a] [-b value]”shift $(($OPTIND -1))
"awk '{print}' $outtmp
#操作
;;
q)
exit #break
;;
esac
##################################
dialog 输入对话框加判断
while :
do
outtmp=/tmp/outtmp
dialog --title “雪松制作” --form “请输入” 20 60 10 “用户:” 1 2 “” 1 15 35 0 “ID:” 2 2 “” 2
15 35 0 “” 6 2 “” 6 0 0 0 “输入格式如下” 7 2 “” 7 0 0 0 “说明” 8 2 “” 8 0 0
0 2> $outtmp
yh=sed -n '1p' $outtmp
id=sed -n '2p' $outtmp
if echo $yh | grep -e ‘1[0-9]{0,2}’ > /dev/null 2>&1
then
if echo $id | grep -e ‘2[0-9]{0,12}’ > /dev/null 2>&1
then
break
else
echo “您输入的不合法,请从新输入!”
fi
else
echo “您输入的不合法,请从新输入!”
fi
done
##################################
打印表格
#!/bin/sh
clear
awk ‘BEGIN{
print “±-------------------±-------------------+”;
printf “|%-20s|%-20s|\n”,“Name”,“Number”;
print “±-------------------±-------------------+”;
}’
a=grep "^[A-Z]" a.txt |sort +1 -n |awk '{print $1":"$2}'
#cat a.txt |sort +1 -n |while read list
for list in $a
do
name=echo $list |awk -F: '{print $1}'
number=echo $list |awk -F: '{print $2}'
awk ‘BEGIN{printf “|%-20s|%-20s|\n”,"’“ n a m e " ′ " , " ′ " name"'","'" name"′","′"number”‘";
print “±-------------------±-------------------+”;
}’
done
awk ‘BEGIN{
print " *** The End *** "
print " "
}’
##################################
判断日期是否合法
#!/bin/sh
while read a
do
if echo $a | grep -q “-” && date -d $a +%Y%m%d > /dev/null 2>&1
then if echo a ∣ g r e p − e ′ [ 0 − 9 ] { 4 } − [ 01 ] [ 0 − 9 ] − [ 0 − 3 ] [ 0 − 9 ] a | grep -e '^[0-9]\{4\}-[01][0-9]-[0-3][0-9] a∣grep−e′[0−9]{4}−[01][0−9]−[0−3][0−9]’
then
break
else
echo “您输入的日期不合法,请从新输入!”
fi
else
echo “您输入的日期不合法,请从新输入!”
fi
done
echo “日期为$a”
##################################
打印日期段所有日期
#!/bin/bash
qsrq=20010101
jsrq=20010227
n=0
tmp
while :;do
current= ( d a t e + (date +%Y%m%d -d" (date+n day $qsrq")
if [[ $current == $jsrq ]];then
echo $current >>tmp;break
else
echo $current >>tmp
((n++))
fi
done
rq=awk 'NR==1{print}' tmp
##################################
打印提示
cat <#内容
EOF
登陆远程执行命令(特殊符号需要\转义)
ssh root@ip << EOF
#执行命令
EOF
登陆mysql 执行命令
mysql -uroot -ppasswd -S mysql.sock --default-character-set=gbk -A#mysql 命令
EOF
##################################
数学计算的小算法
#!/bin/sh
A=1
B=1
while [ $A -le 10 ]
do
SUM=expr $A \* $B
echo “$SUM”
if [ $A = 10 ]
then
B=expr $B + 1
A=1
fiA
=expr $A + 1
done
##################################
竖行转横行(三种)
cat file|tr ‘\n’ ’ ’
echo KaTeX parse error: Expected 'EOF', got '#' at position 12: (cat file) #̲!/bin/sh for i …{a}" “${i}
done
echo $a
##################################
取用户的根目录
#! /bin/bash
#showhome.sh
IFS=:
while read name pass uid gid gecos home shell
do
echo $home
done
执行./showhome.sh < /etc/passwd
##################################
把汉字转成encode 格式:
echo 论坛| tr -d “\n” | xxd -i | sed -e “s/ 0x/%/g” | tr -d " ,\n”
%c2%db%cc%b3
大写的:
echo 论坛| tr -d “\n” | xxd -i | sed -e “s/ 0x/%/g” | tr -d " ,\n" | tr “[a-f]” “[A-F]”
%C2%DB%CC%B3
##################################
把带有大写字母的文件名改为全部小写
#!/bin/bash
for f in *;do
mv $fecho $f |tr "[A-Z]" "[a-z]"
done
##################################
查找连续多行,在不连续的行前插入
#/bin/bash
lastrow=null
i=0
cat incl|while read line
do
i=expr $i + 1
if echo “KaTeX parse error: Expected 'EOF', got '#' at position 18: …strow" | grep "#̲include <[A-Z].…line” | grep -v “#include <[A-Z].h>”
then
sed -i ‘’$i’i\//All header files are include’ incl
i=expr $i + 1
fi
fi
lastrow=“$line”
done
##################################
====================================================================
samba
修改配置文
/etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = sambaserver
security=share
hosts allow=网络主机
[file]
comment=home directories
path=/etc/samba/xuesong
public=yes
writable=yes
browseable=yes
重启
service smb restart
linux 访问windows 共享
smbclient -L //ip 地址或计算机名
##################################
DNS 服务器
DNS 主配置文件,moon.com 域名,zone.moon.com 域的配置文件
vi /etc/named.conf
zone “moon.com” IN {
type master;
file “zone.moon.com”;
allow-update { none; };
};
测试主配置文件
named-checkconf
新建域的配置文件zone.moon.com
vi /var/named/chroot/var/named/zone.moon.com
$TTL 86400
@ IN SOA xs. quanzhou722.163.com. (
20102014
3H
15M
1W
1D
)
IN NS xs.
IN MX 5 mail.
www IN A 192.168.1.209
ftp IN A 192.168.1.209
mail IN A 192.168.1.209
测试moon.com 域配置文件
named-checkzone moon.com /var/named/chroot/var/named/zone.moon.com
建立域配置文件的软连接
ln -s /var/named/chroot/var/named/zone.moon.com /var/named/zone.moon.com
重启named 服务
service named restart
设置DNS
vi /etc/resolv.conf
测试解析是否成功
host www.moon.com
nslookup www.moon.com
##################################
ftp 配置
查看vsftp 是否安装
rpm -qa | grep vsftp
主配置文件
vi /etc/vsftpd/vsftpd.conf
启动VSFTPD 服务
service vsftpd restart
查看21 端口是否开放
netstat -atln |grep 21
1、匿名用户是否允许访问
anonymous_enable=YES
anon_mkdir_write_enable=YES
2、本地用户管理
local_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
将用户添加到vsftpd.chroot_list 文件中允许访问
cat /etc/passwd |grep “:5[0-9][0-9]:” | awk -F : ‘{print $1}’ > /etc/vsftpd.chroot_list
3、虚拟用户管理
(1)要用到文件数据库db4
rpm -qa |grep db4
(2)将帐户放入文本:(奇数行)用户名(偶数行)密码
vi zhanghu.dat
(3)生成帐户的文件数据库
db_load -T -t hash -f zhanghu.dat /etc/vsftpd/vsftpd_zhanghu.db
(4)修改文件数据库访问权限
chmod 600 /etc/vsftpd/vsftpd_zhanghu.db
(5)手工建立虚拟用户所需的PAM 配置文件
vi /etc/pam.d/vsftpd.zhanghu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_zhanghu
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_zhanghu
(6)添加一个虚拟用户的入口帐户
useradd -d /var/ZhanDian -s /sbin/nologin XuNiRuKou
(7)在主配置文件中添加虚拟用户的配置内容
虚拟用户的新添加配置
chroot_local_user=YES
guest_enable=YES
guest_username=XuNiRuKou
pam_service_name=vsftpd.zhanghu
(8)在vsftpd.conf 配置文件中指定用户配置文件的目录
user_config_dir=/etc/vsftpd/vsftpd_zhandian
(9)建立配置文件中指定用户配置文件的目录
mkdir /etc/vsftpd/vsftpd_zhandian
(10)因为入口帐户是一个本地帐户,所以要指定虚拟用户具有本地帐户的权限,才能读写自
己空间中的文件
虚拟用户就可以就拥有写权限
virtual_use_local_privs=YES
(11)
touch /etc/vsftpd/vsftpd_zhandian/xuesong
echo “local_root=/var/ZhanDian/xuesong” >> /etc/vsftpd/vsftpd_zhandian/xuesong
(12)
mkdir /var/ZhanDian/xuesong
(13)
chown -R XuNiRuKou:XuNiRuKou /var/ZhanDian/
(14)重启服务
/etc/init.d/vsftpd restart
(15)客户端虚拟账号测试
建立用户脚本。最好在加上判断用户名是否存在
#!/bin/sh
echo 请输入用户名
read y
echo $y >> zhanghu.dat
echo 请输入密码
read m
echo m > > z h a n g h u . d a t d b l o a d − T − t h a s h − f z h a n g h u . d a t / e t c / v s f t p d / v s f t p d z h a n g h u . d b c h m o d 600 / e t c / v s f t p d / v s f t p d z h a n g h u . d b t o u c h / e t c / v s f t p d / v s f t p d z h a n d i a n / m >> zhanghu.dat db_load -T -t hash -f zhanghu.dat /etc/vsftpd/vsftpd_zhanghu.db chmod 600 /etc/vsftpd/vsftpd_zhanghu.db touch /etc/vsftpd/vsftpd_zhandian/ m>>zhanghu.datdbload−T−thash−fzhanghu.dat/etc/vsftpd/vsftpdzhanghu.dbchmod600/etc/vsftpd/vsftpdzhanghu.dbtouch/etc/vsftpd/vsftpdzhandian/y
echo “local_root=/var/ZhanDian/ y " > > / e t c / v s f t p d / v s f t p d z h a n d i a n / y" >> /etc/vsftpd/vsftpd_zhandian/ y">>/etc/vsftpd/vsftpdzhandian/y
mkdir /var/ZhanDian/ y c h o w n − R X u N i R u K o u : X u N i R u K o u / v a r / Z h a n D i a n / y chown -R XuNiRuKou:XuNiRuKou /var/ZhanDian/ ychown−RXuNiRuKou:XuNiRuKou/var/ZhanDian/y
/etc/init.d/vsftpd restart
##################################
httpd 安装
tar zxvf httpd-2.2.12.tar.gz
cd httpd-2.2.12
./configure --prefix=/usr/local/httpd
–enable-rewrite
make && make install
ls /usr/local/
groupadd www
useradd -g www -M -s /sbin/nologin www
cd /usr/local/httpd/
vi conf/httpd.conf
服务器开启在软件安装目录的bin 中
./apachectl start
网页放在的htdocs 中
开机启动
vi /etc/rc.d/rc.local
/usr/local/httpd/bin/apachectl start
如果启动提示
httpd: Could not reliably determine the server fully qualified domain name, using 127.0.0.1 for
ServerName
修改/etc/hosts 计算机名
在httpd.conf 中开启
ServerName 127.0.0.1:80
编码设置
AddDefaultCharset UTF-8
AddDefaultCharset GB2312
##################################
mysql 源码安装
groupadd mysql
useradd mysql -g mysql -M -s /bin/false
tar zxvf mysql-5.0.22.tar.gz
cd mysql-5.0.22
./configure --prefix=/usr/local/mysql
–with-client-ldflags=-all-static
–with-mysqld-ldflags=-all-static
–with-mysqld-user=mysql
–with-extra-charsets=all
–with-unix-socket-path=/var/tmp/mysql.sock
make && make install
生成mysql 用户数据库和表文件,在安装包中输入。
scripts/mysql_install_db --user=mysql
vi ~/.bashrc
export PATH=”$PATH: /usr/local/mysql/bin"
配置文件,有large,medium,small 三个,根据机器性能选择
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
cd /usr/local
chmod 750 mysql -R
chgrp mysql mysql -R
chown mysql mysql/var -R
cp /usr/local/mysql/libexec/mysqld mysqld.old
ln -s /usr/local/mysql/bin/mysql /sbin/mysql
ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
ln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc3.d/S15mysql5
ln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc0.d/K15mysql5
##################################
mysql rpm 安装
到http://www.mysql.com/downloads/mysql 下载mysql RPM(service 和client),
MySQL-server-community-5.1.51-1.rhel5.i386.rpm 安装服务端
MySQL-client-community-5.1.51-1.rhel5.i386.rpm 安装客户端
MySQL-devel-community-5.1.51-1.rhel5.i386.rpm 用于php 的mysql 安装
rpm –ivh MySQL-server-community-5.1.51-1.rhel5.i386.rpm
rpm –ivh MySQL-client-community-5.1.51-1.rhel5.i386.rpm
rpm –ivh MySQL-devel-community-5.1.51-1.rhel5.i386.rpm
/etc/init.d/mysqld start
mysqladmin -u root password ‘xuesong’
mysql -u root -S /var/lib/mysql/mysql.sock -p
数据目录/var/lib/mysql
chkconfig --list |grep mysqld
chkconfig --level 3 mysqld on
配置文件(日志\pid)
/etc/my.cnf
ll /usr/bin/mysql*
##################################
mysql 常用命令
启动mysql 服务
./mysql/bin/mysqld_safe --user=mysql &
登录mysql 的命令
格式: mysql -h 主机地址-u 用户名-p 用户密码
mysql -h110.110.110.110 -P3306 -uroot -p
mysql -uroot -p -S /data1/mysql5/data/mysql.sock -A --default-character-set=GBK
刷新
flush privileges;
显示所有数据库
show databases;
打开数据库
use dbname;
显示选中数据库中所有的表
show tables;
查看表结构
desc tables;
删除数据库
drop database name;
删除表
drop table name;
创建数据库
create database name;
mysqladmin -h myhost -u root -p create dbname
创建表
create table ka(ka_id varchar(6),qianshu int);
插入字段
alter table name add column accountid(列名) int(11) NOT NULL(字段不为空);
不登陆mysql 插入字段
mysql -uroot -p -S mysql.sock -e “use db;alter table gift add column accountid int(11) NOT
NULL;flush privileges;”
查询
select 列名称from 表名称;
select host,user,password from user;
备份数据库
mysqldump -h host -u root -p dbname >dbname_backup.sql
mysqlhotcopy 只能备份MyISAM 引擎
/bin/mysqlhotcopy -u root -p
还原数据库
mysql -h host -u root -p dbname < dbname_backup.sql
登陆mysql 后还原sql 文件
source 路径.sql
赋予查询权限(没有用户,直接创建)
grant select on db.* to log@“%” Identified by “123456”;
赋予所有权限(没有用户,直接创建)
grant all privileges on db.* to log@“IP” identified by ‘123456’ with grant option;
更改密码
update user set password=password(‘新密码’) where user=‘root’
mysqladmin -u root password ‘xuesong’
mysql 查看所有用户的语句
select user();
删除用户
delete from user where user=‘sss’ and host=‘localhost’ ;
查看主从
show slave status\G;
查看主从复制进程
show processlist;
添加索引解决停mysql 速度慢
ALTER TABLE player ADD INDEX weekcredit_faction_index (weekcredit, faction);
创建主从复制用户
grant replication slave on . to ‘用户’@‘%’ identified by ‘密码’;
备份表
mysqldump -u root -p -S mysql.sock --default-character-set=utf8 --hex-blob db table1 table1 >
/data/db.sql
查看系统的字符集和排序方式的设定
SHOW VARIABLES LIKE ‘character_set_%’;
查看mysql 所有参数
show variables;
删除空用户
delete from user where user=‘’;
创建表指定存储引擎的类型:
CREATE TABLE innodb (id int, title char(20)) ENGINE = INNODB
CREATE TABLE myisam (id int, title char(20)) ENGINE = MyISAM
改变现有的表使用的存储引擎:
ALTER TABLE mytable ENGINE = MyISAM
查询表引擎
SHOW TABLE STATUS from 数据库库名where Name=‘表名’;
SHOW TABLE STATUS from db where Name=‘innodb’;
查看mysql 变量
SHOW VARIABLES;
查询用户权限
select host,user,password from user;
查看表的引擎状态
show table status
##################################
gd 安装
分别安装组件libxml、zlib、freetype、libpng、jpegsrc、gd
libxml2-2.6.24.tar.bz2
zlib-1.2.3.tar.gz
freetype-2.2.1.tar.gz
libpng-1.2.10.tar.gz
jpegsrc.v6b.tar.gz
gd-2.0.33.tar.gz
libxml 安装
tar xzvf libxml2-2.6.24.tar.bz2
tar xvf libxml2-2.6.24.tar
cd libxml2-2.6.24
./configure
make
make install
zlib 安装
tar xzvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
make install
freetype 安装
tar xzvf freetype-2.2.1.tar.gz
cd freetype-2.2.1
./configure --prefix=/usr/local/php/modules/freetype
make
make install
libpng 安装
tar xzvf libpng-1.2.10.tar.gz
cd libpng-1.2.10
./configure --prefix=/usr/local/php/modules/libpng
jpeg 安装
mkdir /usr/local/php/modules/jpeg6
mkdir /usr/local/php/modules/jpeg6/bin
mkdir /usr/local/php/modules/jpeg6/lib
mkdir /usr/local/php/modules/jpeg6/include
mkdir /usr/local/php/modules/jpeg6/man
mkdir /usr/local/php/modules/jpeg6/man/man1
一句创建
mkdir -pv /usr/local/jpeg/{,bin,lib,include,man/man1,man1}
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure --prefix=/usr/local/php/modules/jpeg6
–enable-shared
–enable-static
make
make install
gd 安装
tar zxvf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure --prefix=/usr/local/gd2
–with-jpeg=/usr/local/php/modules/jpeg6
–with-png=/usr/local/php/modules/libpng
–with-zlib
–with-freetype=/usr/local/php/modules/freetype
修改Makefile 文件231 行,重复的第二个freetype 改为libpng
make
make install
php 安装
tar xvf php-5.1.6.tar
cd php-5.1.bz2.6
./configure --prefix=/usr/local/php
–sysconfdir=/etc
–with-apxs2=/usr/local/httpd/bin/apxs
–with-config-file-path=/usr/local/php/lib
–with-libxml-dir=/usr/local/libxml2
–with-zlib
–with-jpeg-dir=/usr/local/php/modules/jpeg6
–with-freetype-dir=/usr/local/php/modules/freetype
–with-gd=/usr/local/gd2
–with-openssl
–with-regex=php
–with-gnu-ld
–with-tsrm-pthreads
–with-bz2
–with-gettext
–with-db4=/usr
–enable-ftp
–enable-bcmath
–enable-dba
–enable-sockets
–enable-soap
–enable-zend-multibyte
–enable-mbstring
–with-curlwrappers
–with-curl=/usr/local/curl
–with-pdo-mysql=/usr/local/mysql
–with-mysql=/usr/local/mysql
–with-mysqli=/usr/local/mysql/bin/mysql_config
make
make install
cp php.ini-recommended /usr/local/php/lib/php.ini
vi /usr/local/php/lib/php.ini
在PHP.IN 添加
[eaccelerator]
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so
eaccelerator.shm_size=“32”
eaccelerator.cache_dir=“/usr/local/cache/eaccelerator”
eaccelerator.enable=“1”
eaccelerator.optimizer=“1”
eaccelerator.check_mtime=“1”
eaccelerator.debug=“0”
eaccelerator.filter=“”
eaccelerator.shm_max=“0”
eaccelerator.shm_ttl=“0”
eaccelerator.shm_prune_period=“0”
eaccelerator.shm_only=“0”
eaccelerator.compress=“1”
eaccelerator.compress_level=“9”
完成后在/usr/local/httpd/conf/httpd.conf 文件上添加如下一行:
AddType application/x-httpd-php .php .php5
ln -s /usr/local/php/bin/php /sbin/php
vi index.php
重启httpd
/usr/local/httpd/bin/apachectl restart
最后一步重新启动apache 报如下错误:
httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load
/usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore
segment prot after reloc: Permission denied
不关闭SELINUX 的方法:
##################################
LINUX 集群
LVS-- ipvsadm 命令参考
ipvsadm 的用法和格式如下: ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p
[timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C ipvsadm -R ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight] ipvsadm -d -t|u|f
service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp ipvsadm --start-daemon state [–mcast-interface interface] ipvsadm
–stop-daemon
ipvsadm -h
命令选项解释:有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都
可以。
-A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的
虚拟服务器。
-E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C --clear 清除内核虚拟服务器表中的所有记录。
-R --restore 恢复虚拟服务器规则
-S --save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个
虚拟服务器中增加一台新的真实服务器
-e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list 显示内核虚拟服务器表
其他的选项:-t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or
[real-server-ip:port]
-u --udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or
[real-server-ip:port]
-f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-s --scheduler scheduler 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,-p
–persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同
一台真实的服务器处理。timeout 的默认值为300 秒。
-M --netmask netmask persistent granularity mask
-r --real-server server-address 真实的服务器[Real-Server:port]
-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i --ipip 指定LVS 的工作模式为隧道模式
-m --masquerading 指定LVS 的工作模式为NAT 模式
-w --weight weight 真实服务器的权值
–mcast-interface interface 指定组播的同步接口
-c --connection 显示LVS 目前的连接如:ipvsadm -L -c
##################################
VS-NAT 模式
内容服务器的容量10~20
使用保留地址的LAN
双向重写
安装ipvsadm 软件
内核做个连接
ln -s /usr/src/kernels/2.6.18-53.e15-i686/ /usr/src/linux
安装软件
查看ipvsadm 版本
ipvsadm --version
建立脚本/etc/rc.d/lvs
echo “1” > /proc/sys/net/ipv4/ip_forward
#清除ipvsadm 一系列规则
ipvsadm -C
ipvsadm -A -t 外网IP:端口-s rr
ipvsadm -a -t 外网IP:端口-r 内网1 服务器IP:端口-m -w 1
ipvsadm -a -t 外网IP:端口-r 内网2 服务器IP:端口-m -w 1
修改内网服务器ip 和网关,开启httpd,建立不同页面测试
缺点不能排除宕机的web 服务器,可使用LVS+Keepalived 组合
##################################
heartbeat 心跳检测(双机热备)
安装heartbeat 的rpm 包
需要先装heartbeat-pils 和heartbeat-stonith 两个包
主节点的配置
安装完解压配置文件
rpm -q heartbeat -d
cd /etc/ha.d
cp /usr/share/doc/heartbeat-2.1.3/ha.cf .
cp /usr/share/doc/heartbeat-2.1.3/authkeys .
cp /usr/share/doc/heartbeat-2.1.3/haresources .
查看计算机名,记录下来
uname -n
vi ha.cf
打开日志记录文件
logfile /var/log/ha-log
打开心跳检测
keepalive 2
死亡时间
deadtime 30
warntime 10
initdead 120
用什么协议端口(udp)
udpport 694
使用哪个网卡作为心跳检测
bcast eth1
备用的IP
ucast eth1 192.168.1.20
主节点服务器
node 主节点计算机名
node 另一个计算机名
ping 外网测试
ping 一个外网的IP
配置验证模式
vi authkeys
打开
auth1
1 crc
配置虚拟服务
vi haresources
加上一条名称和IP
计算机名IP httpd
sev1.example.com 222.90.88.88 httpd
hosts 文件要配置上两个机器的机器名和IP
vi /etc/hosts
222.90.88.10 sev1.example.com sev2
192.168.1.10 sev1
222.90.88.20 sev1.example.com sev2
192.168.1.20 sev1
chmod 600 authkeys
service heartbeat start
在配置备用节点
直接拷贝主节点的文件修改
安装完进入安装目录
cd /etc/ha.d
用sftp 登陆主机
sftp 222.90.88.10
cd /etc/ha.d
get ha.cf
get authkeys
get hare*
bye
只需要修改ha.cf 文件
vi ha.cf
ucast eth1 192.168.1.10
启动备用节点
service heartbeat start
测试
主节点和负节点建立不同index 页面
主节点虚拟出外网ip eth0:0
停掉主节点任务
重新访问
启动后在访问
##################################
DR 直接路由模式
同一网段的LAN
内容服务器的容量20 以上
降低LVF 的负载
VIP 服务器的配置脚本
vi /etc/init.d/vip.sh
ifconfig eth0:0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add -host 222.90.88.88 dev eth0:0
ipvsadm -C
ipvsadm -A -t 222.90.88.88:80 -s rr
ipvsadm -a -t 222.90.88.88:80 -r 222.90.88.10 -g
ipvsadm -a -t 222.90.88.88:80 -r 222.90.88.20 -g
ipvsadm
chmod 777 /etc/init.d/vip.sh
/etc/init.d/vip.sh
服务器配置脚本
vi /etc/init.d/lvs.sh
ifconfig lo:0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add -host 222.90.88.88 dev lo:0
echo “1” > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo “2” > /proc/sys/net/ipv4/conf/lo/arp_announce
echo “1” > /proc/sys/net/ipv4/conf/all/arp_ignore
echo “2” > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
chmod 777 /etc/init.d/lvs.sh
/etc/init.d/lvs.sh
第二台服务器
sftp 222.90.88.10
get /etc/init.d/lvs.sh
bye
mv lvs.sh /etc/init.d/
/etc/init.d/lvs.sh
测试两个服务器测试页面写入不同内容
分别启动httpd
真是IP 可以分别访问不同服务器,访问虚拟IP88,则互相伦叫
##################################
IP 隧道模式
WAN(或LAN 也可)
内容服务器的容量能到100
vip-server
vi /etc/init.d/vip.sh
ifconfig tunl0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add -host 222.90.88.88 dev tunl0
ipvsadm -C
ipvsadm -A -t 222.90.88.88:80 -s rr
ipvsadm -a -t 222.90.88.88 :80 -r 222.90.88.10 -i
ipvsadm -a -t 222.90.88.88 :80 -r 222.90.88.20 -i
ipvsadm
chmod -R 777 /etc/init.d/vip.sh
/etc/init.d/vip.sh
1web 服务器
ifconfig runl0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add -host 222.90.88.88 dev tunl0
echo “1” > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo “2” > /proc/sys/net/ipv4/conf/tunl0/arp_annaunce
echo “1” > /proc/sys/net/ipv4/conf/all/arp_ignore
echo “2” > /proc/sys/net/ipv4/conf/all/arp_annaunce
sysctl -p
chmod 777 /etc/init.d/lvs.sh
/etc/init.d/lvs.sh
2web 服务器
sftp 222.90.88.10
get /etc/init.d/lvs.sh
bye
mv lvs.sh /etc/init.d/
/etc/init.d/lvs.sh
测试两个服务器测试页面写入不同内容
分别启动httpd
真是IP 可以分别访问不同服务器,访问虚拟IP88,则互相伦叫
##################################
sendmail 邮件服务器
配置DNS 服务器为mail 服务器IP 解析
在配置文件中添加
IN MX 5 mail.
mail IN A 192.168.1.209
重启服务service named restart
测试
ping mail.xuesong.com
nslookup mail.xuesong.com
mail 服务器上设置DNS 服务器
vi /etc/resolv.conf
安装软件
sendmail-8.13.8-8.el5.i386.rpm
sendmail-cf-8.13.8-8.el5.i386.rpm
sendmail-doc-8.13.8-8.el5.i386.rpm
yum install dovecot
m4
sendmail 配置文件目录:/etc/mail
vi local-host-names
添加xuesong.com
vi sendmai.mc
去掉前面两个dnl
dnl TRUST_AUTH_MECH(‘EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
dnl define(‘confAUTH_MECHANISMS’, ‘EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
LOGIN PLAIN’)dnl
修改IP
DAEMON_OPTIONS(‘Port=smtp,Addr=192.168.1.209, Name=MTA’)dnl
生成sendmail 配置文件sendmail.cf
m4 sendmail.mc > sendmail.cf
查看启动级别
chkconfig --list |grep sas
开启启动级别3
chkconfig --level 3 saslauthd on
makemap hash access.db < access
vi /etc/dovecot.conf
打开下面一句话
protocols = imap imaps pop3 pop3s
service sendmail restart
service dovecot restart
group mail
useradd -g mail -M -s /sbin/nologin 用户名
##################################
JDK 安装
rpm -qa|grep jdk
确认gcj 的版本号
rpm -qa | grep gcj
卸载gcj
yum -y remove java-1.4.2-gcj-compat
从SUN 下载jdk-1_5_0_14-linux-i586-rpm.bin 或jdk-1_5_0_14-linux-i586.bin
mkdir /usr/java
cd /usr/java
1-9 ↩︎
1-9 ↩︎