- 浏览: 62395 次
文章分类
最新评论
架设某大型网站服务器全部详细过程(郁闷少年)
郁闷少年架设某大型网站服务器之全部过程
*版权所有
所有:郁闷少年&&二娃家园
网站:http://www.mingfor.com
发布:mingfu
联系:msn:linux@mingfor.com
日期:2006-04-04
首发:2006-04-0400:00:00
修改:2006-04-04
欢迎转载,
本程序为GPL授权,任何人皆可传播本文档.
但请勿直接用于商业用途,否则将追究其相关责任.
*网站服务器
主要任务:
根据开发设计需求架设大型的网站服务器
主要软件:
apache+jboss+oracle
简称:LAJO
apache+php+mysql
简称:LAMP
proftpd+mysql
简称:LPM
ssh+expect
iptables
bind
mail
具体要求:
海量用户访问
海量用户存储
(国内外互通)
南北互通.
需求分析:
1.保证高要求高质量高性能,需要选择系*nix操作平台(这里选择as4.3);
2.保证高访问量高数据处理,需要选数商业数据库(这里选择oracle9.2.0.4);
3.解决南北互通(包括国内外互通),需要架设基于bind-view功能的智能DNS服务器.
4.使用流行的B/S,C/S程序架构,需要选择了JBOSS服务器.
5.更好地处理静态页面效果,需要选择了Apache服务器.
6.根据程序注册用户与上传要求,需要架设ftp服务器.
7.时时自动化系统监控,需要架设LAPM服务器.(这里使用软件cacti).
8.公司与客户交流,需要架设邮件服务器.(这里使用postfix+extmail).
9.自动化文件数据处理与安全设置,需expect+ssh+iptables结合shell脚本.
10.海量,需要集群负载均衡与配备存储设备.
具体流程:
1.硬件采购.
这里略.
2.操作系统安装
安装redhatas4.3
系统空间划分(略)
安装开发环境,DNS,LAMP环境所需软件包.
并确认以下包已安装:
compat-db
compat-gcc
compat-gcc-32
compat-oracle-rhel4
compat-libcwait
compat-libgcc
compat-libstdc++-296
compat-libstdc++-33
gcc
gcc-c++
gnome-libs
gnome-libs-devel
libaio-devel
libaio
make
openmotif21
xorg-x11-deprecated-libs-devel
xorg-x11-deprecated-libs
sysstatdisk4
openmotif21disk3
libaiodisk3
libaio-develdisk3
freetype-develdisk3
fontconfig-develdisk3
xorg-x11-devel-disk3
xorg-x11-deprecated-libs-devel-disk3
glib-develdisk4
ORBit-develdisk4
gtk+-develdisk4
alsa-lib-develdisk3
audiofile-develdisk3
esound-devel-disk3
libjpeg-devel-disk3
libtiff-devel-disk3
libungif-devel-disk3
imlib-develdisk4
gnome-libs-develdisk4
expectdisk4
注意:我遇到的一个问题:全新的dell服务器1.5T,raid5,重没有安装过任何系统,硬盘也没有分区,直接用as4.3安装盘安装提示:内存错误,蓝屏,而安装失败。用了好几种linux系统盘(包括windows安装盘)都如此,(手里没有硬盘格式分区工具,没有测试是否可以硬盘分区。)官方发行版说不支持超过2G内存,于是安装系统时先卸下2G内存,待安装完毕在请求支持超过2G内存的内核安装后就可以支持4G内存了,倘如日后全新安装系统不使用hugemem而使用默认的smp内核也能识别4G内存,更不会出现蓝屏问题。关于之中奥妙,还没有仔细研究过。。。。
#rpm–ivhkernel-elhugemem….rpm
修改启动文件grub.conf确保新安装的内核为优先启动.
#cat/etc/grub.conf
////////////////////////////////////////////////////////////////////
#grub.confgeneratedbyanaconda
#
#Notethatyoudonothavetorerungrubaftermakingchangestothisfile
#NOTICE:Youhavea/bootpartition.Thismeansthat
#allkernelandinitrdpathsarerelativeto/boot/,eg.
#root(hd0,1)
#kernel/vmlinuz-versionroroot=/dev/sda8
#initrd/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
titleRedHatEnterpriseLinuxAS(2.6.9-22.ELhugemem)
root(hd0,1)
kernel/vmlinuz-2.6.9-22.ELhugememroroot=LABEL=/rhgbquiet
initrd/initrd-2.6.9-22.ELhugemem.img
titleRedHatEnterpriseLinuxAS(2.6.9-22.ELsmp)
root(hd0,1)
kernel/vmlinuz-2.6.9-22.ELsmproroot=LABEL=/rhgbquiet
initrd/initrd-2.6.9-22.ELsmp.img
titleRedHatEnterpriseLinuxAS-up(2.6.9-22.EL)
root(hd0,1)
kernel/vmlinuz-2.6.9-22.ELroroot=LABEL=/rhgbquiet
initrd/initrd-2.6.9-22.EL.img
////////////////////////////////////////////////////////////////////////////////////////////////
如果hiddenmenu
下面的内容顺序不对,请修改default=x(x对应ELhugemem项)
重启并加载另外2G内存.
这样让系统支持4G内存的正常运行.
2)系统安装完毕请作连接:#ln–s/tmp/temp
3.配置DNS
由于要南北互通,开源得只有使用view的ACL访问控制列表文件来实现多线路的自动导向.
(当然也有其他的商业解决办法,比如智能路由与交换机的设置来实现,我们这里使用开源的而且容易实现与调整的解决软件bind)
关于view的ACL获得办法有很多途径,这里不一一商讨.
具体架设参考如下
默认安装的bind为9系列的,已经支持view,配置分为三步骤分别如下所示.
(1)修改named.conf
(2)创建与配置hosts
(3)域名解析
#vi/etc/named.conf
////////////////////////文件内容开始///////////////////
//
//named.confforRedHatcaching-nameserver
//
options{
directory"/var/named";
dump-file"/var/named/data/cache_dump.db";
statistics-file"/var/named/data/named_stats.txt";
/*
*Ifthereisafirewallbetweenyouandnameserversyouwant
*totalkto,youmightneedtouncommentthequery-source
*directivebelow.PreviousversionsofBINDalwaysasked
*questionsusingport53,butBIND8.1usesanunprivileged
*portbydefault.
*/
//query-sourceaddress*port53;
};
//
//acachingonlynameserverconfig
//
controls{
inet127.0.0.1allow{localhost;}keys{rndckey;};
};
include"/etc/rndc.key";
//modifybymingfu060404
acl"CNC"{
58.16.0.0/16;
58.17.0.0/17;
58.17.128.0/17;
58.18.0.0/16;
58.19.0.0/16;
58.20.0.0/16;
58.21.0.0/16;
58.22.0.0/15;
58.240.0.0/15;
58.242.0.0/15;
58.244.0.0/15;
58.246.0.0/15;
58.248.0.0/13;
60.0.0.0/13;
60.8.0.0/15;
60.10.0.0/16;
60.11.0.0/16;
60.12.0.0/16;
60.13.0.0/18;
60.13.128.0/17;
60.14.0.0/15;
60.16.0.0/13;
60.24.0.0/14;
60.30.0.0/16;
60.31.0.0/16;
60.208.0.0/13;
60.216.0.0/15;
60.218.0.0/15;
60.220.0.0/14;
61.48.0.0/13;
61.133.0.0/17;
61.134.96.0/19;
61.134.128.0/17;
61.135.0.0/16;
61.137.128.0/17;
61.138.0.0/17;
61.138.128.0/18;
61.139.128.0/18;
61.148.0.0/15;
61.156.0.0/16;
61.159.0.0/18;
61.161.0.0/18;
61.161.128.0/17;
61.162.0.0/16;
61.163.0.0/16;
61.167.0.0/16;
61.168.0.0/16;
61.176.0.0/16;
61.179.0.0/16;
61.181.0.0/16;
61.182.0.0/16;
61.189.0.0/17;
125.32.0.0/16;
125.40.0.0/13;
202.96.0.0/18;
202.96.64.0/21;
202.96.72.0/21;
202.97.128.0/18;
202.97.224.0/21;
202.97.240.0/20;
202.98.0.0/21;
202.98.8.0/21;
202.99.64.0/19;
202.99.96.0/21;
202.99.128.0/19;
202.99.160.0/21;
202.99.168.0/21;
202.99.176.0/20;
202.99.208.0/20;
202.99.224.0/21;
202.99.232.0/21;
202.99.240.0/20;
202.102.128.0/21;
202.102.224.0/21;
202.102.232.0/21;
202.106.0.0/16;
202.107.0.0/17;
202.108.0.0/16;
202.110.0.0/17;
202.111.128.0/18;
203.93.8.0/24;
203.93.192.0/18;
210.13.128.0/17;
210.14.160.0/19;
210.14.192.0/19;
210.15.32.0/19;
210.15.96.0/19;
210.15.128.0/18;
210.21.0.0/16;
210.52.128.0/17;
210.53.0.0/17;
210.53.128.0/17;
210.74.96.0/19;
210.74.128.0/19;
210.82.0.0/15;
218.8.0.0/14;
218.12.0.0/16;
218.21.128.0/17;
218.24.0.0/14;
218.56.0.0/14;
218.60.0.0/15;
218.67.128.0/17;
218.68.0.0/15;
218.104.0.0/14;
219.154.0.0/15;
219.156.0.0/15;
219.158.0.0/17;
219.158.128.0/17;
219.159.0.0/18;
220.252.0.0/16;
221.0.0.0/15;
221.2.0.0/16;
221.3.0.0/17;
221.3.128.0/17;
221.4.0.0/16;
221.5.0.0/17;
221.5.128.0/17;
221.6.0.0/16;
221.7.0.0/19;
221.7.32.0/19;
221.7.64.0/19;
221.7.96.0/19;
221.8.0.0/15;
221.10.0.0/16;
221.11.0.0/17;
221.11.128.0/18;
221.11.192.0/19;
221.12.0.0/17;
221.12.128.0/18;
221.13.0.0/18;
221.13.64.0/19;
221.13.96.0/19;
221.13.128.0/17;
221.14.0.0/15;
221.192.0.0/15;
221.194.0.0/16;
221.195.0.0/16;
221.196.0.0/15;
221.198.0.0/16;
221.199.0.0/19;
221.199.32.0/20;
221.199.128.0/18;
221.199.192.0/20;
221.200.0.0/14;
221.204.0.0/15;
221.206.0.0/16;
221.207.0.0/18;
221.207.64.0/18;
221.207.128.0/17;
221.208.0.0/14;
221.212.0.0/16;
221.213.0.0/16;
221.216.0.0/13;
222.128.0.0/14;
222.132.0.0/14;
222.136.0.0/13;
222.160.0.0/15;
222.162.0.0/16;
222.163.0.0/19;
222.163.32.0/19;
222.163.64.0/18;
222.163.128.0/17;
};
view"view_cnc"{
match-clients{CNC;};
zone"."{
typehint;
file"named.ca";
};
zone"0.0.127.IN-ADDR.ARPA"{
typemaster;
file"localhost.rev";
};
include"master/cnc.def";
};
view"view_any"{
match-clients{any;};
zone"."{
typehint;
file"named.ca";
};
zone"0.0.127.IN-ADDR.ARPA"{
typemaster;
file"localhost.rev";
};
include"master/telecom.def";
};
////////////////////////文件内容结束///////////////////
#mkdir/var/named/master
#mkdir/var/named/master/cnc
#mkdir/var/named/master/telecom
#touch/var/named/master/cnc.def
#touch/var/named/master/telecom.def
说明:关于如何进行域名解析配置:
@Zone区文件配置:
Master/Cnc.def网通
Master/Telecom.def电信
*.def文件里面为解析域名的zone配置区设置部分.
@Hosts区文件配置
Master/Cnc网通
Master/Telecom电信
下面以解析www.xxxx.com为例
#vi/var/named/master/cnc.def
////////////////////////文件内容开始///////////////////
zone"xxxx.com"{
typemaster;
file"master/cnc/xxxx.com";
};
////////////////////////文件内容结束///////////////////
#vi/var/named/master/telecom.def
////////////////////////文件内容开始///////////////////
zone"xxxx.com"{
typemaster;
file"master/telecom/xxxx.com";
};
////////////////////////文件内容结束///////////////////
#vi/var/named/master/cnc/xxxx.com
////////////////////////文件内容开始///////////////////
$TTL3600
$ORIGINxxxx.com.
@INSOAns.xxxx.com.root.ns.xxxx.com.(
2005121013;Serial
3600;Refresh(seconds)
900;Retry(seconds)
68400;Expire(seconds)
15);MinimumTTLforZone(seconds)
;
@INNSns.xxxx.com.
@INMXxxxx.com.
;;ipforcnc
@INAx.x.x.x(网通IP)
wwwINAx.x.x.x(网通IP)
////////////////////////文件内容结束///////////////////
#vi/var/named/master/telecom/xxxx.com
////////////////////////文件内容开始///////////////////
$TTL3600
$ORIGINxxxx.com.
@INSOAns.xxxx.com.root.ns.xxxx.com.(
2005121013;Serial
3600;Refresh(seconds)
900;Retry(seconds)
68400;Expire(seconds)
15);MinimumTTLforZone(seconds)
;
@INNSns.xxxx.com.
@INMXxxxx.com.
;;ipfortelecom
@INAx.x.x.x(电信IP)
wwwINAx.x.x.x(电信IP)
////////////////////////文件内容结束///////////////////
客服端测试:
nslookup--type=axxxx.comx.x.x.x(网通任意一个DNS服务器IP)
nslookup--type=axxxx.comx.x.x.x(电信任意一个DNS服务器IP)
看到的为配置文件中对应ip则解析配置正常.
注意:
上面的xxxxx.com需要修改DNS解析服务器为
ns.xxxxx.com
对应IP为:网通IP.
备注:
1).在这里做了网通与非网通的访问控制,用于实现南北互通,如要国内外互通,需要在列出一个相应的访问控制列表ACL就可以实现了.
2).关于使用tar包编译安装请参看:
http://www.mingfor.com/forum/showthread.php?tid=94
4.配置LAJO
软件:
Apache2.0.58
JBOSS.4.0.3SP1
Oracle9.2.0.4
Mod-jk1.12
配置:
1)apache+mod-jk
#tarzxvfhttpd-2.0.58.tar.gz
#cdhttpd-2.0.58
#./configure--enable-MODULE=shared--enable-so--with-mpm=worker
#make&&makeinstall
#tarzxvfjakarta-tomcat-connectors-1.2.14.1-src.tar.gz
#cd/home/software/jakarta-tomcat-connectors-1.2.14.1-src/jk/native
#./configure--with-apxs=/usr/local/apache2/bin/apxs
#make
#cp./apache-2.0/mod_jk.so/usr/local/apache2/modules
httpd.conf的修改
该文件的路径位于$APACHE-HOME/conf
上述编译过程中我们选用的worker模式,因此我们将修改worker模块的配置
<IfModuleworker.c>
StartServers4#最初建立进程的数量
ServerLimit24#进程建立的最大数量,硬限制
ThreadLimit128#每一进程能创建线程的最大数量,硬限制,该参数建议#和ThreadsPerChild一致,如果ThreadLimit>ThreadsPerChild的话,会造成不##必要的内存消耗。
MaxClients3072#同时可以得到处理的客户端的最大数量
MinSpareThreads100#所有进程中空闲线程的总数最小数值
MaxSpareThreads200#所有进程中空闲线程的总数最大数值
ThreadsPerChild128#每个子进程可以建立的固定数量的线程
MaxRequestsPerChild0#用于控制服务器建立和结束进程的频率,为0表示没有#限制,但在solarisOS下该值可能会出错,可以设置为1000或2000。根据系统#的并发负载吧。
</IfModule>
同时修改与新增httpd.conf如下内容:
Includeconf/mod_jk2.conf
Userxxxx
Group5dxc
DocumentRoot"/site"
<Directory"/site">
NameVirtualHostIP:80
<VirtualHostIP:80>
ServerAdminfoway@163.com
DocumentRoot/site
ServerNameIP
ErrorLoglogs/ip-error_log
CustomLoglogs/ip-access_logcommon
</VirtualHost>
<VirtualHostIP:82>
ServerAdminfoway@163.com
DocumentRoot/var/www/html
ServerNameadmin.xxxx.com
ErrorLoglogs/ip-error_log
CustomLoglogs/ip-access_logcommon
</VirtualHost>
#vi$APACHE-HOME/conf/mod_jk2.conf
////////////////////////文件内容开始///////////////////
LoadModulejk_modulemodules/mod_jk.so
JkWorkersFileconf/workers2.properties
JkLogFilelogs/mod_jk.log
#Setthejkloglevel[debug/error/info]
JkLogLevelinfo
#Selectthelogformat
JkLogStampFormat"[%a%b%d%H:%M:%S%Y]"
#JkOptionsindicatetosendSSLKEYSIZE,
JkOptions+ForwardKeySize+ForwardURICompat-ForwardDirectories
#JkRequestLogFormatsettherequestformat
JkRequestLogFormat"%w%V%T"
JkMount/*loadbalancer
#apachewillservethestaticpicture.
#以下命令意味着所有的图片与htm,css,js页面将由APACHE解析其它交由jboss处理
JkUnMount/*.jpgloadbalancer
JkUnMount/*.gifloadbalancer
JkUnMount/*.swfloadbalancer
JkUnMount/*.bmploadbalancer
JkUnMount/*.pngloadbalancer
JkUnMount/*.jsloadbalancer
JkUnMount/*.cssloadbalancer
JkUnMount/*.htmloadbalancer
////////////////////////文件内容结束///////////////////
#vi$APACHE-HOME/conf/uriworkermap.properties
////////////////////////文件内容开始///////////////////
/jmx-console=loadbalancer
/jmx-console/*=loadbalancer
/web-console=loadbalancer
/web-console/*=loadbalancer
////////////////////////文件内容结束///////////////////
#vi$APACHE-HOME/conf/uriworkermap.properties
////////////////////////文件内容开始///////////////////
worker.list=loadbalancer,status
worker.node1.port=8009
worker.node1.host=192.168.0.192(请填写服务器的IP)
worker.node1.type=ajp13
worder.node1.lbfactor=1
worker.node1.cachesize=10
worker.node2.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worder.node1.lbfactor=1
worker.node1.cachesize=10
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1
worker.status.type=status
////////////////////////文件内容结束///////////////////
注意:如果需要负载:修改
worker.node2.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worder.node1.lbfactor=1
worker.node1.cachesize=10
为:
worker.node2.port=8009
worker.node2.host=IP(进行负载的IP地址)
worker.node2.type=ajp13
worder.node2.lbfactor=1
worker.node2.cachesize=10
备注:如果要进行更多的负载….
修改:
worker.noden.port=8009
worker.noden.host=IP(进行负载的IP地址)
worker.noden.type=ajp13
worder.noden.lbfactor=1
worker.noden.cachesize=10
worker.loadbalancer.balance_workers=node1,node2,noden
2)jboss
jboss安装.
Jboss4.0.3sp1解压到/site/jboss目录下….
…./deploy/jbossweb-tomcat55.sar/server.xml中,找8080,修改为8088
Jdk环境变量设定:
Jdk安装:
#chmod755jdk-1_5_0_06-linux-i586.bin
#./jdk-1_5_0_06-linux-i586.bin
Java参数设置:
#ln–s/usr/local/jdk1.5.0_06/usr/local/jdk
如果你下载的是rpm包请如下操作
#./jdk-1_5_0_06-linux-i586.rpm.bin
#rpmjdk-1_5_0_06-linux-i586.rpm
#ln–s/usr/jdk1.5.0_06/usr/local/jdk
#vi/etc/profile.d/java.sh
////////////////////////文件内容///////////////////
JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$CATALINA_HOME/bin
exportJAVA_HOMEPATH
////////////////////////文件内容///////////////////
3)apache+jboos服务启动问题
apache+jboss整合配置已完毕.下面是启动这些服务了.
..用户与权限分配
groupadd–g5500xxxx
adduser-u5500-s/bin/false-d/bin/null-c"proftpduser"-gxxxxxxxx
修改/etc/passwd文件中的xxxx用户中的”/bin/false”为”/bin/bash”,以便于以后jboss使用.当然你也可以这样做:
adduser-u5500-s/bin/bash-d/bin/null-c"proftpduser"-gxxxxxxxx
chownxxxx/site/*–R
chgrpxxxx/site/*-R
chmod755/site/*-R
..服务启动
添加如下内容到/etc/rc.local
/usr/local/apache2/bin/apachectlstart
/etc/init.d/jbossstart
#vi/etc/init.d/jboss
////////////////////////文件内容开始///////////////////
#/etc/init.d/jboss
/etc/rc.d/init.d/functions
JBOSS_HOME=/site/jboss
exportJBOSS_HOME
JAVA_HOME=/usr/local/jdk
exportJAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
exportPATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportCLASSPATH
prog="jboss"
start()
{
#InputthejbosServicelogintojboss.log
echo"Jboss4.0.3SP1ServiceStarting........">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
date"+%Y-%m-%d%A%T:JbossServicestart">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
su-xxxx-c$JBOSS_HOME/bin/run.sh&>>/var/log/xxxx/jboss.log
touch/var/log/xxxx/jboss.log
}
#Functionstop,StoptheJbossServiceauto
#whentheLinuxHalt
stop()
{
#InputthejbossServicelogintojboss.log
echo"jbossServiceStopping........">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
date"+%Y-%m-%d%A%T:jbossServiceStop">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
su-xxxx-c“$JBOSS_HOME/bin/shutdown.sh–S”>>/var/log/xxxx/jboss.log
}
case$1in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
status)
status$prog
;;
*)
echo"PleaseInputstart|stop|restart|reload|status"
return1
esac
////////////////////////文件内容结束///////////////////
注意:
请赋予jboos的执行权限:chmod755/etc/init.d/jboss
请注意xxxx用户是没有设置密码的,确保使用xxxx用户是无法登录的,只有root可以切换到该用户环境中去的:#su–xxxx…..
4)oracle安装与启动
创建相关安装目录和环境变量
1,创建user/group;
#groupadddba
#groupaddoinstall
#useraddoracle-goinstall-Gdba
#passwdoracle
2,建立oracle安装文件夹;
#mkdir-p/opt/ora9/product/9.2.0.4
#mkdir/var/opt/oracle
#chmodoracle.dba/var/opt/oracle
#chown-Roracle.dba/opt/ora9
3,配置环境变量;
以root用户登录,设置root用户的环境打开.bash_profile文件,将如下内容加入:
exportORACLE_BASE=/opt/ora9
exportORACLE_HOME=/opt/ora9/product/9.2.0.4
exportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
exportORACLE_OWNER=oracle
exportORACLE_SID=oradb//此处为你的sid
使用Oracle用户登陆:
#su–oracle
$vi.bash_profile
以下是配置文件的内容
#.bash_profile
#Getthealiasesandfunctions
if[-f~/.bashrc];then
.~/.bashrc
fi
#Userspecificenvironmentandstartupprograms
PATH=$PATH:$HOME/bin
exportORACLE_BASE=/opt/ora9
exportORACLE_HOME=/opt/ora9/product/9.2.0.4
exportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
exportORACLE_OWNER=oracle
exportORACLE_SID=oradb
exportORACLE_TERM=xterm
exportLD_ASSUME_KERNEL=2.4.19
exportTHREADS_FLAG=native
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
exportNLS_LANG=”American_america.utf8”
exportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
exportPATH
unsetUSERNAME
4,设置系统参数;
#su–root切换到root用户
a)修改#vi/etc/sysctl.conf,以下是配置文件的内容:
#KernelsysctlconfigurationfileforRedHatLinux
#
#Forbinaryvalues,0isdisabled,1isenabled.Seesysctl(8)and
#sysctl.conf(5)formoredetails.
#ControlsIPpacketforwarding
net.ipv4.ip_forward=0
#Controlssourcerouteverification
net.ipv4.conf.default.rp_filter=1
#ControlstheSystemRequestdebuggingfunctionalityofthekernel
kernel.sysrq=0
#ControlswhethercoredumpswillappendthePIDtothecorefilename.
#Usefulfordebuggingmulti-threadedapplications.
kernel.core_uses_pid=1
kernel.shmmax=536870912
kernel.shmmni=4096
kernel.shmall=2097152
kernel.sem=25032000100128
fs.file-max=65536
net.ipv4.ip_local_port_range=102465000
修改后运行
#sysctl–p
命令使得内核改变立即生效;
注:
一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是2G,则可以设置最大共享内存为1073741824,如上;如物理内存是1G,则可以设置最大共享内存为512*1024*1024=536870912;以此类推。
建议永久地增加shmmax设置。
sem4个参数依次为SEMMSL(每个用户拥有信号量最大数);SEMMNS(系统信号量最大数);SEMOPM(每次semopm系统调用操作数);SEMMNI(系统辛苦量集数最大数).Shmmax最大共享内存,官方文档建议是内存的1/2,Shmmni最小共享内存4096KB.Shmall所有内存大小。
b)设置oracle对文件的要求:
编辑文件:#vi/etc/security/limits.conf加入以下语句:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
也可以写成:
* soft nofile 65536
* hard nofile 65536
* soft nproc 16384
* hard nproc 16384
c)gcc降级
#mv/usr/bin/gcc/usr/bin/gcc34
#ln–s/usr/bin/gcc32/usr/bin/gcc
#mv/usr/bin/g++/usr/bin/g++34
#ln–s/usr/bin/g++32/usr/bin/g++
5,安装oracle补丁
#cd/opt
#lscompat*.rpm
compat-libcwait-2.0-2.i386.rpmcompat-oracle-rhel4-1.0-5.i386.rpm
#rpm-Uvhcompat*.rpm
Preparing...###########################################[100%]
1:compat-libcwait-2.0-2.i386.rpm#####################################[50%]
2:compat-oracle-rhel4-1.0-5.i386.rpm####################################[100%]
开始安装Oracle9i
1,解压下载的安装文件:
#zcatship_9204_linux_disk1.cpio.gz|cpio–idmv&&zcatship_9204_linux_disk2.cpio.gz|cpio–idmv&&zcatship_9204_linux_disk3.cpio.gz|cpio–idmv
解包和解压过程中,自动创建了3个包含安装文件的目录:
Disk1
Disk2
Disk3
.以oracle用户登录系统,进行Oracle的安装(注意请不要在root登录中切换到oracle,是以oracle登录到系统(图形界面)):
$cdDisk1
$./runInstaller过一会儿就会出现Oracle的安装界面
-WelcomeScreen:ClickNext
-InventoryLocation:ClickNext
-UnixGroupName:Use"oinstall"andclickNext
Whenaskedtorun/tmp/orainstRoot.sh,runitbeforeyouclickContinue
-Attheendoftheinstallation,exitrunInstaller.
2.一步一个脚印安装下去就行了!
3,安装完后打补丁:
切换到oracle:#su–oracle首先安装opatch.
$cd/opt
$unzipp2617419_210_GENERIC.zip
Archive:p2617419_210_GENERIC.zip
creating:OPatch/
creating:OPatch/docs/
inflating:Opatch/docs/FAQ
......
inflating:README.txt
$exportPATH=$PATH:/opt/OPatch:/sbin
(修改PATH时要要包括解压缩出来的Opatch和sbin目录)
$unzipp3238244_9204_LINUX.zip
$exportORACLE_BASE=/opt/ora9
$exportORACLE_HOME=/opt/ora9/product/9.2.0.4
$cd3238244
$opatchapply
出现success的提示就全部安装成功.
补丁打完后,还要relinked一个.mk文件
$cd$ORACLE_HOME/network/lib
$make-fins_oemagent.mkinstall
之后就可以启动Agent服务了.
4,最后执行$dbca建oracle数据库
注意:在SID处指定为oradb(与ORACLE_SID=oradb)中的值一致.
点击OK,然后退出即可,正常登陆并启动数据库的操作。
$lsnrctlstart
$sqlplus/nolog
SQL*Plus:Release9.2.0.4.0-ProductiononSatMar1222:58:532005
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
SQL>connect/assysdba
Connected.
SQL>shutdownimmediate关闭数据库
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup;启动数据库
ORACLEinstancestarted.
TotalSystemGlobalArea236000356bytes
FixedSize451684bytes
VariableSize201326592bytes
DatabaseBuffers33554432bytes
RedoBuffers667648bytes
Databasemounted.
Databaseopened.
5,oracle服务启动
以root身份进入,编写以下脚本:
vi/etc/init.d/oracle
////////////内容//////////////////
#!/bin/bash
#startandstoptheoracleinstance
#chkconfig–level5--addora9i
#chkconfig:3459119
#description:startstheoraclelistenerandinstance
exportORACLE_HOME="/opt/ora9/product/9.2.0.4"
exportPATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
exportORACLE_OWNER="oracle"
exportORACLE_SID=oradb
if[!-f$ORACLE_HOME/bin/dbstart-o!-d$ORACLE_HOME]
then
echo"oraclestartup:cannotstart"
exit1
fi
case"$1"in
start)
#startupthelistenerandinstance
echo-n"oraclestartup:"
su-$ORACLE_OWNER-c"$ORACLE_HOME/bin/lsnrctlstart"
su-$ORACLE_OWNER-c$ORACLE_HOME/bin/dbstart
touch/var/lock/subsys/oracle
echo"finished"
;;
stop)
#stoplistener,apacheanddatabase
echo-n"oracleshutdown:"
su-$ORACLE_OWNER-c"$ORACLE_HOME/bin/lsnrctlstop"
su-$ORACLE_OWNER-c$ORACLE_HOME/bin/dbshut
rm-f/var/lock/subsys/oracle
echo"finished"
;;
reload|restart)
$0stop
$0start
;;
*)
echo"Usage:ora9i[start|stop|reload|restart]"
exit1
esac
exit0
////////////内容//////////////////
给予执行权限,以root身份运行/etc/rc.d/init.d/oraclestart|stop来管理oracle的启动和停止了。如果要将这个脚本加入到系统中使其可开机运行(不过官方是不建议开机自动运行的,我本人也不建议这样做,你确实需要可以这么做),那么要运行以下命令:chkconfig--level35--addoracle
或者以root用户执行如下命令:
#chmoda+x/etc/rc.d/init.d/oracle
#cd/etc/rc.d/rc5.d
#ln-s/etc/rc.d/init.d/oracleS99ora9i
#cd/etc/rc.d/rc0.d
#ln-s/etc/rc.d/init.d/oracleK99ora9i
也可如下自启动oracle9i!
在/etc/rc.d/rc.local中加入如下:
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctlstart"
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/dbstartstart"
注意:如果启动不理想,请编写shellscripts:
方法:以我个人习惯为例;;;;;;;;;;
#mkdir/usr/local/syscmf
#vi/usr/local/syscmf/oracle.sh
////////////////////////文件内容开始///////////////////
#!/bin/sh
#modifybymingfu060404
#oraclerunscripts
#runuserfororacle
lsnrctlstart
expect/usr/local/syscmf/oracle.exp
////////////////////////文件内容结束///////////////////
#vi/usr/local/syscmf/oracle.exp
////////////////////////文件内容开始///////////////////
#!/usr/local/bin/expect
#modifybymingfu060404
#oraclerunscripts
settimeout120
spawnsqlplus//nolog
expect"SQL/>"
send"conn//assysdba/r"
expect"SQL/>"
send"startup/r"
expect"SQL/>"
send"exit/r"
exit
////////////////////////文件内容结束///////////////////
#chownoracle/usr/local/syscmf/*
#chgrporacle/usr/local/syscmf./*
#chmod755/usr/local/syscmf/*
在/etc/rc.local中新增如下内容:
su–oracle/usr/local/syscmf/oracle.sh
删除原来的:
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctlstart"
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/dbstartstart"
6,关于数据库删除重新安装的问题:
把ORACLE安装目录删除及/etc/ora*.*删除就行了
#rm–f/etc/ora*.*
7,关于在LINUX中运行管理软件$oemapp
#su–oracle
$oemappconsole
8,中文显示不正常解决办法
Oracle目前缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行alterdatabasecharactersetZHS16GBK;来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改sys用户下的PROPS$表的方法,也会给字符集的变更留下很多潜在的问题.
linux下进行如下的操作来修改字符集:
sqlplus/nolog
sql>conn/assysdba
sql>shutdownimmediate
sql>startupmount
sql>altersystemenablerestrictedsession;
sql>altersystemsetJOB_QUEUE_PROCESSES=0;
sql>altersystemsetAQ_TM_PROCESSES=0;
sql>alterdatabaseopen;
sql>alterdatabasecharactersetinternal_useZHS16GBK;
sql>shutdownimmediate
sql>startup
这样字符集的修改就完成了(如果你在安装时选择了中文字符集,这里就不用修改了)
LAJO服务环境配置完毕.
5.配置LAMP
系统自带安装http+php+mysql软件包,进行配置如下:
Apache配置
修改/etc/httpd/conf/httpd.conf内容如下:
Listen82
ServerName127.0.0.1:82
DocumentRoot"/var/www/html"
<Directory"/var/www/html">
注意:系统已经有两个httpd服务进程.
用户分别是:xxxxapache
请确保
/usr/local/apache2/bin/apachectlstart
/etc/init.d/httpdstart
此两个服务自启动.
Mysql设置
Mysql>createftpdb;
Mysql>grantallprivilegesonftpdb.*toftpuser@localhostidentifiedby“xxxx”;
Mysql>grantallprivilegeson*.*toroot@’%’identifiedby“xxxx”;
Mysql>flushprivileges;
Mysql>exit
请确保
/etc/init.d/mysqldstart
此服务自启动.
LAMP服务环境配置完毕.
7.配置FTP
配合工程实施与建立ftp帐号相关联,方便维护与管理,我这里选择了Proftpd与数据库结合的方式来实现的.
创建Ftpdb结构:
Mysql>useftpdb;
Mysql>CREATETABLE`ftpgroup`(
`groupname`varchar(16)NOTNULLdefault'',
`gid`smallint(6)NOTNULLdefault'5500',
`members`varchar(16)NOTNULLdefault'',
KEY`groupname`(`groupname`)
);
Mysql>CREATETABLE`ftpquotalimits`(
`name`varchar(30)defaultNULL,
`quota_type`enum('user','group','class','all')NOTNULLdefault'user',
`per_session`enum('false','true')NOTNULLdefault'false',
`limit_type`enum('soft','hard')NOTNULLdefault'soft',
`bytes_in_avail`floatNOTNULLdefault'0',
`bytes_out_avail`floatNOTNULLdefault'0',
`bytes_xfer_avail`floatNOTNULLdefault'0',
`files_in_avail`int(10)unsignedNOTNULLdefault'0',
`files_out_avail`int(10)unsignedNOTNULLdefault'0',
`files_xfer_avail`int(10)unsignedNOTNULLdefault'0'
);
Mysql>CREATETABLE`ftpquotatallies`(
`name`varchar(30)NOTNULLdefault'',
`quota_type`enum('user','group','class','all')NOTNULLdefault'user',
`bytes_in_used`floatNOTNULLdefault'0',
`bytes_out_used`floatNOTNULLdefault'0',
`bytes_xfer_used`floatNOTNULLdefault'0',
`files_in_used`int(10)unsignedNOTNULLdefault'0',
`files_out_used`int(10)unsignedNOTNULLdefault'0',
`files_xfer_used`int(10)unsignedNOTNULLdefault'0'
);
Mysql>CREATETABLE`ftpuser`(
`id`int(10)unsignedNOTNULLauto_increment,
`userid`varchar(32)NOTNULLdefault'',
`passwd`varchar(32)NOTNULLdefault'',
`uid`smallint(6)NOTNULLdefault'5500',
`gid`smallint(6)NOTNULLdefault'5500',
`homedir`varchar(255)NOTNULLdefault'',
`shell`varchar(16)NOTNULLdefault'/sbin/nologin',
`count`int(11)NOTNULLdefault'0',
`accessed`datetimeNOTNULLdefault'0000-00-0000:00:00',
`modified`datetimeNOTNULLdefault'0000-00-0000:00:00',
PRIMARYKEY(`id`)
);
Mysql>INSERTINTO`ftpgroup`(`groupname`,`gid`,`members`)VALUES("5dxc","5500","xxxx");
Mysql>INSERTINTO`ftpquotalimits`(`name`,`quota_type`,`per_session`,`limit_type`,`bytes_in_avail`,`bytes_out_avail`,`bytes_xfer_avail`,`files_in_avail`,`files_out_avail`,`files_xfer_avail`)VALUES("test","user","false","soft","1.024e+06","0","0","0","0","0");
Mysql>INSERTINTO`ftpquotatallies`(`name`,`quota_type`,`bytes_in_used`,`bytes_out_used`,`bytes_xfer_used`,`files_in_used`,`files_out_used`,`files_xfer_used`)VALUES("test","user","809781","0","809781","0","0","0");
Mysql>INSERTINTO`ftpuser`(`id`,`userid`,`passwd`,`uid`,`gid`,`homedir`,`shell`,`count`,`accessed`,`modified`)VALUES("1","test","test","5500","5500","/site","/sbin/nologin","0","0000-00-0000:00:00","0000-00-0000:00:00");
配置proftp:
#tarxzvfproftpd-1.3.0rc5.tar.gz
#cdproftpd-1.3.0rc5
#./configure--prefix=/usr/local/proftpd--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql:mod_ratio--with-includes=/usr/include/mysql--with-libraries=/usr/lib/mysql
#make&&makeinstall
#mv/etc/local/proftpd/etc/proftpd.conf/etc/local/proftpd/etc/proftpd.confbak
#vi/etc/local/proftpd/etc/proftpd.conf
////////////////////////文件内容///////////////////
#ThisisabasicProFTPDconfigurationfile(renameitto
#'proftpd.conf'foractualuse.Itestablishesasingleserver
#andasingleanonymouslogin.Itassumesthatyouhaveauser/group
#"nobody"and"ftp"fornormaloperationandanon.
#ServerName "ProFTPDDefaultInstallation"
ServerName "Mingfu'sftp"
ServerType standalone
DefaultServer on
#Port21isthestandardFTPport.
Port 21
#Umask022isagoodstandardumasktopreventnewdirsandfiles
#frombeinggroupandworldwritable.
Umask 022
#TopreventDoSattacks,setthemaximumnumberofchildprocesses
#to30.Ifyouneedtoallowmorethan30concurrentconnections
#atonce,simplyincreasethisvalue.NotethatthisONLYworks
#instandalonemode,ininetdmodeyoushoulduseaninetdserver
#thatallowsyoutolimitmaximumnumberofprocessesperservice
#(suchasxinetd).
MaxInstances 100
MaxLoginAttempts 3
#Settheuserandgroupunderwhichtheserverwillrun.
User nobody
Group nobody
#TocauseeveryFTPusertobe"jailed"(chrooted)intotheirhome
#directory,uncommentthisline.
#DefaultRoot~
DefaultRoot~
#puttheproftpdlogfilesin/var/log/ftp.syslog
#SystemLog/var/log/ftp.syslog
SystemLog/var/log/xxxx/ftp.syslog
#TransferLoglogfiles
TransferLog/var/log/xxxx/ftp.transferlog
MaxHostsPerUser1"Sorry,youmaynotconnectmorethanonetime1."
MaxClientsPerUser13"Onlyonesuchuseratatime2."
MaxClientsPerHost20"Sorry,youmaynotconnectmorethanonetime3."
#setuptheRestart
AllowRetrieveRestarton
RootLoginoff
RequireValidShelloff
TimeoutStalled600
MaxClients2000
AllowForeignAddresson
AllowStoreRestarton
ServerIdentoff
DefaultRoot~xxxx
#Slowlogins
UseReverseDNSoff
IdentLookupsoff
#IdentLookupsandtcpwrappers***
#Normally,wewantfilestobeoverwriteable.
AllowOverwrite on
TimeoutIdle600
SQLAuthTypesBackendPlaintext
SQLAuthenticateusers*groups*
#databasename@hostdatabase_useruser_password
#SQLConnectInfoftpdb@localhostproftpdpassword
SQLConnectInfoftpdb@localhostftpuserxxxx
SQLUserInfoftpuseruseridpasswduidgidhomedirshell
SQLGroupInfoftpgroupgroupnamegidmembers
SQLHomedirOnDemandon
#Updatecounteverytimeuserlogsin
SQLLogPASSupdatecount
SQLNamedQueryupdatecountUPDATE"count=count+1,accessed=now()WHEREuserid='%u'"ftpuser
#Updatemodifiedeverytimeuseruploadsordeletesafile
SQLLogSTOR,DELEmodified
SQLNamedQuerymodifiedUPDATE"modified=now()WHEREuserid='%u'"ftpuser
QuotaEngineon
QuotaDirectoryTallyon
QuotaDisplayUnitskb
QuotaShowQuotason
QuotaLog"/var/log/quota"
SQLNamedQueryget-quota-limitSELECT"name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_availFROMftpquotalimitsWHEREname='%{0}'ANDquota_type='%{1}'"
SQLNamedQueryget-quota-tallySELECT"name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_usedFROMftpquotatalliesWHEREname='%{0}'ANDquota_type='%{1}'"
SQLNamedQueryupdate-quota-tallyUPDATE"bytes_in_used=bytes_in_used+%{0},bytes_out_used=bytes_out_used+%{1},bytes_xfer_used=bytes_xfer_used+%{2},files_in_used=files_in_used+%{3},files_out_used=files_out_used+%{4},files_xfer_used=files_xfer_used+%{5}WHEREname='%{6}'ANDquota_type='%{7}'"ftpquotatallies
SQLNamedQueryinsert-quota-tallyINSERT"%{0},%{1},%{2},%{3},%{4},%{5},%{6},%{7}"ftpquotatallies
QuotaLimitTablesql:/get-quota-limit
QuotaTallyTablesql:/get-quota-tally/update-quota-tally/insert-quota-tally
////////////////////////文件内容///////////////////
在/etc/rc.local文件中新增
/usr/local/proftpd/sbin/proftpd&
LPM配置完毕.
注意:以后添加ftp帐号只需操作ftpuser表添加相应字段.用户磁盘限额操作ftpquotalimits表添加相应字段.
Mysql管理win工具推荐:mysql-front
其中远程连接帐号:
User:root
Host:IP
Pswd:xxxx
(与grantallprivilegeson*.*toroot@’%’identifiedby“xxxx”;
中设置的密码一致).
架设也可参考如下连接:
http://www.mingfor.com/forum/showthread.php?tid=28
8.配置MAIL
配合jboss工程程序实施与建立MAIL帐号相关联,方便维护与管理,我这里选择了邮件服务器与数据库结合的方式来实现的.
具体架设参考邮件发送程序,然后来配置邮件服务器,邮件系统的用户帐号不准创建真实的系统帐号,所有的帐号均建在mysql数据库中.
具体架设过程略。
架设可参考如下连接:
http://www.mingfor.com/forum/showthread.php?tid=19
http://www.extmail.org
9.安全策略
下面是一个简易有效的防火墙设置,只要没有固定IP来入侵,服务器均可正常访问.
因此服务器上线后需要提取服务器通信状态信息.这里服务器已进配置好LAMP环境,因此系统监控请安装CACTI(http://www.cacti.net)软件来监控.
关于它的安装方法比较简单,这里不一一说明了.
还要时时将#netstat–na|grepSYN的结果中连续15个相同的伪连接给DJOP出系统通信间道.
当有这样的入侵连接时….
#iptables–A…………..djop(注意请不要将这个写入到iptables文件中)
下面是iptables文件的所有内容:
#cat/etc/sysconfig/iptables
////////////////////文件内容////////////////////
#Firewallconfigurationwrittenbysystem-config-securitylevel
#Manualcustomizationofthisfileisnotrecommended.
*filter
:INPUTACCEPT[0:0]
:FORWARDACCEPT[0:0]
:OUTPUTACCEPT[0:0]
:RH-Firewall-1-INPUT-[0:0]
-AINPUT-jRH-Firewall-1-INPUT
-AFORWARD-jRH-Firewall-1-INPUT
-ARH-Firewall-1-INPUT-ilo-jACCEPT
-ARH-Firewall-1-INPUT-picmp--icmp-typeany-jACCEPT
-ARH-Firewall-1-INPUT-p50-jACCEPT
-ARH-Firewall-1-INPUT-p51-jACCEPT
-ARH-Firewall-1-INPUT-pudp--dport5353-d224.0.0.251-jACCEPT
-ARH-Firewall-1-INPUT-pudp-mudp--dport631-jACCEPT
-ARH-Firewall-1-INPUT-pudp-s0/0-d0/0--dport177-jACCEPT
#modifybymingfu060404
#Pleasedonotmodifythecontentbelow
#ACKFINSYN
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsSYN,FINSYN,FIN-jDROP
#portscan
#NMAPFIN/URG/PSH
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLFIN,URG,PSH-jDROP
#XmasTree
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLALL-jDROP
#AnotherXmasTree
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLSYN,RST,ACK,FIN,URG-jDROP
#NullScan(possibly)
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLNONE-jDROP
#SYN/RST
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsSYN,RSTSYN,RST-jDROP
#SYN/FIN--Scan(possibly)
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsSYN,FINSYN,FIN-jDROP
#!--syn
-ARH-Firewall-1-INPUT-ptcp!--syn-mstate--stateNEW-jDROP
#Dos
-ARH-Firewall-1-INPUT-ptcp--dport80-mlimit--limit10/second--limit-burst300-jACCEPT
#syncflood
-Nsynfoold
-Asynfoold-ptcp--syn-mlimit--limit1/s-jRETURN
-Asynfoold-ptcp-jREJECT--reject-withtcp-reset
-ARH-Firewall-1-INPUT-ptcp-mstate--stateNEW-jsynfoold
-Nping
-Aping-picmp--icmp-typeecho-request-mlimit--limit1/second-jRETURN
-Aping-picmp-jREJECT
-IRH-Firewall-1-INPUT-picmp--icmp-typeecho-request-mstate--stateNEW-jping
#-ARH-Firewall-1-INPUT-picmp--icmp-type8-s0/0-jDROP
#-ARH-Firewall-1-INPUT-picmp--icmp-type0-s0/0-jACCEPT
#-ARH-Firewall-1-INPUT-picmp--icmp-type0-slocalip-jDROP
#-ARH-Firewall-1-INPUT-picmp--icmp-type8-slocalip-jDROP
#allports
-ARH-Firewall-1-INPUT-ieth0-mstate--stateESTABLISHED,RELATED-jACCEPT
#FTP
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport20-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport21-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport32800:34000-jACCEPT
#MAIL
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport25-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport113-jACCEPT
#SSH
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport22-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport922-jACCEPT
#WEB
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport82-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport8088-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport8080-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport443-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport4443-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport7777-jACCEPT
#DNS
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport53-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mudp-pudp--dport53-jACCEPT
#DATABASE
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport3306-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport1521-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport8009-jACCEPT
#VNC
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport5801:-jACCEPT
#ICMP
-ARH-Firewall-1-INPUT-ieth0-jREJECT--reject-withicmp-host-prohibited
-ARH-Firewall-1-INPUT-ieth0-mstate--stateRELATED,ESTABLISHED-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW,INVALID-jDROP
COMMIT
////////////////////文件内容////////////////////
在/etc/rc.local中新增如下内容:
////////////////////文件内容////////////////////
echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all
echo1>/proc/sys/net/ipv4/tcp_syncookies
echo"1">/proc/sys/net/ipv4/tcp_syn_retries
echo"1">/proc/sys/net/ipv4/tcp_synack_retries
echo8192>/proc/sys/net/ipv4/tcp_max_syn_backlog
////////////////////文件内容////////////////////
其中8192=1024*4*2.更多详情请查阅/proc相关文献介绍
关于获取netstat–na|grepSYN_RECV与TIME_WAIT的脚本:这里我无法写下来。只是原理和主要的代码告诉大家:
使用 netstat 来统计重复的连线 IP,将这些来自同一 IP 的连线统计一下,
如果超过一个设定值(您自己选择的!),那麽该 IP 就会被iptables 机制挡掉了!
利用shell script 结合iptables来完成(其中用到的linux命令主要有:netstat awk cut sort)。。。
*版权所有
所有:郁闷少年&&二娃家园
网站:http://www.mingfor.com
发布:mingfu
联系:msn:linux@mingfor.com
日期:2006-04-04
首发:2006-04-0400:00:00
修改:2006-04-04
欢迎转载,
本程序为GPL授权,任何人皆可传播本文档.
但请勿直接用于商业用途,否则将追究其相关责任.
*网站服务器
主要任务:
根据开发设计需求架设大型的网站服务器
主要软件:
apache+jboss+oracle
简称:LAJO
apache+php+mysql
简称:LAMP
proftpd+mysql
简称:LPM
ssh+expect
iptables
bind
具体要求:
海量用户访问
海量用户存储
(国内外互通)
南北互通.
需求分析:
1.保证高要求高质量高性能,需要选择系*nix操作平台(这里选择as4.3);
2.保证高访问量高数据处理,需要选数商业数据库(这里选择oracle9.2.0.4);
3.解决南北互通(包括国内外互通),需要架设基于bind-view功能的智能DNS服务器.
4.使用流行的B/S,C/S程序架构,需要选择了JBOSS服务器.
5.更好地处理静态页面效果,需要选择了Apache服务器.
6.根据程序注册用户与上传要求,需要架设ftp服务器.
7.时时自动化系统监控,需要架设LAPM服务器.(这里使用软件cacti).
8.公司与客户交流,需要架设邮件服务器.(这里使用postfix+extmail).
9.自动化文件数据处理与安全设置,需expect+ssh+iptables结合shell脚本.
10.海量,需要集群负载均衡与配备存储设备.
具体流程:
1.硬件采购.
这里略.
2.操作系统安装
安装redhatas4.3
系统空间划分(略)
安装开发环境,DNS,LAMP环境所需软件包.
并确认以下包已安装:
compat-db
compat-gcc
compat-gcc-32
compat-oracle-rhel4
compat-libcwait
compat-libgcc
compat-libstdc++-296
compat-libstdc++-33
gcc
gcc-c++
gnome-libs
gnome-libs-devel
libaio-devel
libaio
make
openmotif21
xorg-x11-deprecated-libs-devel
xorg-x11-deprecated-libs
sysstatdisk4
openmotif21disk3
libaiodisk3
libaio-develdisk3
freetype-develdisk3
fontconfig-develdisk3
xorg-x11-devel-disk3
xorg-x11-deprecated-libs-devel-disk3
glib-develdisk4
ORBit-develdisk4
gtk+-develdisk4
alsa-lib-develdisk3
audiofile-develdisk3
esound-devel-disk3
libjpeg-devel-disk3
libtiff-devel-disk3
libungif-devel-disk3
imlib-develdisk4
gnome-libs-develdisk4
expectdisk4
注意:我遇到的一个问题:全新的dell服务器1.5T,raid5,重没有安装过任何系统,硬盘也没有分区,直接用as4.3安装盘安装提示:内存错误,蓝屏,而安装失败。用了好几种linux系统盘(包括windows安装盘)都如此,(手里没有硬盘格式分区工具,没有测试是否可以硬盘分区。)官方发行版说不支持超过2G内存,于是安装系统时先卸下2G内存,待安装完毕在请求支持超过2G内存的内核安装后就可以支持4G内存了,倘如日后全新安装系统不使用hugemem而使用默认的smp内核也能识别4G内存,更不会出现蓝屏问题。关于之中奥妙,还没有仔细研究过。。。。
#rpm–ivhkernel-elhugemem….rpm
修改启动文件grub.conf确保新安装的内核为优先启动.
#cat/etc/grub.conf
////////////////////////////////////////////////////////////////////
#grub.confgeneratedbyanaconda
#
#Notethatyoudonothavetorerungrubaftermakingchangestothisfile
#NOTICE:Youhavea/bootpartition.Thismeansthat
#allkernelandinitrdpathsarerelativeto/boot/,eg.
#root(hd0,1)
#kernel/vmlinuz-versionroroot=/dev/sda8
#initrd/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
titleRedHatEnterpriseLinuxAS(2.6.9-22.ELhugemem)
root(hd0,1)
kernel/vmlinuz-2.6.9-22.ELhugememroroot=LABEL=/rhgbquiet
initrd/initrd-2.6.9-22.ELhugemem.img
titleRedHatEnterpriseLinuxAS(2.6.9-22.ELsmp)
root(hd0,1)
kernel/vmlinuz-2.6.9-22.ELsmproroot=LABEL=/rhgbquiet
initrd/initrd-2.6.9-22.ELsmp.img
titleRedHatEnterpriseLinuxAS-up(2.6.9-22.EL)
root(hd0,1)
kernel/vmlinuz-2.6.9-22.ELroroot=LABEL=/rhgbquiet
initrd/initrd-2.6.9-22.EL.img
////////////////////////////////////////////////////////////////////////////////////////////////
如果hiddenmenu
下面的内容顺序不对,请修改default=x(x对应ELhugemem项)
重启并加载另外2G内存.
这样让系统支持4G内存的正常运行.
2)系统安装完毕请作连接:#ln–s/tmp/temp
3.配置DNS
由于要南北互通,开源得只有使用view的ACL访问控制列表文件来实现多线路的自动导向.
(当然也有其他的商业解决办法,比如智能路由与交换机的设置来实现,我们这里使用开源的而且容易实现与调整的解决软件bind)
关于view的ACL获得办法有很多途径,这里不一一商讨.
具体架设参考如下
默认安装的bind为9系列的,已经支持view,配置分为三步骤分别如下所示.
(1)修改named.conf
(2)创建与配置hosts
(3)域名解析
#vi/etc/named.conf
////////////////////////文件内容开始///////////////////
//
//named.confforRedHatcaching-nameserver
//
options{
directory"/var/named";
dump-file"/var/named/data/cache_dump.db";
statistics-file"/var/named/data/named_stats.txt";
/*
*Ifthereisafirewallbetweenyouandnameserversyouwant
*totalkto,youmightneedtouncommentthequery-source
*directivebelow.PreviousversionsofBINDalwaysasked
*questionsusingport53,butBIND8.1usesanunprivileged
*portbydefault.
*/
//query-sourceaddress*port53;
};
//
//acachingonlynameserverconfig
//
controls{
inet127.0.0.1allow{localhost;}keys{rndckey;};
};
include"/etc/rndc.key";
//modifybymingfu060404
acl"CNC"{
58.16.0.0/16;
58.17.0.0/17;
58.17.128.0/17;
58.18.0.0/16;
58.19.0.0/16;
58.20.0.0/16;
58.21.0.0/16;
58.22.0.0/15;
58.240.0.0/15;
58.242.0.0/15;
58.244.0.0/15;
58.246.0.0/15;
58.248.0.0/13;
60.0.0.0/13;
60.8.0.0/15;
60.10.0.0/16;
60.11.0.0/16;
60.12.0.0/16;
60.13.0.0/18;
60.13.128.0/17;
60.14.0.0/15;
60.16.0.0/13;
60.24.0.0/14;
60.30.0.0/16;
60.31.0.0/16;
60.208.0.0/13;
60.216.0.0/15;
60.218.0.0/15;
60.220.0.0/14;
61.48.0.0/13;
61.133.0.0/17;
61.134.96.0/19;
61.134.128.0/17;
61.135.0.0/16;
61.137.128.0/17;
61.138.0.0/17;
61.138.128.0/18;
61.139.128.0/18;
61.148.0.0/15;
61.156.0.0/16;
61.159.0.0/18;
61.161.0.0/18;
61.161.128.0/17;
61.162.0.0/16;
61.163.0.0/16;
61.167.0.0/16;
61.168.0.0/16;
61.176.0.0/16;
61.179.0.0/16;
61.181.0.0/16;
61.182.0.0/16;
61.189.0.0/17;
125.32.0.0/16;
125.40.0.0/13;
202.96.0.0/18;
202.96.64.0/21;
202.96.72.0/21;
202.97.128.0/18;
202.97.224.0/21;
202.97.240.0/20;
202.98.0.0/21;
202.98.8.0/21;
202.99.64.0/19;
202.99.96.0/21;
202.99.128.0/19;
202.99.160.0/21;
202.99.168.0/21;
202.99.176.0/20;
202.99.208.0/20;
202.99.224.0/21;
202.99.232.0/21;
202.99.240.0/20;
202.102.128.0/21;
202.102.224.0/21;
202.102.232.0/21;
202.106.0.0/16;
202.107.0.0/17;
202.108.0.0/16;
202.110.0.0/17;
202.111.128.0/18;
203.93.8.0/24;
203.93.192.0/18;
210.13.128.0/17;
210.14.160.0/19;
210.14.192.0/19;
210.15.32.0/19;
210.15.96.0/19;
210.15.128.0/18;
210.21.0.0/16;
210.52.128.0/17;
210.53.0.0/17;
210.53.128.0/17;
210.74.96.0/19;
210.74.128.0/19;
210.82.0.0/15;
218.8.0.0/14;
218.12.0.0/16;
218.21.128.0/17;
218.24.0.0/14;
218.56.0.0/14;
218.60.0.0/15;
218.67.128.0/17;
218.68.0.0/15;
218.104.0.0/14;
219.154.0.0/15;
219.156.0.0/15;
219.158.0.0/17;
219.158.128.0/17;
219.159.0.0/18;
220.252.0.0/16;
221.0.0.0/15;
221.2.0.0/16;
221.3.0.0/17;
221.3.128.0/17;
221.4.0.0/16;
221.5.0.0/17;
221.5.128.0/17;
221.6.0.0/16;
221.7.0.0/19;
221.7.32.0/19;
221.7.64.0/19;
221.7.96.0/19;
221.8.0.0/15;
221.10.0.0/16;
221.11.0.0/17;
221.11.128.0/18;
221.11.192.0/19;
221.12.0.0/17;
221.12.128.0/18;
221.13.0.0/18;
221.13.64.0/19;
221.13.96.0/19;
221.13.128.0/17;
221.14.0.0/15;
221.192.0.0/15;
221.194.0.0/16;
221.195.0.0/16;
221.196.0.0/15;
221.198.0.0/16;
221.199.0.0/19;
221.199.32.0/20;
221.199.128.0/18;
221.199.192.0/20;
221.200.0.0/14;
221.204.0.0/15;
221.206.0.0/16;
221.207.0.0/18;
221.207.64.0/18;
221.207.128.0/17;
221.208.0.0/14;
221.212.0.0/16;
221.213.0.0/16;
221.216.0.0/13;
222.128.0.0/14;
222.132.0.0/14;
222.136.0.0/13;
222.160.0.0/15;
222.162.0.0/16;
222.163.0.0/19;
222.163.32.0/19;
222.163.64.0/18;
222.163.128.0/17;
};
view"view_cnc"{
match-clients{CNC;};
zone"."{
typehint;
file"named.ca";
};
zone"0.0.127.IN-ADDR.ARPA"{
typemaster;
file"localhost.rev";
};
include"master/cnc.def";
};
view"view_any"{
match-clients{any;};
zone"."{
typehint;
file"named.ca";
};
zone"0.0.127.IN-ADDR.ARPA"{
typemaster;
file"localhost.rev";
};
include"master/telecom.def";
};
////////////////////////文件内容结束///////////////////
#mkdir/var/named/master
#mkdir/var/named/master/cnc
#mkdir/var/named/master/telecom
#touch/var/named/master/cnc.def
#touch/var/named/master/telecom.def
说明:关于如何进行域名解析配置:
@Zone区文件配置:
Master/Cnc.def网通
Master/Telecom.def电信
*.def文件里面为解析域名的zone配置区设置部分.
@Hosts区文件配置
Master/Cnc网通
Master/Telecom电信
下面以解析www.xxxx.com为例
#vi/var/named/master/cnc.def
////////////////////////文件内容开始///////////////////
zone"xxxx.com"{
typemaster;
file"master/cnc/xxxx.com";
};
////////////////////////文件内容结束///////////////////
#vi/var/named/master/telecom.def
////////////////////////文件内容开始///////////////////
zone"xxxx.com"{
typemaster;
file"master/telecom/xxxx.com";
};
////////////////////////文件内容结束///////////////////
#vi/var/named/master/cnc/xxxx.com
////////////////////////文件内容开始///////////////////
$TTL3600
$ORIGINxxxx.com.
@INSOAns.xxxx.com.root.ns.xxxx.com.(
2005121013;Serial
3600;Refresh(seconds)
900;Retry(seconds)
68400;Expire(seconds)
15);MinimumTTLforZone(seconds)
;
@INNSns.xxxx.com.
@INMXxxxx.com.
;;ipforcnc
@INAx.x.x.x(网通IP)
wwwINAx.x.x.x(网通IP)
////////////////////////文件内容结束///////////////////
#vi/var/named/master/telecom/xxxx.com
////////////////////////文件内容开始///////////////////
$TTL3600
$ORIGINxxxx.com.
@INSOAns.xxxx.com.root.ns.xxxx.com.(
2005121013;Serial
3600;Refresh(seconds)
900;Retry(seconds)
68400;Expire(seconds)
15);MinimumTTLforZone(seconds)
;
@INNSns.xxxx.com.
@INMXxxxx.com.
;;ipfortelecom
@INAx.x.x.x(电信IP)
wwwINAx.x.x.x(电信IP)
////////////////////////文件内容结束///////////////////
客服端测试:
nslookup--type=axxxx.comx.x.x.x(网通任意一个DNS服务器IP)
nslookup--type=axxxx.comx.x.x.x(电信任意一个DNS服务器IP)
看到的为配置文件中对应ip则解析配置正常.
注意:
上面的xxxxx.com需要修改DNS解析服务器为
ns.xxxxx.com
对应IP为:网通IP.
备注:
1).在这里做了网通与非网通的访问控制,用于实现南北互通,如要国内外互通,需要在列出一个相应的访问控制列表ACL就可以实现了.
2).关于使用tar包编译安装请参看:
http://www.mingfor.com/forum/showthread.php?tid=94
4.配置LAJO
软件:
Apache2.0.58
JBOSS.4.0.3SP1
Oracle9.2.0.4
Mod-jk1.12
配置:
1)apache+mod-jk
#tarzxvfhttpd-2.0.58.tar.gz
#cdhttpd-2.0.58
#./configure--enable-MODULE=shared--enable-so--with-mpm=worker
#make&&makeinstall
#tarzxvfjakarta-tomcat-connectors-1.2.14.1-src.tar.gz
#cd/home/software/jakarta-tomcat-connectors-1.2.14.1-src/jk/native
#./configure--with-apxs=/usr/local/apache2/bin/apxs
#make
#cp./apache-2.0/mod_jk.so/usr/local/apache2/modules
httpd.conf的修改
该文件的路径位于$APACHE-HOME/conf
上述编译过程中我们选用的worker模式,因此我们将修改worker模块的配置
<IfModuleworker.c>
StartServers4#最初建立进程的数量
ServerLimit24#进程建立的最大数量,硬限制
ThreadLimit128#每一进程能创建线程的最大数量,硬限制,该参数建议#和ThreadsPerChild一致,如果ThreadLimit>ThreadsPerChild的话,会造成不##必要的内存消耗。
MaxClients3072#同时可以得到处理的客户端的最大数量
MinSpareThreads100#所有进程中空闲线程的总数最小数值
MaxSpareThreads200#所有进程中空闲线程的总数最大数值
ThreadsPerChild128#每个子进程可以建立的固定数量的线程
MaxRequestsPerChild0#用于控制服务器建立和结束进程的频率,为0表示没有#限制,但在solarisOS下该值可能会出错,可以设置为1000或2000。根据系统#的并发负载吧。
</IfModule>
同时修改与新增httpd.conf如下内容:
Includeconf/mod_jk2.conf
Userxxxx
Group5dxc
DocumentRoot"/site"
<Directory"/site">
NameVirtualHostIP:80
<VirtualHostIP:80>
ServerAdminfoway@163.com
DocumentRoot/site
ServerNameIP
ErrorLoglogs/ip-error_log
CustomLoglogs/ip-access_logcommon
</VirtualHost>
<VirtualHostIP:82>
ServerAdminfoway@163.com
DocumentRoot/var/www/html
ServerNameadmin.xxxx.com
ErrorLoglogs/ip-error_log
CustomLoglogs/ip-access_logcommon
</VirtualHost>
#vi$APACHE-HOME/conf/mod_jk2.conf
////////////////////////文件内容开始///////////////////
LoadModulejk_modulemodules/mod_jk.so
JkWorkersFileconf/workers2.properties
JkLogFilelogs/mod_jk.log
#Setthejkloglevel[debug/error/info]
JkLogLevelinfo
#Selectthelogformat
JkLogStampFormat"[%a%b%d%H:%M:%S%Y]"
#JkOptionsindicatetosendSSLKEYSIZE,
JkOptions+ForwardKeySize+ForwardURICompat-ForwardDirectories
#JkRequestLogFormatsettherequestformat
JkRequestLogFormat"%w%V%T"
JkMount/*loadbalancer
#apachewillservethestaticpicture.
#以下命令意味着所有的图片与htm,css,js页面将由APACHE解析其它交由jboss处理
JkUnMount/*.jpgloadbalancer
JkUnMount/*.gifloadbalancer
JkUnMount/*.swfloadbalancer
JkUnMount/*.bmploadbalancer
JkUnMount/*.pngloadbalancer
JkUnMount/*.jsloadbalancer
JkUnMount/*.cssloadbalancer
JkUnMount/*.htmloadbalancer
////////////////////////文件内容结束///////////////////
#vi$APACHE-HOME/conf/uriworkermap.properties
////////////////////////文件内容开始///////////////////
/jmx-console=loadbalancer
/jmx-console/*=loadbalancer
/web-console=loadbalancer
/web-console/*=loadbalancer
////////////////////////文件内容结束///////////////////
#vi$APACHE-HOME/conf/uriworkermap.properties
////////////////////////文件内容开始///////////////////
worker.list=loadbalancer,status
worker.node1.port=8009
worker.node1.host=192.168.0.192(请填写服务器的IP)
worker.node1.type=ajp13
worder.node1.lbfactor=1
worker.node1.cachesize=10
worker.node2.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worder.node1.lbfactor=1
worker.node1.cachesize=10
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1
worker.status.type=status
////////////////////////文件内容结束///////////////////
注意:如果需要负载:修改
worker.node2.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worder.node1.lbfactor=1
worker.node1.cachesize=10
为:
worker.node2.port=8009
worker.node2.host=IP(进行负载的IP地址)
worker.node2.type=ajp13
worder.node2.lbfactor=1
worker.node2.cachesize=10
备注:如果要进行更多的负载….
修改:
worker.noden.port=8009
worker.noden.host=IP(进行负载的IP地址)
worker.noden.type=ajp13
worder.noden.lbfactor=1
worker.noden.cachesize=10
worker.loadbalancer.balance_workers=node1,node2,noden
2)jboss
jboss安装.
Jboss4.0.3sp1解压到/site/jboss目录下….
…./deploy/jbossweb-tomcat55.sar/server.xml中,找8080,修改为8088
Jdk环境变量设定:
Jdk安装:
#chmod755jdk-1_5_0_06-linux-i586.bin
#./jdk-1_5_0_06-linux-i586.bin
Java参数设置:
#ln–s/usr/local/jdk1.5.0_06/usr/local/jdk
如果你下载的是rpm包请如下操作
#./jdk-1_5_0_06-linux-i586.rpm.bin
#rpmjdk-1_5_0_06-linux-i586.rpm
#ln–s/usr/jdk1.5.0_06/usr/local/jdk
#vi/etc/profile.d/java.sh
////////////////////////文件内容///////////////////
JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$CATALINA_HOME/bin
exportJAVA_HOMEPATH
////////////////////////文件内容///////////////////
3)apache+jboos服务启动问题
apache+jboss整合配置已完毕.下面是启动这些服务了.
..用户与权限分配
groupadd–g5500xxxx
adduser-u5500-s/bin/false-d/bin/null-c"proftpduser"-gxxxxxxxx
修改/etc/passwd文件中的xxxx用户中的”/bin/false”为”/bin/bash”,以便于以后jboss使用.当然你也可以这样做:
adduser-u5500-s/bin/bash-d/bin/null-c"proftpduser"-gxxxxxxxx
chownxxxx/site/*–R
chgrpxxxx/site/*-R
chmod755/site/*-R
..服务启动
添加如下内容到/etc/rc.local
/usr/local/apache2/bin/apachectlstart
/etc/init.d/jbossstart
#vi/etc/init.d/jboss
////////////////////////文件内容开始///////////////////
#/etc/init.d/jboss
/etc/rc.d/init.d/functions
JBOSS_HOME=/site/jboss
exportJBOSS_HOME
JAVA_HOME=/usr/local/jdk
exportJAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
exportPATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportCLASSPATH
prog="jboss"
start()
{
#InputthejbosServicelogintojboss.log
echo"Jboss4.0.3SP1ServiceStarting........">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
date"+%Y-%m-%d%A%T:JbossServicestart">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
su-xxxx-c$JBOSS_HOME/bin/run.sh&>>/var/log/xxxx/jboss.log
touch/var/log/xxxx/jboss.log
}
#Functionstop,StoptheJbossServiceauto
#whentheLinuxHalt
stop()
{
#InputthejbossServicelogintojboss.log
echo"jbossServiceStopping........">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
date"+%Y-%m-%d%A%T:jbossServiceStop">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
su-xxxx-c“$JBOSS_HOME/bin/shutdown.sh–S”>>/var/log/xxxx/jboss.log
}
case$1in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
status)
status$prog
;;
*)
echo"PleaseInputstart|stop|restart|reload|status"
return1
esac
////////////////////////文件内容结束///////////////////
注意:
请赋予jboos的执行权限:chmod755/etc/init.d/jboss
请注意xxxx用户是没有设置密码的,确保使用xxxx用户是无法登录的,只有root可以切换到该用户环境中去的:#su–xxxx…..
4)oracle安装与启动
创建相关安装目录和环境变量
1,创建user/group;
#groupadddba
#groupaddoinstall
#useraddoracle-goinstall-Gdba
#passwdoracle
2,建立oracle安装文件夹;
#mkdir-p/opt/ora9/product/9.2.0.4
#mkdir/var/opt/oracle
#chmodoracle.dba/var/opt/oracle
#chown-Roracle.dba/opt/ora9
3,配置环境变量;
以root用户登录,设置root用户的环境打开.bash_profile文件,将如下内容加入:
exportORACLE_BASE=/opt/ora9
exportORACLE_HOME=/opt/ora9/product/9.2.0.4
exportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
exportORACLE_OWNER=oracle
exportORACLE_SID=oradb//此处为你的sid
使用Oracle用户登陆:
#su–oracle
$vi.bash_profile
以下是配置文件的内容
#.bash_profile
#Getthealiasesandfunctions
if[-f~/.bashrc];then
.~/.bashrc
fi
#Userspecificenvironmentandstartupprograms
PATH=$PATH:$HOME/bin
exportORACLE_BASE=/opt/ora9
exportORACLE_HOME=/opt/ora9/product/9.2.0.4
exportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
exportORACLE_OWNER=oracle
exportORACLE_SID=oradb
exportORACLE_TERM=xterm
exportLD_ASSUME_KERNEL=2.4.19
exportTHREADS_FLAG=native
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
exportNLS_LANG=”American_america.utf8”
exportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
exportPATH
unsetUSERNAME
4,设置系统参数;
#su–root切换到root用户
a)修改#vi/etc/sysctl.conf,以下是配置文件的内容:
#KernelsysctlconfigurationfileforRedHatLinux
#
#Forbinaryvalues,0isdisabled,1isenabled.Seesysctl(8)and
#sysctl.conf(5)formoredetails.
#ControlsIPpacketforwarding
net.ipv4.ip_forward=0
#Controlssourcerouteverification
net.ipv4.conf.default.rp_filter=1
#ControlstheSystemRequestdebuggingfunctionalityofthekernel
kernel.sysrq=0
#ControlswhethercoredumpswillappendthePIDtothecorefilename.
#Usefulfordebuggingmulti-threadedapplications.
kernel.core_uses_pid=1
kernel.shmmax=536870912
kernel.shmmni=4096
kernel.shmall=2097152
kernel.sem=25032000100128
fs.file-max=65536
net.ipv4.ip_local_port_range=102465000
修改后运行
#sysctl–p
命令使得内核改变立即生效;
注:
一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是2G,则可以设置最大共享内存为1073741824,如上;如物理内存是1G,则可以设置最大共享内存为512*1024*1024=536870912;以此类推。
建议永久地增加shmmax设置。
sem4个参数依次为SEMMSL(每个用户拥有信号量最大数);SEMMNS(系统信号量最大数);SEMOPM(每次semopm系统调用操作数);SEMMNI(系统辛苦量集数最大数).Shmmax最大共享内存,官方文档建议是内存的1/2,Shmmni最小共享内存4096KB.Shmall所有内存大小。
b)设置oracle对文件的要求:
编辑文件:#vi/etc/security/limits.conf加入以下语句:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
也可以写成:
* soft nofile 65536
* hard nofile 65536
* soft nproc 16384
* hard nproc 16384
c)gcc降级
#mv/usr/bin/gcc/usr/bin/gcc34
#ln–s/usr/bin/gcc32/usr/bin/gcc
#mv/usr/bin/g++/usr/bin/g++34
#ln–s/usr/bin/g++32/usr/bin/g++
5,安装oracle补丁
#cd/opt
#lscompat*.rpm
compat-libcwait-2.0-2.i386.rpmcompat-oracle-rhel4-1.0-5.i386.rpm
#rpm-Uvhcompat*.rpm
Preparing...###########################################[100%]
1:compat-libcwait-2.0-2.i386.rpm#####################################[50%]
2:compat-oracle-rhel4-1.0-5.i386.rpm####################################[100%]
开始安装Oracle9i
1,解压下载的安装文件:
#zcatship_9204_linux_disk1.cpio.gz|cpio–idmv&&zcatship_9204_linux_disk2.cpio.gz|cpio–idmv&&zcatship_9204_linux_disk3.cpio.gz|cpio–idmv
解包和解压过程中,自动创建了3个包含安装文件的目录:
Disk1
Disk2
Disk3
.以oracle用户登录系统,进行Oracle的安装(注意请不要在root登录中切换到oracle,是以oracle登录到系统(图形界面)):
$cdDisk1
$./runInstaller过一会儿就会出现Oracle的安装界面
-WelcomeScreen:ClickNext
-InventoryLocation:ClickNext
-UnixGroupName:Use"oinstall"andclickNext
Whenaskedtorun/tmp/orainstRoot.sh,runitbeforeyouclickContinue
-Attheendoftheinstallation,exitrunInstaller.
2.一步一个脚印安装下去就行了!
3,安装完后打补丁:
切换到oracle:#su–oracle首先安装opatch.
$cd/opt
$unzipp2617419_210_GENERIC.zip
Archive:p2617419_210_GENERIC.zip
creating:OPatch/
creating:OPatch/docs/
inflating:Opatch/docs/FAQ
......
inflating:README.txt
$exportPATH=$PATH:/opt/OPatch:/sbin
(修改PATH时要要包括解压缩出来的Opatch和sbin目录)
$unzipp3238244_9204_LINUX.zip
$exportORACLE_BASE=/opt/ora9
$exportORACLE_HOME=/opt/ora9/product/9.2.0.4
$cd3238244
$opatchapply
出现success的提示就全部安装成功.
补丁打完后,还要relinked一个.mk文件
$cd$ORACLE_HOME/network/lib
$make-fins_oemagent.mkinstall
之后就可以启动Agent服务了.
4,最后执行$dbca建oracle数据库
注意:在SID处指定为oradb(与ORACLE_SID=oradb)中的值一致.
点击OK,然后退出即可,正常登陆并启动数据库的操作。
$lsnrctlstart
$sqlplus/nolog
SQL*Plus:Release9.2.0.4.0-ProductiononSatMar1222:58:532005
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
SQL>connect/assysdba
Connected.
SQL>shutdownimmediate关闭数据库
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup;启动数据库
ORACLEinstancestarted.
TotalSystemGlobalArea236000356bytes
FixedSize451684bytes
VariableSize201326592bytes
DatabaseBuffers33554432bytes
RedoBuffers667648bytes
Databasemounted.
Databaseopened.
5,oracle服务启动
以root身份进入,编写以下脚本:
vi/etc/init.d/oracle
////////////内容//////////////////
#!/bin/bash
#startandstoptheoracleinstance
#chkconfig–level5--addora9i
#chkconfig:3459119
#description:startstheoraclelistenerandinstance
exportORACLE_HOME="/opt/ora9/product/9.2.0.4"
exportPATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
exportORACLE_OWNER="oracle"
exportORACLE_SID=oradb
if[!-f$ORACLE_HOME/bin/dbstart-o!-d$ORACLE_HOME]
then
echo"oraclestartup:cannotstart"
exit1
fi
case"$1"in
start)
#startupthelistenerandinstance
echo-n"oraclestartup:"
su-$ORACLE_OWNER-c"$ORACLE_HOME/bin/lsnrctlstart"
su-$ORACLE_OWNER-c$ORACLE_HOME/bin/dbstart
touch/var/lock/subsys/oracle
echo"finished"
;;
stop)
#stoplistener,apacheanddatabase
echo-n"oracleshutdown:"
su-$ORACLE_OWNER-c"$ORACLE_HOME/bin/lsnrctlstop"
su-$ORACLE_OWNER-c$ORACLE_HOME/bin/dbshut
rm-f/var/lock/subsys/oracle
echo"finished"
;;
reload|restart)
$0stop
$0start
;;
*)
echo"Usage:ora9i[start|stop|reload|restart]"
exit1
esac
exit0
////////////内容//////////////////
给予执行权限,以root身份运行/etc/rc.d/init.d/oraclestart|stop来管理oracle的启动和停止了。如果要将这个脚本加入到系统中使其可开机运行(不过官方是不建议开机自动运行的,我本人也不建议这样做,你确实需要可以这么做),那么要运行以下命令:chkconfig--level35--addoracle
或者以root用户执行如下命令:
#chmoda+x/etc/rc.d/init.d/oracle
#cd/etc/rc.d/rc5.d
#ln-s/etc/rc.d/init.d/oracleS99ora9i
#cd/etc/rc.d/rc0.d
#ln-s/etc/rc.d/init.d/oracleK99ora9i
也可如下自启动oracle9i!
在/etc/rc.d/rc.local中加入如下:
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctlstart"
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/dbstartstart"
注意:如果启动不理想,请编写shellscripts:
方法:以我个人习惯为例;;;;;;;;;;
#mkdir/usr/local/syscmf
#vi/usr/local/syscmf/oracle.sh
////////////////////////文件内容开始///////////////////
#!/bin/sh
#modifybymingfu060404
#oraclerunscripts
#runuserfororacle
lsnrctlstart
expect/usr/local/syscmf/oracle.exp
////////////////////////文件内容结束///////////////////
#vi/usr/local/syscmf/oracle.exp
////////////////////////文件内容开始///////////////////
#!/usr/local/bin/expect
#modifybymingfu060404
#oraclerunscripts
settimeout120
spawnsqlplus//nolog
expect"SQL/>"
send"conn//assysdba/r"
expect"SQL/>"
send"startup/r"
expect"SQL/>"
send"exit/r"
exit
////////////////////////文件内容结束///////////////////
#chownoracle/usr/local/syscmf/*
#chgrporacle/usr/local/syscmf./*
#chmod755/usr/local/syscmf/*
在/etc/rc.local中新增如下内容:
su–oracle/usr/local/syscmf/oracle.sh
删除原来的:
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctlstart"
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/dbstartstart"
6,关于数据库删除重新安装的问题:
把ORACLE安装目录删除及/etc/ora*.*删除就行了
#rm–f/etc/ora*.*
7,关于在LINUX中运行管理软件$oemapp
#su–oracle
$oemappconsole
8,中文显示不正常解决办法
Oracle目前缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行alterdatabasecharactersetZHS16GBK;来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改sys用户下的PROPS$表的方法,也会给字符集的变更留下很多潜在的问题.
linux下进行如下的操作来修改字符集:
sqlplus/nolog
sql>conn/assysdba
sql>shutdownimmediate
sql>startupmount
sql>altersystemenablerestrictedsession;
sql>altersystemsetJOB_QUEUE_PROCESSES=0;
sql>altersystemsetAQ_TM_PROCESSES=0;
sql>alterdatabaseopen;
sql>alterdatabasecharactersetinternal_useZHS16GBK;
sql>shutdownimmediate
sql>startup
这样字符集的修改就完成了(如果你在安装时选择了中文字符集,这里就不用修改了)
LAJO服务环境配置完毕.
5.配置LAMP
系统自带安装http+php+mysql软件包,进行配置如下:
Apache配置
修改/etc/httpd/conf/httpd.conf内容如下:
Listen82
ServerName127.0.0.1:82
DocumentRoot"/var/www/html"
<Directory"/var/www/html">
注意:系统已经有两个httpd服务进程.
用户分别是:xxxxapache
请确保
/usr/local/apache2/bin/apachectlstart
/etc/init.d/httpdstart
此两个服务自启动.
Mysql设置
Mysql>createftpdb;
Mysql>grantallprivilegesonftpdb.*toftpuser@localhostidentifiedby“xxxx”;
Mysql>grantallprivilegeson*.*toroot@’%’identifiedby“xxxx”;
Mysql>flushprivileges;
Mysql>exit
请确保
/etc/init.d/mysqldstart
此服务自启动.
LAMP服务环境配置完毕.
7.配置FTP
配合工程实施与建立ftp帐号相关联,方便维护与管理,我这里选择了Proftpd与数据库结合的方式来实现的.
创建Ftpdb结构:
Mysql>useftpdb;
Mysql>CREATETABLE`ftpgroup`(
`groupname`varchar(16)NOTNULLdefault'',
`gid`smallint(6)NOTNULLdefault'5500',
`members`varchar(16)NOTNULLdefault'',
KEY`groupname`(`groupname`)
);
Mysql>CREATETABLE`ftpquotalimits`(
`name`varchar(30)defaultNULL,
`quota_type`enum('user','group','class','all')NOTNULLdefault'user',
`per_session`enum('false','true')NOTNULLdefault'false',
`limit_type`enum('soft','hard')NOTNULLdefault'soft',
`bytes_in_avail`floatNOTNULLdefault'0',
`bytes_out_avail`floatNOTNULLdefault'0',
`bytes_xfer_avail`floatNOTNULLdefault'0',
`files_in_avail`int(10)unsignedNOTNULLdefault'0',
`files_out_avail`int(10)unsignedNOTNULLdefault'0',
`files_xfer_avail`int(10)unsignedNOTNULLdefault'0'
);
Mysql>CREATETABLE`ftpquotatallies`(
`name`varchar(30)NOTNULLdefault'',
`quota_type`enum('user','group','class','all')NOTNULLdefault'user',
`bytes_in_used`floatNOTNULLdefault'0',
`bytes_out_used`floatNOTNULLdefault'0',
`bytes_xfer_used`floatNOTNULLdefault'0',
`files_in_used`int(10)unsignedNOTNULLdefault'0',
`files_out_used`int(10)unsignedNOTNULLdefault'0',
`files_xfer_used`int(10)unsignedNOTNULLdefault'0'
);
Mysql>CREATETABLE`ftpuser`(
`id`int(10)unsignedNOTNULLauto_increment,
`userid`varchar(32)NOTNULLdefault'',
`passwd`varchar(32)NOTNULLdefault'',
`uid`smallint(6)NOTNULLdefault'5500',
`gid`smallint(6)NOTNULLdefault'5500',
`homedir`varchar(255)NOTNULLdefault'',
`shell`varchar(16)NOTNULLdefault'/sbin/nologin',
`count`int(11)NOTNULLdefault'0',
`accessed`datetimeNOTNULLdefault'0000-00-0000:00:00',
`modified`datetimeNOTNULLdefault'0000-00-0000:00:00',
PRIMARYKEY(`id`)
);
Mysql>INSERTINTO`ftpgroup`(`groupname`,`gid`,`members`)VALUES("5dxc","5500","xxxx");
Mysql>INSERTINTO`ftpquotalimits`(`name`,`quota_type`,`per_session`,`limit_type`,`bytes_in_avail`,`bytes_out_avail`,`bytes_xfer_avail`,`files_in_avail`,`files_out_avail`,`files_xfer_avail`)VALUES("test","user","false","soft","1.024e+06","0","0","0","0","0");
Mysql>INSERTINTO`ftpquotatallies`(`name`,`quota_type`,`bytes_in_used`,`bytes_out_used`,`bytes_xfer_used`,`files_in_used`,`files_out_used`,`files_xfer_used`)VALUES("test","user","809781","0","809781","0","0","0");
Mysql>INSERTINTO`ftpuser`(`id`,`userid`,`passwd`,`uid`,`gid`,`homedir`,`shell`,`count`,`accessed`,`modified`)VALUES("1","test","test","5500","5500","/site","/sbin/nologin","0","0000-00-0000:00:00","0000-00-0000:00:00");
配置proftp:
#tarxzvfproftpd-1.3.0rc5.tar.gz
#cdproftpd-1.3.0rc5
#./configure--prefix=/usr/local/proftpd--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql:mod_ratio--with-includes=/usr/include/mysql--with-libraries=/usr/lib/mysql
#make&&makeinstall
#mv/etc/local/proftpd/etc/proftpd.conf/etc/local/proftpd/etc/proftpd.confbak
#vi/etc/local/proftpd/etc/proftpd.conf
////////////////////////文件内容///////////////////
#ThisisabasicProFTPDconfigurationfile(renameitto
#'proftpd.conf'foractualuse.Itestablishesasingleserver
#andasingleanonymouslogin.Itassumesthatyouhaveauser/group
#"nobody"and"ftp"fornormaloperationandanon.
#ServerName "ProFTPDDefaultInstallation"
ServerName "Mingfu'sftp"
ServerType standalone
DefaultServer on
#Port21isthestandardFTPport.
Port 21
#Umask022isagoodstandardumasktopreventnewdirsandfiles
#frombeinggroupandworldwritable.
Umask 022
#TopreventDoSattacks,setthemaximumnumberofchildprocesses
#to30.Ifyouneedtoallowmorethan30concurrentconnections
#atonce,simplyincreasethisvalue.NotethatthisONLYworks
#instandalonemode,ininetdmodeyoushoulduseaninetdserver
#thatallowsyoutolimitmaximumnumberofprocessesperservice
#(suchasxinetd).
MaxInstances 100
MaxLoginAttempts 3
#Settheuserandgroupunderwhichtheserverwillrun.
User nobody
Group nobody
#TocauseeveryFTPusertobe"jailed"(chrooted)intotheirhome
#directory,uncommentthisline.
#DefaultRoot~
DefaultRoot~
#puttheproftpdlogfilesin/var/log/ftp.syslog
#SystemLog/var/log/ftp.syslog
SystemLog/var/log/xxxx/ftp.syslog
#TransferLoglogfiles
TransferLog/var/log/xxxx/ftp.transferlog
MaxHostsPerUser1"Sorry,youmaynotconnectmorethanonetime1."
MaxClientsPerUser13"Onlyonesuchuseratatime2."
MaxClientsPerHost20"Sorry,youmaynotconnectmorethanonetime3."
#setuptheRestart
AllowRetrieveRestarton
RootLoginoff
RequireValidShelloff
TimeoutStalled600
MaxClients2000
AllowForeignAddresson
AllowStoreRestarton
ServerIdentoff
DefaultRoot~xxxx
#Slowlogins
UseReverseDNSoff
IdentLookupsoff
#IdentLookupsandtcpwrappers***
#Normally,wewantfilestobeoverwriteable.
AllowOverwrite on
TimeoutIdle600
SQLAuthTypesBackendPlaintext
SQLAuthenticateusers*groups*
#databasename@hostdatabase_useruser_password
#SQLConnectInfoftpdb@localhostproftpdpassword
SQLConnectInfoftpdb@localhostftpuserxxxx
SQLUserInfoftpuseruseridpasswduidgidhomedirshell
SQLGroupInfoftpgroupgroupnamegidmembers
SQLHomedirOnDemandon
#Updatecounteverytimeuserlogsin
SQLLogPASSupdatecount
SQLNamedQueryupdatecountUPDATE"count=count+1,accessed=now()WHEREuserid='%u'"ftpuser
#Updatemodifiedeverytimeuseruploadsordeletesafile
SQLLogSTOR,DELEmodified
SQLNamedQuerymodifiedUPDATE"modified=now()WHEREuserid='%u'"ftpuser
QuotaEngineon
QuotaDirectoryTallyon
QuotaDisplayUnitskb
QuotaShowQuotason
QuotaLog"/var/log/quota"
SQLNamedQueryget-quota-limitSELECT"name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_availFROMftpquotalimitsWHEREname='%{0}'ANDquota_type='%{1}'"
SQLNamedQueryget-quota-tallySELECT"name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_usedFROMftpquotatalliesWHEREname='%{0}'ANDquota_type='%{1}'"
SQLNamedQueryupdate-quota-tallyUPDATE"bytes_in_used=bytes_in_used+%{0},bytes_out_used=bytes_out_used+%{1},bytes_xfer_used=bytes_xfer_used+%{2},files_in_used=files_in_used+%{3},files_out_used=files_out_used+%{4},files_xfer_used=files_xfer_used+%{5}WHEREname='%{6}'ANDquota_type='%{7}'"ftpquotatallies
SQLNamedQueryinsert-quota-tallyINSERT"%{0},%{1},%{2},%{3},%{4},%{5},%{6},%{7}"ftpquotatallies
QuotaLimitTablesql:/get-quota-limit
QuotaTallyTablesql:/get-quota-tally/update-quota-tally/insert-quota-tally
////////////////////////文件内容///////////////////
在/etc/rc.local文件中新增
/usr/local/proftpd/sbin/proftpd&
LPM配置完毕.
注意:以后添加ftp帐号只需操作ftpuser表添加相应字段.用户磁盘限额操作ftpquotalimits表添加相应字段.
Mysql管理win工具推荐:mysql-front
其中远程连接帐号:
User:root
Host:IP
Pswd:xxxx
(与grantallprivilegeson*.*toroot@’%’identifiedby“xxxx”;
中设置的密码一致).
架设也可参考如下连接:
http://www.mingfor.com/forum/showthread.php?tid=28
8.配置MAIL
配合jboss工程程序实施与建立MAIL帐号相关联,方便维护与管理,我这里选择了邮件服务器与数据库结合的方式来实现的.
具体架设参考邮件发送程序,然后来配置邮件服务器,邮件系统的用户帐号不准创建真实的系统帐号,所有的帐号均建在mysql数据库中.
具体架设过程略。
架设可参考如下连接:
http://www.mingfor.com/forum/showthread.php?tid=19
http://www.extmail.org
9.安全策略
下面是一个简易有效的防火墙设置,只要没有固定IP来入侵,服务器均可正常访问.
因此服务器上线后需要提取服务器通信状态信息.这里服务器已进配置好LAMP环境,因此系统监控请安装CACTI(http://www.cacti.net)软件来监控.
关于它的安装方法比较简单,这里不一一说明了.
还要时时将#netstat–na|grepSYN的结果中连续15个相同的伪连接给DJOP出系统通信间道.
当有这样的入侵连接时….
#iptables–A…………..djop(注意请不要将这个写入到iptables文件中)
下面是iptables文件的所有内容:
#cat/etc/sysconfig/iptables
////////////////////文件内容////////////////////
#Firewallconfigurationwrittenbysystem-config-securitylevel
#Manualcustomizationofthisfileisnotrecommended.
*filter
:INPUTACCEPT[0:0]
:FORWARDACCEPT[0:0]
:OUTPUTACCEPT[0:0]
:RH-Firewall-1-INPUT-[0:0]
-AINPUT-jRH-Firewall-1-INPUT
-AFORWARD-jRH-Firewall-1-INPUT
-ARH-Firewall-1-INPUT-ilo-jACCEPT
-ARH-Firewall-1-INPUT-picmp--icmp-typeany-jACCEPT
-ARH-Firewall-1-INPUT-p50-jACCEPT
-ARH-Firewall-1-INPUT-p51-jACCEPT
-ARH-Firewall-1-INPUT-pudp--dport5353-d224.0.0.251-jACCEPT
-ARH-Firewall-1-INPUT-pudp-mudp--dport631-jACCEPT
-ARH-Firewall-1-INPUT-pudp-s0/0-d0/0--dport177-jACCEPT
#modifybymingfu060404
#Pleasedonotmodifythecontentbelow
#ACKFINSYN
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsSYN,FINSYN,FIN-jDROP
#portscan
#NMAPFIN/URG/PSH
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLFIN,URG,PSH-jDROP
#XmasTree
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLALL-jDROP
#AnotherXmasTree
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLSYN,RST,ACK,FIN,URG-jDROP
#NullScan(possibly)
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLNONE-jDROP
#SYN/RST
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsSYN,RSTSYN,RST-jDROP
#SYN/FIN--Scan(possibly)
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsSYN,FINSYN,FIN-jDROP
#!--syn
-ARH-Firewall-1-INPUT-ptcp!--syn-mstate--stateNEW-jDROP
#Dos
-ARH-Firewall-1-INPUT-ptcp--dport80-mlimit--limit10/second--limit-burst300-jACCEPT
#syncflood
-Nsynfoold
-Asynfoold-ptcp--syn-mlimit--limit1/s-jRETURN
-Asynfoold-ptcp-jREJECT--reject-withtcp-reset
-ARH-Firewall-1-INPUT-ptcp-mstate--stateNEW-jsynfoold
-Nping
-Aping-picmp--icmp-typeecho-request-mlimit--limit1/second-jRETURN
-Aping-picmp-jREJECT
-IRH-Firewall-1-INPUT-picmp--icmp-typeecho-request-mstate--stateNEW-jping
#-ARH-Firewall-1-INPUT-picmp--icmp-type8-s0/0-jDROP
#-ARH-Firewall-1-INPUT-picmp--icmp-type0-s0/0-jACCEPT
#-ARH-Firewall-1-INPUT-picmp--icmp-type0-slocalip-jDROP
#-ARH-Firewall-1-INPUT-picmp--icmp-type8-slocalip-jDROP
#allports
-ARH-Firewall-1-INPUT-ieth0-mstate--stateESTABLISHED,RELATED-jACCEPT
#FTP
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport20-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport21-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport32800:34000-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport25-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport113-jACCEPT
#SSH
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport22-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport922-jACCEPT
#WEB
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport82-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport8088-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport8080-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport443-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport4443-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport7777-jACCEPT
#DNS
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport53-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mudp-pudp--dport53-jACCEPT
#DATABASE
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport3306-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport1521-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport8009-jACCEPT
#VNC
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport5801:-jACCEPT
#ICMP
-ARH-Firewall-1-INPUT-ieth0-jREJECT--reject-withicmp-host-prohibited
-ARH-Firewall-1-INPUT-ieth0-mstate--stateRELATED,ESTABLISHED-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW,INVALID-jDROP
COMMIT
////////////////////文件内容////////////////////
在/etc/rc.local中新增如下内容:
////////////////////文件内容////////////////////
echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all
echo1>/proc/sys/net/ipv4/tcp_syncookies
echo"1">/proc/sys/net/ipv4/tcp_syn_retries
echo"1">/proc/sys/net/ipv4/tcp_synack_retries
echo8192>/proc/sys/net/ipv4/tcp_max_syn_backlog
////////////////////文件内容////////////////////
其中8192=1024*4*2.更多详情请查阅/proc相关文献介绍
关于获取netstat–na|grepSYN_RECV与TIME_WAIT的脚本:这里我无法写下来。只是原理和主要的代码告诉大家:
使用 netstat 来统计重复的连线 IP,将这些来自同一 IP 的连线统计一下,
如果超过一个设定值(您自己选择的!),那麽该 IP 就会被iptables 机制挡掉了!
利用shell script 结合iptables来完成(其中用到的linux命令主要有:netstat awk cut sort)。。。
shell脚本中部分主要代码:
///////////////////////////////////////
basedir="/usr/local/syscmf"
#=== Part A, about the TIME WAIT signle ===#
netstat -an|grep 80|grep TIME| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstata
sleep 14s
netstat -an|grep 80|grep TIME| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstatb
sleep 14s
netstat -an|grep 80|grep TIME| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstatc
cat $basedir/netstat1 $basedir/netstat2 $basedir/netstat3 | sort | uniq -c | /
awk '{ if ( $1 == 3 ) print $2 }' > $basedir/netstat-wait.now
denyip_netstat=`cat $basedir/netstat-wait.now`
///////////////////////////////////////
basedir="/usr/local/syscmf"
#=== Part A, about the TIME WAIT signle ===#
netstat -an|grep 80|grep TIME| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstata
sleep 14s
netstat -an|grep 80|grep TIME| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstatb
sleep 14s
netstat -an|grep 80|grep TIME| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstatc
cat $basedir/netstat1 $basedir/netstat2 $basedir/netstat3 | sort | uniq -c | /
awk '{ if ( $1 == 3 ) print $2 }' > $basedir/netstat-wait.now
denyip_netstat=`cat $basedir/netstat-wait.now`
#=== Part B, about the SYN RECV signle ===#
netstat -an|grep 80|grep SYN| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstat1
sleep 12s
netstat -an|grep 80|grep SYN| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstat2
sleep 12s
netstat -an|grep 80|grep SYN| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstat3
cat $basedir/netstat1 $basedir/netstat2 $basedir/netstat3 | sort | uniq -c | /
awk '{ if ( $1 == 3 ) print $2 }' > $basedir/netstat-syn.now
denyip_netstat=`cat $basedir/netstat-syn.now`
///////////////////////////////////////
关于防止别人来猜测ssh用户登录的密码,修改默认的ssh端口22为922(与防火墙中规则指定的922相一致.)修改方法如下:
#vi/etc/ssh/sshd_config
修改:
#Port22
为:
Port922
注意:修改后的ssh连接方法:sshuser@ip–p922
如果你不想指定-p参数,请修改
/etc/ssh/ssh_config的
#Port22
为:
Port922
建议将提供服务的服务器中的ssh服务端与客服端的ssh通信端口都修改……
10.测试上线
所有的配置完毕,重启服务器.测试好准备上线.
注意:以下服务不能重复多次启动,必须服务在停止的情况下才能启动,否则会出现启动错误.
#su-oracleusr/local/syscmf/oracle.sh
#/etc/rc.d/init.d/jbossstart
关于这两个服务的启动用户与权限:
1.Oracle:
用户:oracle(可以进行系统登录)
切忌有关oracle的操作请在oracle用户环境中进行操作.你实在要在root用户中操作,请不要忘了#su–oracle–c“lsncrctlstart”……..
a.Oracle服务停止:
$sqlplus/nolog
SQL>conn/assysdba
SQL>shutdownimmediate
SQL>exit
$lsnrctlstop
b.Oracle服务启动:
$lsnrctlstart
$sqlplus/nolog
SQL>conn/assysdba
SQL>startup
c.Oracle服务强制启动:
在oracle服务已进启动的情况下也可启动oracle服务.
$sqlplus/nolog
SQL>conn/assysdba
SQL>startupforce
如果你要利用我写的expect自动输入脚本来启动,你需要修改,在里面加入条件判断结构.
2.Jboss:
用户:xxxx(不可以进行系统登录)
切忌有关jboss的操作请在jboss用户环境中进行操作.你实在要在root用户中操作,请不要忘了
#su–xxxx/site/jboss/bin/run.sh
或者
#/etc/init.d/jbossstart
a.xxxx用户环境下:
无法登录如何使用呢?
远程文本界面启动法:
以root登录系统:切换root可以登录到xxxx用户环境来进入xxxx.
#su–xxxx
Jboos启动
$/site/jboss/bin/run.sh
Jboss停止
$/site/jboss/bin/shutdown.sh–S
远程图形界面法:
关于开启远程图形界面登录的问题:
只允许oracle用户可以远程图形界面登录,为了便于操作oracle.
下面是开启改功能的过程:
#su–oracle
$vncserver
Password:********
Password:********
$exit
$ps–ef|grepvnc
将看到的vnc进程kill-9.
$vi.vnc/xstartup
修改:
twm&
为
gnome-session&
$vncserver
注意:只允许开启一个vnc服务进程…..对应的端口为5801
在已进有vncserver启动的情况下不要在次启动vncserver服务.否则它将在增加一个vnc服务进程…….
http://ip:5801
输入密码即可远程图形登录系统了.
由于是oracle登录到系统的….要启动jboss.需要如下操作:
$su–
Password:********
#su–xxxx
Jboos启动
$/site/jboss/bin/run.sh
Jboss停止
$/site/jboss/bin/shutdown.sh–S
b.root用户环境下:
Jboos启动
#su–xxxx/site/jboss/bin/run.sh
或者
#servicejbossstart
或者
#/etc/init.d/jbossstart
Jboss停止
#su–xxxx/site/jboss/bin/shutdown.sh–S
或者
#servicejbossstop
或者
#/etc/init.d/jbossstop
关于(系统,软件)日志分析,根据自己的使用习惯搭建…..
关于系统用户创建问题,由于系统里面创建的xxxx用户指定了-u=5500.所以在以后创建的系统帐户id=550X,这样会存在安全隐患,所以在创建用户时请指定id=50x(x=5开始.):例如创建user:
#groupadd–g505user
#adduser–u505–guseruser
注意所有的系统帐号id请不要超过5500.
如有任何不明白请联系:
郁闷少年&&二娃家园
http://www.mingfor.com
msn:linux@mingfor.com
QQ:1017785809
netstat -an|grep 80|grep SYN| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstat1
sleep 12s
netstat -an|grep 80|grep SYN| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstat2
sleep 12s
netstat -an|grep 80|grep SYN| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| /
awk '{if ($1 >= 12) print $2}' > $basedir/netstat3
cat $basedir/netstat1 $basedir/netstat2 $basedir/netstat3 | sort | uniq -c | /
awk '{ if ( $1 == 3 ) print $2 }' > $basedir/netstat-syn.now
denyip_netstat=`cat $basedir/netstat-syn.now`
///////////////////////////////////////
关于防止别人来猜测ssh用户登录的密码,修改默认的ssh端口22为922(与防火墙中规则指定的922相一致.)修改方法如下:
#vi/etc/ssh/sshd_config
修改:
#Port22
为:
Port922
注意:修改后的ssh连接方法:sshuser@ip–p922
如果你不想指定-p参数,请修改
/etc/ssh/ssh_config的
#Port22
为:
Port922
建议将提供服务的服务器中的ssh服务端与客服端的ssh通信端口都修改……
10.测试上线
所有的配置完毕,重启服务器.测试好准备上线.
注意:以下服务不能重复多次启动,必须服务在停止的情况下才能启动,否则会出现启动错误.
#su-oracleusr/local/syscmf/oracle.sh
#/etc/rc.d/init.d/jbossstart
关于这两个服务的启动用户与权限:
1.Oracle:
用户:oracle(可以进行系统登录)
切忌有关oracle的操作请在oracle用户环境中进行操作.你实在要在root用户中操作,请不要忘了#su–oracle–c“lsncrctlstart”……..
a.Oracle服务停止:
$sqlplus/nolog
SQL>conn/assysdba
SQL>shutdownimmediate
SQL>exit
$lsnrctlstop
b.Oracle服务启动:
$lsnrctlstart
$sqlplus/nolog
SQL>conn/assysdba
SQL>startup
c.Oracle服务强制启动:
在oracle服务已进启动的情况下也可启动oracle服务.
$sqlplus/nolog
SQL>conn/assysdba
SQL>startupforce
如果你要利用我写的expect自动输入脚本来启动,你需要修改,在里面加入条件判断结构.
2.Jboss:
用户:xxxx(不可以进行系统登录)
切忌有关jboss的操作请在jboss用户环境中进行操作.你实在要在root用户中操作,请不要忘了
#su–xxxx/site/jboss/bin/run.sh
或者
#/etc/init.d/jbossstart
a.xxxx用户环境下:
无法登录如何使用呢?
远程文本界面启动法:
以root登录系统:切换root可以登录到xxxx用户环境来进入xxxx.
#su–xxxx
Jboos启动
$/site/jboss/bin/run.sh
Jboss停止
$/site/jboss/bin/shutdown.sh–S
远程图形界面法:
关于开启远程图形界面登录的问题:
只允许oracle用户可以远程图形界面登录,为了便于操作oracle.
下面是开启改功能的过程:
#su–oracle
$vncserver
Password:********
Password:********
$exit
$ps–ef|grepvnc
将看到的vnc进程kill-9.
$vi.vnc/xstartup
修改:
twm&
为
gnome-session&
$vncserver
注意:只允许开启一个vnc服务进程…..对应的端口为5801
在已进有vncserver启动的情况下不要在次启动vncserver服务.否则它将在增加一个vnc服务进程…….
http://ip:5801
输入密码即可远程图形登录系统了.
由于是oracle登录到系统的….要启动jboss.需要如下操作:
$su–
Password:********
#su–xxxx
Jboos启动
$/site/jboss/bin/run.sh
Jboss停止
$/site/jboss/bin/shutdown.sh–S
b.root用户环境下:
Jboos启动
#su–xxxx/site/jboss/bin/run.sh
或者
#servicejbossstart
或者
#/etc/init.d/jbossstart
Jboss停止
#su–xxxx/site/jboss/bin/shutdown.sh–S
或者
#servicejbossstop
或者
#/etc/init.d/jbossstop
关于(系统,软件)日志分析,根据自己的使用习惯搭建…..
关于系统用户创建问题,由于系统里面创建的xxxx用户指定了-u=5500.所以在以后创建的系统帐户id=550X,这样会存在安全隐患,所以在创建用户时请指定id=50x(x=5开始.):例如创建user:
#groupadd–g505user
#adduser–u505–guseruser
注意所有的系统帐号id请不要超过5500.
如有任何不明白请联系:
郁闷少年&&二娃家园
http://www.mingfor.com
msn:linux@mingfor.com
QQ:1017785809
相关推荐
郁闷少年架设某大型网站服务器之全部过程.pdf
根据开发设计需求架设大型的网站服务器 主要软件: apache+jboss+oracle 简称:LAJO apache+php+mysql 简称:LAMP proftpd+mysql 简称:LPM ssh+expect iptables bind mail 具体要求: 海量用户访问 海量用户存储 (国内...
架设某大型网站服务器全过程(linux),很详细哦
本文将详细讲解如何使用XP SP3操作系统来搭建个人网站服务器,并重点介绍Serv-U FTP Server v6.1.0.1 Corporate这一FTP服务器软件的安装与配置。 首先,XP SP3(Service Pack 3)是微软Windows XP操作系统的第三个...
HTTP服务器架设 HTTP服务器架设 HTTP服务器架设 HTTP服务器架设 HTTP服务器架设 HTTP服务器架设
内网架设服务器详解 内网架设服务器详解 内网架设服务器详解
服务器架设教程【服务器架设教程】(服务器架设)
FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设教程FTP服务器架设...
本文详细讲解了架设网吧电视直播服务器的过程,包括硬件和软件的选择、安装和配置过程,以及一些需要注意的问题。这篇文章对于网吧运营商和电视直播服务器的架设者非常有用。 在架设网吧电视直播服务器时,我们需要...
这是一个安全架设服务器的电子书,有详细的步骤说明。
Windows Service 2008服务器管理,架设Web和FTP服务器.Windows Service 2008服务器管理,架设Web和FTP服务器.Windows Service 2008服务器管理,架设Web和FTP服务器
服务器架设教程是一个重要的主题,尤其对于那些想要深入了解IT基础设施管理、网络服务部署以及网站运营的初学者来说。本教程采用通俗易懂的语言,旨在帮助你轻松掌握服务器配置和管理的基本概念。 首先,我们要理解...
免费架设文件存储服务器,局域网文件分享 共享
### 如何架设基于LINUX的服务器集群 随着互联网的快速发展及广泛应用,越来越多的企业和个人开始依赖于网络进行各种业务活动,尤其是电子商务领域的迅速崛起。为了应对这种趋势下不断增加的访问量和服务需求,...
在此,我们将详细阐述从选择合适的Linux发行版到完成一个完整Web服务器设置的整个过程。 首先,文档提到了Linux服务器的两个主要阵营,Unix-Like系统的Apache服务器和Windows系统的IIS服务器。其中,Apache因其高...
高效架设局域网与应用服务器
在游戏服务器架设过程中,需要注意以下几点: 1. 服务器的性能:服务器的性能对游戏的性能和用户体验有着重要的影响。需要选择合适的服务器硬件和配置,以确保服务器的高效运营。 2. 服务器的安全性:服务器的安全...
Win2003架设邮件服务器
以上内容只是IIS 6.0服务器架设的基础知识,实际操作中还可能遇到更多复杂情况,需要根据具体环境和需求进行调整。对于初学者,建议参考官方文档和在线教程,以便更深入地理解和掌握IIS 6.0的管理和维护技巧。
视频教程“3系剑灵物理机云服务器架设教程.mp4”应该会详细展示以上步骤,并提供实用技巧和最佳实践。通过观看此视频,你将能够掌握从零开始搭建云服务器环境的全过程,为自己的业务或项目提供稳定、可扩展的云服务...