网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.oracle 10G在fedora2上的安装.
.Oracle10g + Solaris9 for x86 +.
.微软向SAP甲骨文正式宣战.
.如何使用oracle的decode函数进行.
.关于用户进程,服务进程,后台进.
.oracle与unix时间的转换.
.双机环境下的Oracle数据库.
.脱机备份与恢复实战.
.按照顺序或依赖关系重新编译失效.
.FGA 策略(细粒度审计).
.如何移动表来达到减小数据文件大.
.两个有用Oracle运算:intersect和.
.[转载]Oracle数据库性能终极优化.
.数据库手册:Oracle维护常用SQL语.
.分页技术:Oracle \rownum\新发现.
.如何查看各个表空间占用磁盘情况.
.配置好oms不能搜索到数据库节点的.
.数据库名DB_name实例名instance全.
.Oracle弱智900问六.
.ORACLE在HP-UX下的系列问题处理(.

CVS使用探讨

发表日期:2008-2-9



  作者: lhl
  
  假设:
  cvsroot user:cvsroot home=/home2/cvsroot/cvsroot
  cvs group:cvs
  
  1:安全
  
  #groupadd cvs
  #mkdir /home2/cvsroot#注重:/home2/cvsroot为root所有
  #useradd -g cvs -G cvs -d /home2/cvsroot/cvsroot cvsroot
  
  /***未经实验**/
  #mv /usr/bin/cvs /usr/bin/cvs.real
  #cat > /usr/bin/cvs
  #!/bin/sh
  umask 2# Or whatever your site standard is.
  exec /usr/bin/cvs.real ${1+"$@"}
  ^D
  /*************/
  
  2:多仓库
  
  注重,我们用cvsroot仅仅是用来治理,所以,不要在它$HOME下面创建任何仓库
  另外,cvsroot用户的初始环境不应该包含非空的$CVSROOT.
  使用cvsroot来进行的任何治理工作都指明CVSROOT是一个好的习惯.
  
  OK,开始给单个项目建仓库
  
  假设有两个项目,project1,project2,希望单独存放,便于治理
  
  #mkdir /home2/cvsroot/pro1
  #mkdir /home2/cvsroot/pro2
  #chown cvsroot.cvs /home2/cvsroot/pro1
  #chown cvsroot.cvs /home2/cvsroot/pro2
  #chmod 2775 /home2/cvsroot/pro1
  #chmod 2775 /home2/cvsroot/pro2
  (更高的安全要求则$chmod 2770 /home2/cvsroot/cvsroot/pro1)
  
  OK,开始建立仓库
  
  #su - cvsroot
  $cvs -d /home2/cvsroot/pro1 init
  $cvs -d /home2/cvsroot/pro2 init
  $chmod 2775 /home2/cvsroot/pro1
  $chmod 2775 /home2/cvsroot/pro2
  
  修改启动文件
  
  service cvspserver
  {
  disable = no
  flags= REUSE
  socket_type= stream
  wait= no
  user= root
  bind= 192.168.0.1
  only_from= 192.168.0.0/24
  server= /usr/bin/cvs
  server_args= -f --allow-root=/home2/cvsroot/pro1 --allow-root=/home2/cvsroot/pro2 pserver
  log_on_failure += USERID
  }
  
  /********技巧*************/
  
  由于xinetd的server_args长度限制,当你想运行很多的单个仓库的时候,可以这么做,
  
  #vi /etc/xinetd.d/cvspserver
  service cvspserver
  {
  disable= no
  flags= REUSE
  socket_type= stream
  wait= no
  user= root
  bind= 192.168.0.1
  only_from= 192.168.0.1.0/24
  server= /home2/cvsroot/cvs.run
  log_on_failure += USERID
  }
  
  :wq
  
  然后写脚本/home2/cvsroot/cvs.run
  
  #vi /home2/cvsroot/cvs.run
  #!/bin/bash
  /usr/bin/cvs -f \
  --allow-root=/home2/cvsroot/pro1 \
  --allow-root=/home2/cvsroot/pro2 \
  --allow-root=/home2/cvsroot/pro3 \
  --allow-root=/home2/cvsroot/pro4 \
  --allow-root=/home2/cvsroot/pro5 \
  --allow-root=/home2/cvsroot/pro6 \
  pserver
  
  :wq
  
  #chmod +x /home2/cvsroot/cvs.run
  
  #service xinetd restart
  
  OK!
  
  /*************************/
  
  修改不同仓库的策略
  
  #su - cvsroot
  
  $eXPort CVSROOT=/home2/cvsroot/pro1
  $cvs co CVSROOT
  $cd CVSROOT
  $vi config
  # Set this to "no" if pserver shouldn't check system users/passWords
  SystemAuth=no
  
  # Put CVS lock files in this Directory rather than directly in the repository.
  LockDir=/var/cache/cvs/pro1
  
  # Set `TopLevelAdmin' to `yes' to create a CVS directory at the top
  # level of the new working directory when using the `cvs checkout'
  # command.
  #TopLevelAdmin=no
  
  # Set `LogHistory' to `all' or `TOFEWGCMAR' to log all transactions to the
  # history file, or a subset as needed (ie `TMAR' logs all write operations)
  LogHistory=TOFEWGCMAR
  
  :wq
  
  $vi loginfo
  ALL (echo %{sVv}; cat) /usr/local/viewcvs-0.9.2/loginfo-handler#SQL checkin
  
  :wq
  
  $cvs commit -m "auth change,log change"
  
  OK,既然不使用系统用户验证,那么我们来创建用户
  /************/
  
  不使用系统帐号的原因是充分保证安全,避免系统帐号直接删除仓库里的文件.
  虽然麻烦,但是很有必要,因为无法保证每一个程序员都对cvs操作很有经验.
  
  在这种情况下,为每一个工程各建一个等效系统用户,此用户应该是cvs组的成员.
  不必有shell.
  (也可以为所有的项目建一个等效用户,私有的cvs Server完全可以这么做,甚至可以
  直接使用cvsroot,呵呵,就是比较危险而已)
  
  #adduser -g cvs -G cvs -s /bin/false -d /home2/cvsroot/pro1 -M cvspro1
  
  /************/
  
  创建一个LockDir(选择/var/cache是因为某些系统放在/var/lock下面有问题)
  #mkdir /var/cache/cvs
  #chown cvsroot.cvs /var/cache/cvs
  #chmod 2775 /var/cache/cvs
  
  #mkdir /var/cache/cvs/pro1
  #chown cvspro1.cvs /var/cache/cvs/pro1
  #chmod 2775 /var/cache/cvs/pro1
  
  创建用户
  
  先清除环境
  $export CVSROOT=
  $cd ~cvsroot
  $rm -rf CVSROOT
  
  直接切换到pro1的仓库下
  
  $cd /home2/cvsroot/pro1
  $cd CVSROOT
  
  
  创建用户hleil
  
  $htpasswd -c passwd hleil
  
  修改passwd成cvs的格式
  
  $vi passwd
  hleil:svcsdasdcvjn:cvspro1
  
  :wq
  
  加入writers组
  
  $echo hleil >>writers
  
  /*****这里有一个问题**********/
  
  假如用户hleil需要writers权限,那么,他绝对不可以出现在readers组中.
  writers,readers,passwd的文件尾空行是必要的.
  等效系统帐号假如不存在,将导致Access failed.
  cvs帐号尽量没有对应的系统帐号,假如有,确保它们的passwd不同.
  
  /******************************/
  
  OK了!

  
  项目pro2同理.
  
  
  3:够建模块化的工程
  
  关于模块化,大家挂在口边也不是一天两天了,这里指的是项目的模块化,不是指具体的程序.
  
  正常的项目开始具体实施之前,必定做好了系统分析和结构设计,当然,像打印"Hello World!"
  这样的"项目"或许不用进行系统分析吧:P,所以也不用麻烦我们辛劳构建的cvs.
  
  软件设计完成之后,各个模块应该也就出来了,在实施之前,我们需要考虑用cvs贯彻设计结果.
  
  cvs的模块不必细化到疯狂的程度,大致按照功能划分并且兼顾工作组就可以了.同一模块必需
  仅有单一工作组负责.
  
  确定模块之后,我们来建立模块.
  
  #su - hleil
  $export CVSROOT=:pserver:hleil@192.168.0.1:/home2/cvsroot/pro1
  $cvs login
  $cvs co CVSROOT
  
  假设有这样的目录结构,
  pro01
  libs
  libs/01
  libs/02
  每个目录下面都有一个初始化文件init(方便import)
  
  我们可以这样定义modules,
  
  $vi CVSROOT/modules
  pro01pro01 & libs
  libs-01-d 01libs/01
  libs-02 -d 02libs/02
  libs-a libs-01 libs-02
  
  :wq
  
  $cvs commit -m "init modules"
  
  倒入目录结构,
  
  $cvs import -m "init checkin" pro01 init start
  
  现在,你的三个小组可以分别工作于pro01,libs-01,libs-02,全部程序只要co pro01就行了.
  
  简单吧:P
  
  4:克隆
  
  构建模块
  
  $export CVSROOT=remote
  $cvs login
  $cvs co CVSROOT/modules
  $cvs logout
  $mv CVSROOT/modules .
  $rm -rf CVSROOT
  $export CVSROOT=local
  $cvs login
  $cvs co CVSROOT/modules
  $cp modules CVSROOT/modules
  $cvs commit -m "clone init modules"
  
  研究目录结构
  所有的 -a 定义的模块不需要checkout
  $sed "/#/d" modules > modules.tmp
  $sed "/^$/d" modules.tmp > modules.tmp2
  $sed s/" "*/" "/g modules.tmp2 > modules.tmp
  $cat modules.tmpsed /-a/d >mymodules
  
  仔细研究目录结构,以便co不含有垃圾的代码
  
  $cp mymodules co-list
  
  编辑co-list,不需要的注释,OK
  
  $sed "/#/d" co-list > co-list.tmp
  $cut -d " " -f 1 co-list.tmp >co-list
  
  OK,此时
上一篇:Data Server Scripts 人气:515
下一篇:Oracle DBA 常用 Script 第二部分(Tuning) 人气:894
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐