背景

  公司要组建一个版本控制服务器,选定了serv-u,初始目的是应用于war级的一些标准组件的版本控制/测试交付/统一对外发布渠道。

  项目过程图:

  

  如果不使用版本控制会出现什么问题?

  War标准组件级

  • 备份多个版本,费空间,费时间

  • 不同版本的组件随意流动,无法进行控制

  • 难于恢复至以前正确版本 容易引发BUG
  • 不同组件冲突,管理混乱

  • 难于追溯问题组件的提交人和提交时间

  • 无法进行权限控制 ,本发布困难

  为什么选择Serv-u

  • 1.流量控制 带宽限制,支持对上传、下载流量,磁盘空间,网络带宽设定限制,从而能够保证用户有限的资源不被大量的FTP 访问用户所消耗。
  • 2.支持文件上传和下载过程中的断点续传。断点续传能有效地降低重复下载。
  • 3.远程管理方便用户从任何地方管理FTP Server,提供工作效率。
  • 4.安全性能出众。安全机制通过严格的权限控制,提供系统安全性和稳定性。在目录和文件层次都可以设置安全防范措施。
  • 5.支持"多宿主"IP站点对需单个服务器支持多IP地址的站点尤为适用。
  • 6.支持匿名用户接入。
  • 7.作为系统服务运行。
  • 8.符合windows 标准的用户界面友好亲切,易于掌握。
  • 9.支持实时的多用户连接,支持匿名用户的访问;
  • 10.通过限制同一时间最大的用户访问人数确保PC 的正常运转。
  • 11.能够为不同用户提供不同设置,支持分组管理数量众多的用户。
  • 12.可自用设置在用户登录或退出时的显示信息,支持具有UNIX 风格的外部链接。
  • 13.可以基于IP 对用户授予或拒绝访问权限。
  • 14.可以监控每个用户的行为日志,变更可追溯

  使用交互图

  

  基本思路:在一台服务器上建立一个仓库,仓库里可以存放许多不同产品的标准组件。由仓库管理员统一管理这些源程序.这样就好象只有一个人在修改文件一样.

搭建FTP版本控制服务器

建立仓库/目录

    仓库及目录创建按照以下规则进行建立

    安装Serv-U 配置“域”即FTP根目录,对应整个公司对外发布目录,由FTP服务器管理员进行管理

    FTP根目录下按照部门,分别建立目录,由部门Leader进行管理

    部门目录下按照部门所涵盖产品,分别建立标准组件目录,由部门组件发布负责人进行管理

    最下级用户,无目录管理权限,可读取下载整个FTP服务器指定可查看目录内容

   

配置Serv-u用户账号

  Serv-U可使用Mysql数据库进行用户管理。 通过Mysql数据库管理用户账号密码,账号密码同公司SVN账户同步,使用SVN同一套账号密码。(账号,姓名,密码,邮箱)。限定了访问来源,同时账户可支持自管理(自己找回密码)。

客户端登录

  Serv-u支持多种登录方式,可以按需进行调整开放

  

配置用户权限规范

配置目录规范需要了解Serv-U的账号管理规则:

    Serv-U有服务器——域——组——用户四级账号管理规则,每一级都有相应的根目录,目录访问规则和虚拟路径的设置。

    Serv-U中所有地方的权限都是由小到大,由上到下。具体到上边的问题就是设置规则的优先级为用户,群组,域,服务器。假如有一个账号在多个地方对某一目录设置了不同的权限,那么首先看用户属性中设置的目录权限,如果其他地方设置于此处有冲突,则以此处为准;如果用户属性没有设置,则看上一级群组中如何设置的,依此类推。

    首先建立一个“域“,并确认FTP根目录

    (可以配置多个域配置同一个FTP根目录区别内外管理,"关于多域的配置可看前面我写的博客)

    FTP的对外发布权限管理:

    用户:所有拥有公司SVN账户人员
    目录:FTP根目录指定可查看子目录及文件
    权限:只读(查看,下载)
    具体操作:建立一个群组--”外网发布只读群组“,公司所有人员权限设置为空,群组涵盖公司所有人员。设置群组根目录及目录只读权限覆盖所有人员权限!则所有拥有公司SVN账户人员可登录看见FTP服务器发布的内容!

           FTP服务器管理员权限:
             建立系统管理员群组,限定系统管理员,配置系统管理权限,将系统管理员拉入对应群组。对FTP目录有完全控制权限。

           部门权限:
            1.部门管理员。建立XX部门管理员群组,限定部门管理员,配置群组管理权限,将部门Leader拉入对应群组

2.部门标准组件发布人员。立XX部门XX组件发布群组,群组限定该标准组件发布人员(通常为两人,测试/开发负责人),配置群组管理权限,将标准组件测试/开发负责人拉入对应群组

 

    网上搜索资料发现有朋友碰到一个问题:弄好后发现把用户加进群组里只能继承根目录和限制的那些设置,群组目录和虚拟目录都不能继承

    实际测试:弄好后把用户加进群组里只能继承根目录、群组目录访问、限制的那些设置,虚拟目录都不能继承

    在创建用户的时候,需要在目录访问里添加一个目录权限,路径输入“%HOME%”,路径名没有双引号,然后权限提供只读权限,点确定后群组目录和全局目录还有虚拟路径的文件夹都能显示出来,因为手动添加用户的时候软件不会给你添加这个默认根目录,所以自己没添加的话就能看不到任何目录,如果用向导创建的话就没这个问题。

    注意:如果你想通过群组“目录访问”限制用户只能访问根目录中的哪些目录,那么需要移除用户目录权限中的“%HOME%”,因为用户继承所有目录后因为用户权限会高于群组权限,用户就可直接看到包含在群组根目录中的所有目录和文件。

关于对目录规范配置的一个列子

  需求:有A.B.C.D.四个文件夹,其中D文件夹下有文件夹D1.D2.D3.D4;有用户组1.2.3.4,其中所有用户组能访问A.B.C,但对D文件夹用户组1只能访问D1,用户组2只能访问D2,用户组3只能说D3,用户组4只能访问D4

  实施:

在用户组的权限设置里面操作。
以用户组1为例。
首先定位路径为A,权限为“只读”。
然后分别定位B和C,权限也是“只读”。
最后选择路径为D1文件夹,权限为“只读”。
OK了。
这时候用户组1一共有4条规则。
其他用户组依照同样的方法,只是最后一步换个文件夹。
PS:所有用户组的根目录均设置为A、B、C、D文件夹的根目录。

日志配置

  Serv-u支持实时日志监控,选择某个已经建立好的具体域后,除了在Activity——“Domain log”下看到部分日志外,还可以在Settings——Messages选显卡下设置登录信息记录到文件。

  

其他配置

  磁盘配额

  为了保证FTP服务器的正常稳定运行,对于开放上传权限的用户有时候有必要开启上传文件大小限制。选中某个群组后,目录访问规则,双击需限制目录,然后在”目录内容的最大尺寸“栏里根据需要填写允许该用户最大使用的磁盘空间即可。

  限制上传、下载速度和最大用户连接数  

  1、可以在本地服务器——限制和设置——限制选项卡下设置一个全局的参数。

  2、可以在某个域下的限制和设置——限制选项卡中设置登录该域的最大用户连接数。

  

  3、针对某个具体用户进行具体设置:可以设置最大上传、下载速度;设置该用户的最大连接数;设置线程数(同一IP的连接数)。

  

  IP访问策略

  Deny Access(拒绝访问):选中此项则下面列出的IP地址被拒绝访问此FTP服务器。

  Allow Access(允许访问):选中此项则只有下面列出的IP地址被允许访问此FTP服务器

最新文章

  1. 枚举/遍历 一个数组NSArray/NSDictionary
  2. php:上传多个文件
  3. python之BIF函数在列表中的应用
  4. Codeforces Round #263 (Div. 2) D. Appleman and Tree(树形DP)
  5. HDU 5742 It's All In The Mind
  6. 《JavaScript高级程序设计》 读书笔记(三)
  7. 如何使用命令提示符进入mysql
  8. Android Service的生命周期
  9. 注册界面设计及实现之(三)SharedPerferences实现数据暂存
  10. oracle表空间查询维护命令大全之三(暂时表空间)史上最全
  11. List之Distinct()
  12. Eclipse 使用技巧合辑
  13. Jquery EasyUI Base基础
  14. Visual Studio 2019 (VS2019)正式版安装 Ankh SVN和VisualSVN插件
  15. 冒泡 MS Azure 不便宜。。。
  16. es query_string 和 match 的区别
  17. Could not get lock /var/lib/dpkg/lock更新问题
  18. 查看SQLServer数据库表占用大小
  19. 【原创】user.id字段
  20. zookeeper 数据节点的增删改查

热门文章

  1. SDWebImage源码阅读-第一篇
  2. 前端单元测试框架-Mocha
  3. 对jsp的初步了解及规范问题(二)
  4. java入门学习笔记之1(类的定义,代码的编译执行)
  5. Python 基础 (单、双引号区别) 不断补充
  6. JS如何实现真正的对象常量
  7. Java学习笔记--监视目录变化
  8. 前端UI组件复用工具
  9. centos6.7下安装mysql5.6.22同时解决中文乱码问题
  10. Java程序设计---io流读取文件内容并将其逆值输出到控制台