免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 10013 | 回复: 30

郁闷少年架设*网站服务器之全部过程 [复制链接]

论坛徽章:
0
发表于 2006-05-27 16:19 |显示全部楼层
郁闷少年架设*网站服务器之全部过程

*版权所有
所有:郁闷少年&&二娃家园
网站:http://www.mingfor.com
发布:mingfu
联系:msn:linux@mingfor.com
日期:2006-04-04
首发:2006-04-04 00: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.操作系统安装
安装redhat as 4.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
sysstat                                                        disk4
openmotif21                                                  disk3
libaio                                                            disk3
libaio-devel                                                   disk3
freetype-devel                                               disk3
fontconfig-devel                                             disk3
xorg-x11-devel-                                             disk3
xorg-x11-deprecated-libs-devel-                       disk3
glib-devel                                                      disk4
ORBit-devel                                                   disk4
gtk+-devel                                                   disk4
alsa-lib-devel                                              disk3
audiofile-devel                                           disk3
esound-devel-                                          disk3
libjpeg-devel-                                           disk3
libtiff-devel-                                              disk3
libungif-devel-                                          disk3
imlib-devel                                                disk4
gnome-libs-devel                                       disk4
expect                                                      disk4


注意:
我遇到的一个问题:全新的dell服务器1.5T,raid5,重没有安装过任何系统,硬盘也没有分区,直接用as4.3安装盘安装提示:内存错误,蓝屏,而安装失败。用了好几种linux系统盘(包括windows安装盘)都如此,(手里没有硬盘格式分区工具,没有测试是否可以硬盘分区。)官方发行版说不支持超过2G内存,于是安装系统时先卸下2G内存,待安装完毕在请求支持超过2G内存的内核安装后就可以支持4G内存了,倘如日后全新安装系统不使用hugemem而使用默认的smp内核也能识别4G内存,更不会出现蓝屏问题。关于之中奥妙,还没有仔细研究过。。。。



  1. #rpm –ivh kernel-elhugemem….rpm
复制代码


修改启动文件grub.conf确保新安装的内核为优先启动.

#cat /etc/grub.conf

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,1)
#          kernel /vmlinuz-version ro root=/dev/sda8
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux AS (2.6.9-22.ELhugemem)
root (hd0,1)
kernel /vmlinuz-2.6.9-22.ELhugemem ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.9-22.ELhugemem.img
title Red Hat Enterprise Linux AS (2.6.9-22.ELsmp)
root (hd0,1)
kernel /vmlinuz-2.6.9-22.ELsmp ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.9-22.ELsmp.img
title Red Hat Enterprise Linux AS-up (2.6.9-22.EL)
root (hd0,1)
kernel /vmlinuz-2.6.9-22.EL ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.9-22.EL.img

如果hiddenmenu
下面的内容顺序不对,请修改default=x(x对应ELhugemem项)

重启并加载另外2G内存.
这样让系统支持4G内存的正常运行.

2)系统安装完毕.由于开发人员系惯了windows,程序调用/temp,为此作个连接:
  1. #ln –s /tmp /temp
复制代码


待续.......
请访问:
http://www.mingfor.com
http://foway.cublog.cn查看全文

[ 本帖最后由 foway 于 2006-5-29 01:57 编辑 ]

论坛徽章:
0
发表于 2006-05-27 17:33 |显示全部楼层

不错.

顶一下!

论坛徽章:
0
发表于 2006-05-28 16:23 |显示全部楼层
发贴后最好自己整理一下,里面有 N 多表情

论坛徽章:
0
发表于 2006-05-28 16:24 |显示全部楼层
很好`

论坛徽章:
0
发表于 2006-05-28 19:29 |显示全部楼层
楼主能否再将贴子格式化一下?是 code 的用 code 括起来,该是引用的引用起来

论坛徽章:
0
发表于 2006-05-29 01:02 |显示全部楼层
3.配置DNS
由于要南北互通,开源得只有使用view的ACL访问控制列表文件来实现多线路的自动导向.
(当然也有其他的商业解决办法,比如智能路由与交换机的设置来实现,我们这里使用开源的而且容易实现与调整的解决软件bind)
关于view的ACL获得办法有很多途径,这里不一一商讨.
具体架设参考如下
默认安装的bind为9系列的,已经支持view,配置分为三步骤分别如下所示.
(1)修改named.conf
(2)创建与配置hosts
(3)域名解析

  1. #vi /etc/named.conf
  2. ////////////////////////文件内容开始///////////////////
  3. //
  4. // named.conf for Red Hat caching-nameserver
  5. //

  6. options {
  7. directory "/var/named";
  8. dump-file "/var/named/data/cache_dump.db";
  9. statistics-file "/var/named/data/named_stats.txt";
  10. /*
  11. * If there is a firewall between you and nameservers you want
  12. * to talk to, you might need to uncomment the query-source
  13. * directive below.  Previous versions of BIND always asked
  14. * questions using port 53, but BIND 8.1 uses an unprivileged
  15. * port by default.
  16. */
  17. // query-source address * port 53;
  18. };

  19. //
  20. // a caching only nameserver config
  21. //
  22. controls {
  23. inet 127.0.0.1 allow { localhost; } keys { rndckey; };
  24. };



  25. include "/etc/rndc.key";

  26. //modify by mingfu 060404
  27. acl "CNC" {
  28. 58.16.0.0/16;
  29. 58.17.0.0/17;
  30. 58.17.128.0/17;
  31. 58.18.0.0/16;
  32. 58.19.0.0/16;
  33. 58.20.0.0/16;
  34. 58.21.0.0/16;
  35. 58.22.0.0/15;
  36. 58.240.0.0/15;
  37. 58.242.0.0/15;
  38. 58.244.0.0/15;
  39. 58.246.0.0/15;
  40. 58.248.0.0/13;
  41. 60.0.0.0/13;
  42. 60.8.0.0/15;
  43. 60.10.0.0/16;
  44. 60.11.0.0/16;
  45. 60.12.0.0/16;
  46. 60.13.0.0/18;
  47. 60.13.128.0/17;
  48. 60.14.0.0/15;
  49. 60.16.0.0/13;
  50. 60.24.0.0/14;
  51. 60.30.0.0/16;
  52. 60.31.0.0/16;
  53. 60.208.0.0/13;
  54. 60.216.0.0/15;
  55. 60.218.0.0/15;
  56. 60.220.0.0/14;
  57. 61.48.0.0/13;
  58. 61.133.0.0/17;
  59. 61.134.96.0/19;
  60. 61.134.128.0/17;
  61. 61.135.0.0/16;
  62. 61.137.128.0/17;
  63. 61.138.0.0/17;
  64. 61.138.128.0/18;
  65. 61.139.128.0/18;
  66. 61.148.0.0/15;
  67. 61.156.0.0/16;
  68. 61.159.0.0/18;
  69. 61.161.0.0/18;
  70. 61.161.128.0/17;
  71. 61.162.0.0/16;
  72. 61.163.0.0/16;
  73. 61.167.0.0/16;
  74. 61.168.0.0/16;
  75. 61.176.0.0/16;
  76. 61.179.0.0/16;
  77. 61.181.0.0/16;
  78. 61.182.0.0/16;
  79. 61.189.0.0/17;
  80. 125.32.0.0/16;
  81. 125.40.0.0/13;
  82. 202.96.0.0/18;
  83. 202.96.64.0/21;
  84. 202.96.72.0/21;
  85. 202.97.128.0/18;
  86. 202.97.224.0/21;
  87. 202.97.240.0/20;
  88. 202.98.0.0/21;
  89. 202.98.8.0/21;
  90. 202.99.64.0/19;
  91. 202.99.96.0/21;
  92. 202.99.128.0/19;
  93. 202.99.160.0/21;
  94. 202.99.168.0/21;
  95. 202.99.176.0/20;
  96. 202.99.208.0/20;
  97. 202.99.224.0/21;
  98. 202.99.232.0/21;
  99. 202.99.240.0/20;
  100. 202.102.128.0/21;
  101. 202.102.224.0/21;
  102. 202.102.232.0/21;
  103. 202.106.0.0/16;
  104. 202.107.0.0/17;
  105. 202.108.0.0/16;
  106. 202.110.0.0/17;
  107. 202.111.128.0/18;
  108. 203.93.8.0/24;
  109. 203.93.192.0/18;
  110. 210.13.128.0/17;
  111. 210.14.160.0/19;
  112. 210.14.192.0/19;
  113. 210.15.32.0/19;
  114. 210.15.96.0/19;
  115. 210.15.128.0/18;
  116. 210.21.0.0/16;
  117. 210.52.128.0/17;
  118. 210.53.0.0/17;
  119. 210.53.128.0/17;
  120. 210.74.96.0/19;
  121. 210.74.128.0/19;
  122. 210.82.0.0/15;
  123. 218.8.0.0/14;
  124. 218.12.0.0/16;
  125. 218.21.128.0/17;
  126. 218.24.0.0/14;
  127. 218.56.0.0/14;
  128. 218.60.0.0/15;
  129. 218.67.128.0/17;
  130. 218.68.0.0/15;
  131. 218.104.0.0/14;
  132. 219.154.0.0/15;
  133. 219.156.0.0/15;
  134. 219.158.0.0/17;
  135. 219.158.128.0/17;
  136. 219.159.0.0/18;
  137. 220.252.0.0/16;
  138. 221.0.0.0/15;
  139. 221.2.0.0/16;
  140. 221.3.0.0/17;
  141. 221.3.128.0/17;
  142. 221.4.0.0/16;
  143. 221.5.0.0/17;
  144. 221.5.128.0/17;
  145. 221.6.0.0/16;
  146. 221.7.0.0/19;
  147. 221.7.32.0/19;
  148. 221.7.64.0/19;
  149. 221.7.96.0/19;
  150. 221.8.0.0/15;
  151. 221.10.0.0/16;
  152. 221.11.0.0/17;
  153. 221.11.128.0/18;
  154. 221.11.192.0/19;
  155. 221.12.0.0/17;
  156. 221.12.128.0/18;
  157. 221.13.0.0/18;
  158. 221.13.64.0/19;
  159. 221.13.96.0/19;
  160. 221.13.128.0/17;
  161. 221.14.0.0/15;
  162. 221.192.0.0/15;
  163. 221.194.0.0/16;
  164. 221.195.0.0/16;
  165. 221.196.0.0/15;
  166. 221.198.0.0/16;
  167. 221.199.0.0/19;
  168. 221.199.32.0/20;
  169. 221.199.128.0/18;
  170. 221.199.192.0/20;
  171. 221.200.0.0/14;
  172. 221.204.0.0/15;
  173. 221.206.0.0/16;
  174. 221.207.0.0/18;
  175. 221.207.64.0/18;
  176. 221.207.128.0/17;
  177. 221.208.0.0/14;
  178. 221.212.0.0/16;
  179. 221.213.0.0/16;
  180. 221.216.0.0/13;
  181. 222.128.0.0/14;
  182. 222.132.0.0/14;
  183. 222.136.0.0/13;
  184. 222.160.0.0/15;
  185. 222.162.0.0/16;
  186. 222.163.0.0/19;
  187. 222.163.32.0/19;
  188. 222.163.64.0/18;
  189. 222.163.128.0/17;
  190. };

  191. view "view_cnc" {
  192. match-clients { CNC; };
  193. zone "." {
  194. type hint;
  195. file "named.ca";
  196. };

  197. zone "0.0.127.IN-ADDR.ARPA" {
  198. type master;
  199. file "localhost.rev";
  200. };

  201. include "master/cnc.def";
  202. };

  203. view "view_any" {
  204. match-clients { any; };
  205. zone "." {
  206. type hint;
  207. file "named.ca";
  208. };

  209. zone "0.0.127.IN-ADDR.ARPA" {
  210. type master;
  211. file "localhost.rev";
  212. };

  213. include "master/telecom.def";
  214. };
  215. ////////////////////////文件内容结束///////////////////

  216. #mkdir /var/named/master
  217. #mkdir /var/named/master/cnc
  218. #mkdir /var/named/master/telecom
  219. #touch /var/named/master/cnc.def
  220. #touch /var/named/master/telecom.def
复制代码

说明:关于如何进行域名解析配置:

@Zone区文件配置:
Master/Cnc.def 网通
Master/Telecom.def 电信
*.def文件里面为解析域名的zone配置区设置部分.

@Hosts 区文件配置
Master/Cnc 网通
Master/Telecom 电信
下面以解析www.xxxx.com为例

  1. #vi /var/named/master/cnc.def
  2. ////////////////////////文件内容开始///////////////////
  3. zone "xxxx.com" {
  4. type master;
  5. file "master/cnc/xxxx.com";
  6. };
  7. ////////////////////////文件内容结束///////////////////

  8. #vi /var/named/master/telecom.def
  9. ////////////////////////文件内容开始///////////////////
  10. zone "xxxx.com" {
  11. type master;
  12. file "master/telecom/xxxx.com";
  13. };
  14. ////////////////////////文件内容结束///////////////////

  15. #vi /var/named/master/cnc/xxxx.com
  16. ////////////////////////文件内容开始///////////////////
  17. $TTL 3600
  18. $ORIGIN xxxx.com.
  19. @ IN SOA ns.xxxx.com. root.ns.xxxx.com.(
  20. 2005121013 ;Serial
  21. 3600 ; Refresh ( seconds )
  22. 900 ; Retry ( seconds )
  23. 68400 ; Expire ( seconds )
  24. 15 );Minimum TTL for Zone ( seconds )
  25. ;
  26. @ IN NS ns.xxxx.com.
  27. @ IN MX xxxx.com.
  28. ;;ip for cnc
  29. @ IN A x.x.x.x(网通IP)
  30. www IN A x.x.x.x(网通IP)
  31. ////////////////////////文件内容结束///////////////////

  32. #vi /var/named/master/telecom/xxxx.com
  33. ////////////////////////文件内容开始///////////////////
  34. $TTL 3600
  35. $ORIGIN xxxx.com.
  36. @ IN SOA ns.xxxx.com. root.ns.xxxx.com.(
  37. 2005121013 ;Serial
  38. 3600 ; Refresh ( seconds )
  39. 900 ; Retry ( seconds )
  40. 68400 ; Expire ( seconds )
  41. 15 );Minimum TTL for Zone ( seconds )
  42. ;
  43. @ IN NS ns.xxxx.com.
  44. @ IN MX xxxx.com.
  45. ;;ip for telecom
  46. @ IN A x.x.x.x(电信IP)
  47. www IN A x.x.x.x(电信IP)

  48. ////////////////////////文件内容结束///////////////////
复制代码

客服端测试:
nslookup --type=a xxxx.com x.x.x.x(网通任意一个DNS服务器IP)

nslookup --type=a xxxx.com x.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

[ 本帖最后由 foway 于 2006-5-29 01:05 编辑 ]

论坛徽章:
0
发表于 2006-05-29 01:16 |显示全部楼层
4.配置LAJO
软件:
Apache2.0.58
JBOSS.4.0.3SP1
Oracle9.2.0.4
Mod-jk1.12
配置:
1)apache+mod-jk

  1. #tar zxvf httpd-2.0.58.tar.gz
  2. #cd httpd-2.0.58
  3. #./configure --enable-MODULE=shared   --enable-so --with-mpm=worker
  4. #make&&make install
  5. #tar zxvf jakarta-tomcat-connectors-1.2.14.1-src.tar.gz
  6. #cd /home/software/jakarta-tomcat-connectors-1.2.14.1-src/jk/native
  7. # ./configure --with-apxs=/usr/local/apache2/bin/apxs
  8. #make
  9. # cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules
复制代码

httpd.conf的修改
该文件的路径位于$APACHE-HOME/conf
上述编译过程中我们选用的worker模式,因此我们将修改worker模块的配置

  1. vi $APACHE-HOME/conf /httpd.conf

  2. <IfModule worker.c>
  3. StartServers         4    #最初建立进程的数量
  4. ServerLimit         24   #进程建立的最大数量,硬限制
  5. ThreadLimit         128  #每一进程能创建线程的最大数量,硬限制,该参数建议#和ThreadsPerChild一致,如果ThreadLimit > ThreadsPerChild的话,会造成不##必要的内存消耗。
  6. MaxClients         3072  #同时可以得到处理的客户端的最大数量
  7. MinSpareThreads    100   #所有进程中空闲线程的总数最小数值
  8. MaxSpareThreads    200   #所有进程中空闲线程的总数最大数值
  9. ThreadsPerChild     128   #每个子进程可以建立的固定数量的线程
  10. MaxRequestsPerChild  0    #用于控制服务器建立和结束进程的频率,为0表示没有#限制,但在solaris OS下该值可能会出错,可以设置为1000或2000。根据系统的并发负载吧。
  11. </IfModule>

  12. Include conf/mod_jk2.conf
  13. User xxxx
  14. Group xxxx
  15. DocumentRoot "/site"
  16. <Directory "/site">
  17. NameVirtualHost IP:80
  18. <VirtualHost IP:80>
  19. ServerAdmin foway@163.com
  20. DocumentRoot /site
  21. ServerName IP
  22. ErrorLog logs/ip-error_log
  23. CustomLog logs/ip-access_log common
  24. </VirtualHost>

  25. <VirtualHost IP:82>
  26. ServerAdmin foway@163.com
  27. DocumentRoot /var/www/html
  28. ServerName admin.xxxx.com
  29. ErrorLog logs/ip-error_log
  30. CustomLog logs/ip-access_log common
  31. </VirtualHost>

  32. #vi $APACHE-HOME/conf/mod_jk2.conf
  33. ////////////////////////文件内容开始///////////////////
  34. LoadModule jk_module modules/mod_jk.so
  35. JkWorkersFile conf/workers2.properties
  36. JkLogFile logs/mod_jk.log
  37. # Set the jk log level [debug/error/info]
  38. JkLogLevel info
  39. # Select the log format
  40. JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
  41. # JkOptions indicate to send SSL KEY SIZE,
  42. JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
  43. # JkRequestLogFormat set the request format
  44. JkRequestLogFormat "%w %V %T"
  45. JkMount /* loadbalancer
  46. #apache will serve the static picture.
  47. #以下命令意味着所有的图片与htm,css,js页面将由APACHE解析其它交由jboss处理
  48. JkUnMount /*.jpg loadbalancer
  49. JkUnMount /*.gif loadbalancer
  50. JkUnMount /*.swf loadbalancer
  51. JkUnMount /*.bmp loadbalancer
  52. JkUnMount /*.png loadbalancer
  53. JkUnMount /*.js loadbalancer
  54. JkUnMount /*.css loadbalancer
  55. JkUnMount /*.htm loadbalancer
  56. ////////////////////////文件内容结束///////////////////

  57. #vi $APACHE-HOME/conf/ uriworkermap.properties
  58. ////////////////////////文件内容开始///////////////////
  59. /jmx-console=loadbalancer
  60. /jmx-console/*=loadbalancer
  61. /web-console=loadbalancer
  62. /web-console/*=loadbalancer
  63. ////////////////////////文件内容结束///////////////////

  64. #vi $APACHE-HOME/conf/uriworkermap.properties
  65. ////////////////////////文件内容开始///////////////////

  66. worker.list=loadbalancer,status

  67. worker.node1.port=8009
  68. worker.node1.host=192.168.0.192(请填写服务器的IP)
  69. worker.node1.type=ajp13
  70. worder.node1.lbfactor=1
  71. worker.node1.cachesize=10

  72. worker.node2.port=8009
  73. worker.node1.host=localhost
  74. worker.node1.type=ajp13
  75. worder.node1.lbfactor=1
  76. worker.node1.cachesize=10

  77. worker.loadbalancer.type=lb
  78. worker.loadbalancer.balance_workers=node1,node2
  79. worker.loadbalancer.sticky_session=1

  80. worker.status.type=status
  81. ////////////////////////文件内容结束///////////////////
  82. 注意:如果需要负载:修改
  83. worker.node2.port=8009
  84. worker.node1.host=localhost
  85. worker.node1.type=ajp13
  86. worder.node1.lbfactor=1
  87. worker.node1.cachesize=10
  88. 为:
  89. worker.node2.port=8009
  90. worker.node2.host=IP(进行负载的IP地址)
  91. worker.node2.type=ajp13
  92. worder.node2.lbfactor=1
  93. worker.node2.cachesize=10

  94. 备注:如果要进行更多的负载….
  95. 修改:

  96. worker.noden.port=8009
  97. worker.noden.host=IP(进行负载的IP地址)
  98. worker.noden.type=ajp13
  99. worder.noden.lbfactor=1
  100. worker.noden.cachesize=10

  101. 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安装:

  1. #chmod 755 jdk-1_5_0_06-linux-i586.bin
  2. #./jdk-1_5_0_06-linux-i586.bin
  3. Java参数设置:
  4. #ln –s /usr/local/jdk1.5.0_06 /usr/local/jdk

  5. 如果你下载的是rpm包请如下操作
  6. #./jdk-1_5_0_06-linux-i586.rpm.bin
  7. #rpm jdk-1_5_0_06-linux-i586.rpm
  8. # ln –s /usr/ jdk1.5.0_06 /usr/local/jdk


  9. #vi /etc/profile.d/java.sh
  10. ////////////////////////文件内容///////////////////
  11. JAVA_HOME=/usr/local/jdk
  12. PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$CATALINA_HOME/bin
  13. export JAVA_HOME PATH
  14. ////////////////////////文件内容///////////////////
复制代码


3) apache+jboos服务启动问题

apache+jboss整合配置已完毕.下面是启动这些服务了.

..用户与权限分配

  1. groupadd –g 5500 xxxx
  2. adduser -u 5500 -s /bin/false -d /bin/null -c "proftpd user" -g xxxx xxxx
复制代码


修改/etc/passwd文件中的xxxx用户中的”/bin/false”为”/bin/bash”,以便于以后jboss使用.当然你也可以这样做:

  1. adduser -u 5500 -s /bin/bash -d /bin/null -c "proftpd user" -g xxxx xxxx

  2. chown xxxx /site/* –R
  3. chgrp xxxx /site/* -R
  4. chmod 755 /site/* -R
复制代码

..服务启动
添加如下内容到/etc/rc.local

  1. /usr/local/apache2/bin/apachectl start
  2. /etc/init.d/jboss start
复制代码


jboss启动脚本

  1. #vi /etc/init.d/jboss
  2. ////////////////////////文件内容开始///////////////////
  3. #/etc/init.d/jboss
  4. /etc/rc.d/init.d/functions
  5. JBOSS_HOME=/site/jboss
  6. export JBOSS_HOME
  7. JAVA_HOME=/usr/local/jdk
  8. export JAVA_HOME
  9. PATH=$PATH:$JAVA_HOME/bin
  10. export PATH
  11. CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  12. export CLASSPATH
  13. prog="jboss"
  14. start()
  15. {
  16. #Input the jbos Service log into jboss.log
  17. echo "Jboss4.0.3SP1 Service Starting........" >>/var/log/xxxx/jboss.log
  18. echo "-----------------------------------------------" >>/var/log/xxxx/jboss.log
  19. date "+%Y-%m-%d %A %T :Jboss Service start" >>/var/log/xxxx/jboss.log
  20. echo "-----------------------------------------------" >>/var/log/xxxx/jboss.log
  21. su - xxxx -c $JBOSS_HOME/bin/run.sh & >>/var/log/xxxx/jboss.log
  22. touch /var/log/xxxx/jboss.log
  23. }
  24. #Function stop,Stop the Jboss Service auto
  25. #when the Linux Halt
  26. stop()
  27. {
  28. #Input the jboss Service log into jboss.log
  29. echo "jboss Service Stopping........" >>/var/log/xxxx/jboss.log
  30. echo "-----------------------------------------------" >>/var/log/xxxx/jboss.log
  31. date "+%Y-%m-%d %A %T :jboss Service Stop">>/var/log/xxxx/jboss.log
  32. echo "-----------------------------------------------" >>/var/log/xxxx/jboss.log
  33. su - xxxx -c “$JBOSS_HOME/bin/shutdown.sh –S”>>/var/log/xxxx/jboss.log
  34. }
  35. case $1 in
  36. start)
  37. start
  38. ;;
  39. stop)
  40. stop
  41. ;;
  42. restart|reload)
  43. stop
  44. start
  45. ;;
  46. status)
  47. status $prog
  48. ;;
  49. *)
  50. echo "Please Input start|stop|restart|reload|status"
  51. return 1
  52. esac
  53. ////////////////////////文件内容结束///////////////////
复制代码


注意:
请赋予jboos的执行权限:
  1. chmod 755 /etc/init.d/jboss
复制代码

请注意xxxx用户是没有设置密码的,确保使用xxxx用户是无法登录的,只有root可以切换到该用户环境中去的:
  1. #su – xxxx
复制代码

论坛徽章:
0
发表于 2006-05-29 01:38 |显示全部楼层
4)oracle安装与启动
创建相关安装目录和环境变量
  1,创建user/group;

  1.   #groupadd dba
  2.   #groupadd oinstall
  3.   #useradd oracle -g oinstall -G dba
  4.   #passwd oracle
复制代码

  2,建立oracle安装文件夹;

  1.   # mkdir -p /opt/ora9/product/9.2.0.4
  2.   # mkdir /var/opt/oracle
  3.   # chmod oracle.dba /var/opt/oracle
  4.   # chown -R oracle.dba  /opt/ora9
复制代码

 
3,配置环境变量;
以root用户登录,设置root用户的环境打开.bash_profile文件,将如下内容加入:

  1. export ORACLE_BASE=/opt/ora9
  2. export ORACLE_HOME=/opt/ora9/product/9.2.0.4
  3. export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
  4. export ORACLE_OWNER=oracle
  5. export ORACLE_SID=oradb //此处为你的sid
复制代码


 使用Oracle用户登陆:
 #su – oracle
 $vi .bash_profile
 以下是配置文件的内容
 # .bash_profile

 # Get the aliases and functions
 if [ -f ~/.bashrc ]; then
. ~/.bashrc
 fi

 # User specific environment and startup programs

 PATH=$PATH:$HOME/bin
 export ORACLE_BASE=/opt/ora9
 export ORACLE_HOME=/opt/ora9/product/9.2.0.4
 export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
 export ORACLE_OWNER=oracle
 export ORACLE_SID=oradb
 export ORACLE_TERM=xterm
 export LD_ASSUME_KERNEL=2.4.19
 export THREADS_FLAG=native
 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
 export NLS_LANG=”American_america.utf8”
 export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
 export PATH
 unset USERNAME
 4,设置系统参数;

#su – root切换到root用户
a) 修改#vi /etc/sysctl.conf, 以下是配置文件的内容:
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

修改后运行
#sysctl –p
命令使得内核改变立即生效;

注:
一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是 2G,则可以设置最大共享内存为 1073741824,如上;如物理内存是 1G,则可以设置最大共享内存为 512 * 1024 * 1024 = 536870912;以此类推。
建议永久地增加 shmmax 设置。
sem 4个参数依次为SEMMSL(每个用户拥有信号量最大数);SEMMNS(系统信号量最大数);SEMOPM(每次semopm系统调用操作数);SEMMNI(系统辛苦量集数最大数).Shmmax 最大共享内存,官方文档建议是内存的1/2,Shmmni 最小共享内存 4096KB.Shmall 所有内存大小 。

b) 设置oracle对文件的要求:
编辑文件:#vi /etc/security/limits.conf 加入以下语句:

  1. oracle    soft    nofile    65536
  2. oracle    hard    nofile   65536
  3. oracle    soft    nproc    16384
  4. oracle    hard    nproc    16384
复制代码

也可以写成:

  1. *   soft    nofile    65536
  2. *    hard    nofile   65536
  3. *   soft    nproc    16384
  4. *   hard    nproc    16384
复制代码

c) gcc降级

  1. #mv /usr/bin/gcc /usr/bin/gcc34
  2. #ln –s /usr/bin/gcc32 /usr/bin/gcc
  3. #mv /usr/bin/g++ /usr/bin/g++34
  4. #ln –s /usr/bin/g++32 /usr/bin/g++
复制代码


5,安装oracle补丁

  1. # cd /opt
  2. #ls compat*.rpm
  3. compat-libcwait-2.0-2.i386.rpm  compat-oracle-rhel4-1.0-5.i386.rpm
  4. # rpm -Uvh compat*.rpm
  5. Preparing...            ########################################### [100%]
  6. 1:compat-libcwait-2.0-2.i386.rpm ##################################### [ 50%]
  7. 2:compat-oracle-rhel4-1.0-5.i386.rpm#################################### [100%]
复制代码

开始安装Oracle9i

1,解压下载的安装文件:

  1. #zcat ship_9204_linux_disk1.cpio.gz | cpio –idmv&&zcat ship_9204_linux_disk2.cpio.gz | cpio –idmv&& zcat ship_9204_linux_disk3.cpio.gz | cpio –idmv
复制代码

解包和解压过程中,自动创建了3个包含安装文件的目录:
Disk1
Disk2
Disk3

.以oracle用户登录系统,进行Oracle的安装(注意请不要在root登录中切换到oracle,是以oracle登录到系统(图形界面)):
$ cd Disk1
$ ./runInstaller过一会儿就会出现Oracle的安装界面
- Welcome Screen:       Click Next
- Inventory Location:   Click Next
- Unix Group Name:      Use "oinstall" and click Next

When asked to run /tmp/orainstRoot.sh, run it before you click Continue
- At the end of the installation, exit runInstaller.

2.一步一个脚印安装下去就行了!

3,安装完后打补丁:
切换到oracle:#su – oracle 首先安装 opatch.
$cd /opt
$unzip p2617419_210_GENERIC.zip
Archive: p2617419_210_GENERIC.zip
creating: OPatch/
creating: OPatch/docs/
inflating: Opatch/docs/FAQ
......
inflating: README.txt
$export PATH=$PATH:/opt/OPatch:/sbin
(修改PATH时要要包括解压缩出来的Opatch 和 sbin目录)
$unzip p3238244_9204_LINUX.zip
$export ORACLE_BASE=/opt/ora9
$export ORACLE_HOME=/opt/ora9/product/9.2.0.4
$ cd 3238244
$opatch apply
出现success的提示就全部安装成功.

补丁打完后,还要relinked一个.mk文件
$cd $ORACLE_HOME/network/lib
$make -f ins_oemagent.mk install
之后就可以启动Agent服务了.

4, 最后执行 $dbca  建oracle数据库
注意:在SID处指定为oradb (与 ORACLE_SID=oradb)中的值一致.
点击OK,然后退出即可,正常登陆并启动数据库的操作。
$ lsnrctl start
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.4.0 - Production on Sat Mar 12 22:58:53 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL>connect / as sysdba
Connected.

SQL> shutdown immediate  关闭数据库
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL>startup;   启动数据库
ORACLE instance started.
Total System Global Area  236000356 bytes
Fixed Size                   451684 bytes
Variable Size             201326592 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
Database opened.

5, oracle服务启动
以root身份进入,编写以下脚本:
vi /etc/init.d/oracle
////////////内容//////////////////
#!/bin/bash
#start and stop the oracle instance
# chkconfig –level 5 --add ora9i
#chkconfig: 345 91 19
# description: starts the oracle listener and instance

export ORACLE_HOME="/opt/ora9/product/9.2.0.4"
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER="oracle"
export ORACLE_SID=oradb

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "oracle startup:cannot start"
exit 1
fi

case "$1" in
start)
#startup the listener and instance
echo -n "oracle startup: "
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "finished"
;;
stop)
# stop listener, apache and database
echo -n "oracle shutdown:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "finished"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: ora9i [start|stop|reload|restart]"
exit 1

esac
exit 0
////////////内容//////////////////
给予执行权限,以root身份运行/etc/rc.d/init.d/oracle start |stop 来管理oracle的启动和停止了。如果要将这个脚本加入到系统中使其可开机运行(不过官方是不建议开机自动运行的,我本人也不建议这样做,你确实需要可以这么做),那么要运行以下命令:chkconfig --level 35 --add oracle
或者以root用户执行如下命令:
#chmod a+x /etc/rc.d/init.d /oracle
#cd /etc/rc.d/rc5.d
#ln -s /etc/rc.d/init.d/oracle S99ora9i
#cd /etc/rc.d/rc0.d
#ln -s /etc/rc.d/init.d/oracle K99ora9i
也可如下自启动oracle9i!
在/etc/rc.d/rc.local中加入如下:
su - oracle -c "/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctl start"
su - oracle -c "/opt/ora9/oracle/product/9.2.0.4/bin/dbstart start"

注意:如果启动不理想,请编写shell scripts:
方法:以我个人习惯为例;;;;;;;;;;

  1. #mkdir /usr/local/syscmf

  2. #vi /usr/local/syscmf/oracle.sh
  3. ////////////////////////文件内容开始///////////////////

  4. #!/bin/sh
  5. #modify by mingfu 060404
  6. #oracle run scripts
  7. #run user for oracle
  8. lsnrctl start
  9. expect /usr/local/syscmf/oracle.exp

  10. ////////////////////////文件内容结束///////////////////
  11. #vi /usr/local/syscmf/oracle.exp
  12. ////////////////////////文件内容开始///////////////////
  13. #!/usr/local/bin/expect
  14. #modify by mingfu 060404
  15. #oracle run scripts
  16. set timeout 120
  17. spawn sqlplus \/nolog
  18. expect "SQL\>"
  19. send "conn \/ as sysdba\r"
  20. expect "SQL\>"
  21. send "startup\r"
  22. expect "SQL\>"
  23. send "exit\r"

  24. exit
  25. ////////////////////////文件内容结束///////////////////
  26. #chown oracle /usr/local/syscmf/*
  27. #chgrp oracle /usr/local/syscmf./*
  28. #chmod 755 /usr/local/syscmf/*

  29. 在/etc/rc.local中新增如下内容:
  30. su – oracle /usr/local/syscmf/oracle.sh
  31. 删除原来的:
  32. su - oracle -c "/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctl start"
  33. su - oracle -c "/opt/ora9/oracle/product/9.2.0.4/bin/dbstart start"
  34. [code]
  35. 6, 关于数据库删除重新安装的问题:
  36. 把ORACLE安装目录删除及/etc/ora*.*删除就行了 [code]
  37. #rm –f  /etc/ora*.*
复制代码


7,关于在LINUX中运行管理软件$oemapp

  1. #su – oracle
  2. $oemapp console
复制代码


8, 中文显示不正常解决办法
Oracle目前缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行 alter  database  character  set  ZHS16GBK  ; 来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改sys用户下的PROPS$表的方法,也会给字符集的变更留下很多潜在的问题.

linux下进行如下的操作来修改字符集:

  1. sqlplus /nolog

  2. sql>conn  / as  sysdba

  3. sql>shutdown  immediate

  4. sql>startup  mount

  5. sql>alter  system  enable  restricted  session  ;

  6. sql>alter  system  set  JOB_QUEUE_PROCESSES=0;

  7. sql>alter  system  set  AQ_TM_PROCESSES=0;

  8. sql>alter  database  open  ;

  9. sql>alter  database  character  set  internal_use  ZHS16GBK  ;

  10. sql>shutdown  immediate

  11. sql>startup
复制代码


这样字符集的修改就完成了(如果你在安装时选择了中文字符集,这里就不用修改了)

LAJO服务环境配置完毕.

[ 本帖最后由 foway 于 2006-5-29 01:39 编辑 ]

论坛徽章:
0
发表于 2006-05-29 01:44 |显示全部楼层
5.配置LAMP
系统自带安装http+php+mysql软件包,进行配置如下:

Apache配置
修改/etc/httpd/conf/httpd.conf内容如下:

  1. Listen 82
  2. ServerName 127.0.0.1:82
  3. DocumentRoot "/var/www/html"
  4. <Directory "/var/www/html">
复制代码


注意:系统已经有两个httpd服务进程.
用户分别是:xxxx apache
请确保
/usr/local/apache2/bin/apachectl start
/etc/init.d/httpd start
此两个服务自启动.

Mysql设置

Mysql>create ftpdb;

Mysql>grant all privileges on ftpdb.* to ftpuser@localhost identified by “xxxx”;

Mysql>grant all privileges on *.* to root@’%’ identified by “xxxx”;

Mysql>flush privileges;

Mysql>exit
请确保
/etc/init.d/mysqld  start
此服务自启动.


LAMP服务环境配置完毕.

7.配置FTP
配合工程实施与建立ftp帐号相关联,方便维护与管理,我这里选择了Proftpd与数据库结合的方式来实现的.

创建Ftpdb结构:

  1. Mysql>use ftpdb;

  2. Mysql> CREATE TABLE `ftpgroup` (
  3. `groupname` varchar(16) NOT NULL default '',
  4. `gid` smallint(6) NOT NULL default '5500',
  5. `members` varchar(16) NOT NULL default '',
  6. KEY `groupname` (`groupname`)
  7. ) ;

  8. Mysql> CREATE TABLE `ftpquotalimits` (
  9. `name` varchar(30) default NULL,
  10. `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  11. `per_session` enum('false','true') NOT NULL default 'false',
  12. `limit_type` enum('soft','hard') NOT NULL default 'soft',
  13. `bytes_in_avail` float NOT NULL default '0',
  14. `bytes_out_avail` float NOT NULL default '0',
  15. `bytes_xfer_avail` float NOT NULL default '0',
  16. `files_in_avail` int(10) unsigned NOT NULL default '0',
  17. `files_out_avail` int(10) unsigned NOT NULL default '0',
  18. `files_xfer_avail` int(10) unsigned NOT NULL default '0'
  19. ) ;

  20. Mysql> CREATE TABLE `ftpquotatallies` (
  21. `name` varchar(30) NOT NULL default '',
  22. `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  23. `bytes_in_used` float NOT NULL default '0',
  24. `bytes_out_used` float NOT NULL default '0',
  25. `bytes_xfer_used` float NOT NULL default '0',
  26. `files_in_used` int(10) unsigned NOT NULL default '0',
  27. `files_out_used` int(10) unsigned NOT NULL default '0',
  28. `files_xfer_used` int(10) unsigned NOT NULL default '0'
  29. ) ;

  30. Mysql> CREATE TABLE `ftpuser` (
  31. `id` int(10) unsigned NOT NULL auto_increment,
  32. `userid` varchar(32) NOT NULL default '',
  33. `passwd` varchar(32) NOT NULL default '',
  34. `uid` smallint(6) NOT NULL default '5500',
  35. `gid` smallint(6) NOT NULL default '5500',
  36. `homedir` varchar(255) NOT NULL default '',
  37. `shell` varchar(16) NOT NULL default '/sbin/nologin',
  38. `count` int(11) NOT NULL default '0',
  39. `accessed` datetime NOT NULL default '0000-00-00 00:00:00',
  40. `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  41. PRIMARY KEY  (`id`)
  42. ) ;

  43. Mysql> INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES("5dxc", "5500", "xxxx");

  44. Mysql>INSERT INTO `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");

  45. Mysql> INSERT INTO `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");

  46. Mysql> INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES("1", "test", "test", "5500", "5500", "/site", "/sbin/nologin", "0", "0000-00-00 00:00:00", "0000-00-00 00:00:00");
复制代码

配置proftp:

  1. #tar xzvf proftpd-1.3.0rc5.tar.gz
  2. #cd proftpd-1.3.0rc5
  3. #./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

  4. #make&&make install

  5. #mv /etc/local/proftpd/etc/proftpd.conf  /etc/local/proftpd/etc/proftpd.confbak

  6. #vi /etc/local/proftpd/etc/proftpd.conf
  7. ////////////////////////文件内容///////////////////
  8. # This is a basic ProFTPD configuration file (rename it to
  9. # 'proftpd.conf' for actual use.  It establishes a single server
  10. # and a single anonymous login.  It assumes that you have a user/group
  11. # "nobody" and "ftp" for normal operation and anon.

  12. #ServerName "ProFTPD Default Installation"
  13. ServerName "Mingfu's ftp"
  14. ServerType standalone
  15. DefaultServer on

  16. # Port 21 is the standard FTP port.
  17. Port 21

  18. # Umask 022 is a good standard umask to prevent new dirs and files
  19. # from being group and world writable.
  20. Umask 022

  21. # To prevent DoS attacks, set the maximum number of child processes
  22. # to 30.  If you need to allow more than 30 concurrent connections
  23. # at once, simply increase this value.  Note that this ONLY works
  24. # in standalone mode, in inetd mode you should use an inetd server
  25. # that allows you to limit maximum number of processes per service
  26. # (such as xinetd).
  27. MaxInstances  100
  28. MaxLoginAttempts  3

  29. # Set the user and group under which the server will run.
  30. User nobody
  31. Group nobody


  32. # To cause every FTP user to be "jailed" (chrooted) into their home
  33. # directory, uncomment this line.
  34. #DefaultRoot ~
  35. DefaultRoot ~

  36. #put the proftpd log files in /var/log/ftp.syslog
  37. #SystemLog /var/log/ftp.syslog
  38. SystemLog /var/log/xxxx/ftp.syslog

  39. #TransferLog log files
  40. TransferLog /var/log/xxxx/ftp.transferlog

  41. MaxHostsPerUser 1 "Sorry, you may not connect more than one time 1."
  42. MaxClientsPerUser 13 "Only one such user at a time 2."
  43. MaxClientsPerHost 20 "Sorry, you may not connect more than one time 3."

  44. #setup the Restart
  45. AllowRetrieveRestart on
  46. RootLogin off
  47. RequireValidShell off
  48. TimeoutStalled 600
  49. MaxClients 2000
  50. AllowForeignAddress on
  51. AllowStoreRestart on
  52. ServerIdent off
  53. DefaultRoot ~ xxxx

  54. #Slow logins
  55. UseReverseDNS off
  56. IdentLookups   off
  57. #IdentLookups and tcpwrappers ***


  58. # Normally, we want files to be overwriteable.
  59. AllowOverwrite on

  60. TimeoutIdle 600

  61. SQLAuthTypes Backend Plaintext

  62. SQLAuthenticate users* groups*

  63. # databasename@host database_user user_password
  64. #SQLConnectInfo ftpdb@localhost proftpd password
  65. SQLConnectInfo ftpdb@localhost ftpuser xxxx
  66. SQLUserInfo ftpuser userid passwd uid gid homedir shell
  67. SQLGroupInfo ftpgroup groupname gid members
  68. SQLHomedirOnDemand on

  69. # Update count every time user logs in
  70. SQLLog PASS updatecount
  71. SQLNamedQuery updatecount UPDATE "count=count+1,accessed=now() WHERE userid='%u'" ftpuser
  72. # Update modified everytime user uploads or deletes a file
  73. SQLLog STOR,DELE modified
  74. SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

  75. QuotaEngine on
  76. QuotaDirectoryTally on
  77. QuotaDisplayUnits kb
  78. QuotaShowQuotas on
  79. QuotaLog "/var/log/quota"

  80. SQLNamedQuery get-quota-limit SELECT "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 FROM ftpquotalimits WHERE name = '%{0}'AND quota_type = '%{1}'"

  81. SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"

  82. SQLNamedQuery update-quota-tally UPDATE "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} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies

  83. SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies

  84. QuotaLimitTable sql:/get-quota-limit
  85. QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

  86. ////////////////////////文件内容///////////////////
复制代码


在/etc/rc.local文件中新增

  1. /usr/local/proftpd/sbin/proftpd &
复制代码


LPM配置完毕.
注意:以后添加ftp帐号只需操作ftpuser表添加相应字段.用户磁盘限额操作ftpquotalimits表添加相应字段.
Mysql管理win工具推荐:mysql-front
其中远程连接帐号:
User:root
Host:IP
Pswd:xxxx
(与grant all privileges on *.* to root@’%’ identified by “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

[ 本帖最后由 foway 于 2006-5-29 01:46 编辑 ]

论坛徽章:
0
发表于 2006-05-29 01:49 |显示全部楼层
9.安全策略
下面是一个简易有效的防火墙设置,只要没有固定IP来入侵,服务器均可正常访问.
因此服务器上线后需要提取服务器通信状态信息.这里服务器已进配置好LAMP环境,因此系统监控请安装CACTI(http://www.cacti.net)软件来监控.
关于它的安装方法比较简单,这里不一一说明了.

还要时时将#netstat –na|grep SYN的结果中连续15个相同的伪连接给DJOP出系统通信间道.
当有这样的入侵连接时….
#iptables –A …………..djop(注意请不要将这个写入到iptables文件中)

下面是iptables文件的所有内容:

  1. #cat /etc/sysconfig/iptables
  2. ////////////////////文件内容////////////////////
  3. # Firewall configuration written by system-config-securitylevel
  4. # Manual customization of this file is not recommended.
  5. *filter
  6. :INPUT ACCEPT [0:0]
  7. :FORWARD ACCEPT [0:0]
  8. :OUTPUT ACCEPT [0:0]
  9. :RH-Firewall-1-INPUT - [0:0]
  10. -A INPUT -j RH-Firewall-1-INPUT
  11. -A FORWARD -j RH-Firewall-1-INPUT
  12. -A RH-Firewall-1-INPUT -i lo -j ACCEPT
  13. -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
  14. -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
  15. -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
  16. -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
  17. -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
  18. -A RH-Firewall-1-INPUT -p udp -s 0/0 -d 0/0 --dport 177 -j ACCEPT

  19. #modify by mingfu 060404
  20. #Please do not modify the content below

  21. #ACK FIN SYN
  22. -A RH-Firewall-1-INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

  23. #port scan
  24. # NMAP FIN/URG/PSH
  25. -A RH-Firewall-1-INPUT -i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP

  26. # Xmas Tree
  27. -A RH-Firewall-1-INPUT -i eth0 -p tcp --tcp-flags ALL ALL -j DROP

  28. # Another Xmas Tree
  29. -A RH-Firewall-1-INPUT -i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

  30. # Null Scan(possibly)
  31. -A RH-Firewall-1-INPUT -i eth0 -p tcp --tcp-flags ALL NONE -j DROP

  32. # SYN/RST
  33. -A RH-Firewall-1-INPUT -i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

  34. # SYN/FIN -- Scan(possibly)
  35. -A RH-Firewall-1-INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

  36. #!--syn
  37. -A RH-Firewall-1-INPUT -p tcp ! --syn -m state --state NEW -j DROP

  38. #Dos
  39. -A RH-Firewall-1-INPUT -p tcp --dport 80 -m limit --limit 10/second --limit-burst 300 -j ACCEPT

  40. #sync flood

  41. -N synfoold
  42. -A synfoold -p tcp --syn -m limit --limit 1/s -j RETURN
  43. -A synfoold -p tcp -j REJECT --reject-with tcp-reset
  44. -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -j synfoold

  45. -N ping
  46. -A ping -p icmp --icmp-type echo-request -m limit --limit 1/second -j RETURN
  47. -A ping -p icmp -j REJECT
  48. -I RH-Firewall-1-INPUT -p icmp --icmp-type echo-request -m state --state NEW -j ping

  49. #-A RH-Firewall-1-INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
  50. #-A RH-Firewall-1-INPUT -p icmp --icmp-type 0 -s 0/0 -j ACCEPT
  51. #-A RH-Firewall-1-INPUT -p icmp --icmp-type 0 -s localip -j DROP
  52. #-A RH-Firewall-1-INPUT -p icmp --icmp-type 8 -s localip -j DROP

  53. #all ports

  54. -A RH-Firewall-1-INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
  55. #FTP
  56. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
  57. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
  58. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 32800:34000 -j ACCEPT
  59. #MAIL
  60. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
  61. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 113 -j ACCEPT
  62. #SSH
  63. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
  64. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 922 -j ACCEPT
  65. #WEB
  66. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
  67. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 82 -j ACCEPT
  68. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 8088 -j ACCEPT
  69. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
  70. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
  71. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 4443 -j ACCEPT
  72. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT
  73. #DNS
  74. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
  75. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
  76. #DATABASE
  77. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
  78. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
  79. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 8009 -j ACCEPT
  80. #VNC
  81. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW -m tcp -p tcp --dport 5801: -j ACCEPT
  82. #ICMP
  83. -A RH-Firewall-1-INPUT -i eth0 -j REJECT --reject-with icmp-host-prohibited

  84. -A RH-Firewall-1-INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
  85. -A RH-Firewall-1-INPUT -i eth0 -m state --state NEW,INVALID -j DROP

  86. COMMIT
  87. ////////////////////文件内容////////////////////
复制代码


在/etc/rc.local中新增如下内容:


  1. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

  2. echo 1 >/proc/sys/net/ipv4/tcp_syncookies

  3. echo "1" > /proc/sys/net/ipv4/tcp_syn_retries

  4. echo "1" > /proc/sys/net/ipv4/tcp_synack_retries

  5. echo 8192 >/proc/sys/net/ipv4/tcp_max_syn_backlog
复制代码

其中8192=1024*4*2.更多详情请查阅/proc相关文献介绍

关于获取netstat –na|grep SYN_RECV 与TIME_WAIT的脚本:这里我无法写下来。只是原理和主要的代码告诉大家:
使用 netstat 来统计重复的连线 IP,将这些来自同一 IP 的连线统计一下,
如果超过一个设定值(您自己选择的!),那麽该 IP 就会被iptables 机制挡掉了!
利用shell script 结合iptables来完成(其中用到的linux命令主要有:netstat awk cut sort)。。。

shell脚本中部分主要代码:

  1. basedir="/usr/local/syscmf"
  2. #=== Part A, about the TIME WAIT signle ===#
  3. netstat -an|grep 80|grep TIME| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| \
  4. awk '{if ($1 >= 12) print $2}' > $basedir/netstata
  5. sleep 14s
  6. netstat -an|grep 80|grep TIME| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| \
  7. awk '{if ($1 >= 12) print $2}' > $basedir/netstatb
  8. sleep 14s
  9. netstat -an|grep 80|grep TIME| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| \
  10. awk '{if ($1 >= 12) print $2}' > $basedir/netstatc
  11. cat $basedir/netstat1 $basedir/netstat2 $basedir/netstat3 | sort | uniq -c | \
  12. awk '{ if ( $1 == 3 ) print $2 }' > $basedir/netstat-wait.now
  13. denyip_netstat=`cat $basedir/netstat-wait.now`

  14. #=== Part B, about the SYN RECV signle ===#
  15. netstat -an|grep 80|grep SYN| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| \
  16. awk '{if ($1 >= 12) print $2}' > $basedir/netstat1
  17. sleep 12s
  18. netstat -an|grep 80|grep SYN| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| \
  19. awk '{if ($1 >= 12) print $2}' > $basedir/netstat2
  20. sleep 12s
  21. netstat -an|grep 80|grep SYN| awk '{print $5}'| cut -d':' -f1| sort |uniq -c| \
  22. awk '{if ($1 >= 12) print $2}' > $basedir/netstat3
  23. cat $basedir/netstat1 $basedir/netstat2 $basedir/netstat3 | sort | uniq -c | \
  24. awk '{ if ( $1 == 3 ) print $2 }' > $basedir/netstat-syn.now
  25. denyip_netstat=`cat $basedir/netstat-syn.now`
复制代码


关于防止别人来猜测ssh用户登录的密码,修改默认的ssh端口22为922(与防火墙中规则指定的922相一致.) 修改方法如下:
#vi /etc/ssh/sshd_config
修改:
#Port 22
为:
Port 922

注意:修改后的ssh连接方法:ssh user@ip –p 922
如果你不想指定-p参数,请修改
/etc/ssh/ssh_config的
#Port 22
为:
Port 922


建议将提供服务的服务器中的ssh服务端与客服端的ssh通信端口都修改……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP