`
sogotobj
  • 浏览: 615989 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

架设某大型网站服务器之全部过程

阅读更多

架设某大型网站服务器之全部过程

网站服务器
主要任务:
根据开发设计需求架设大型的网站服务器

主要软件:
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"
ServerTypestandalone
DefaultServeron

#Port21isthestandardFTPport.
Port21

#Umask022isagoodstandardumasktopreventnewdirsandfiles
#frombeinggroupandworldwritable.
Umask022

#TopreventDoSattacks,setthemaximumnumberofchildprocesses
#to30.Ifyouneedtoallowmorethan30concurrentconnections
#atonce,simplyincreasethisvalue.NotethatthisONLYworks
#instandalonemode,ininetdmodeyoushoulduseaninetdserver
#thatallowsyoutolimitmaximumnumberofprocessesperservice
#(suchasxinetd).
MaxInstances100
MaxLoginAttempts3

#Settheuserandgroupunderwhichtheserverwillrun.
Usernobody
Groupnobody


#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.
AllowOverwriteon

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

注:本文转自:http://blog.csdn.net/shaily/archive/2007/09/17/1788806.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics