Linux(CentOS6.3 x64) 安装配置Apache2.4.3 + SVN1.7 + MySQL完整版

来源:互联网 发布:甜蜜蜜知乎 编辑:程序博客网 时间:2024/06/03 22:48

 首先下载将要用的软件

    apr, apr-util: http://apr.apache.org/

    pcre: http://www.pcre.org/

    zlib: http://www.zlib.net/

    sqlite: http://www.sqlite.org/

   编译安装上述软件, 然后继续

 

2. 开始安装Apache

  检查系统是否已安装了Apache, 有的话先卸载: yum remove httpd

  前往Apache官方网站下载: http://httpd.apache.org/

  解压:tar -xvf httpd-x.x.x.tar

  进入httpd-x.x.x,  执行 

./configure --prefix=指定Apache将要被安装到的目录                               --with-apr=apr安装目录                              --with-apr-util=apr-util安装目录                              --with-zlib=zlib安装目录                              --with-pcre=pcre安装目录

  如果执行上述命令提示还缺少依赖软件则自己再下载加上,我在Red Hat 5.5, Ubuntu12, CentOS 6.3上测试是没问题了。 

    编译: 

make



   安装: 

make install


  如果没有错误发生。至此,Apache就算安装完成了,假设您已经安装到了Apache_Home目录。

  测试一下Apache是否安装成功,

  进入Apache_Home/bin, 

  启动Apache服务器:

sudo apachectl restart

 

  浏览器访问: http://localhost,  如果能打开则Apache安装成功。

 

3. 安装Subversion

  前往Subversion官网下载: http://subversion.apache.org/download/

  解压:tar -xvf subversion-x.x.x.tar

  进入suversion-x.x.x, 执行 

./configure --prefix=指定Subversion将要被安装到的目录               --with-apr=apr安装目录              --with-apr-util=apr-util安装目录              --with-zlib=zlib安装目录              --with-sqlite=sqlite安装目录              --with-apxs=Apache_Home/bin/apxs      


   注意这句是SVN与Apache整合的关键: --with-apxs=Apache_Home/bin/apxsapache ,  不加上不会安装SVN的modules到Apache

   编译: 

make


   安装: 

make install


   如果没有错误发生, 那么Subversion就算安装完成了, 假设您的Subversion安装在Svn_Home目录

   可以测试一下SVN:

           进入Svn_Home/bin, 执行svn, svnadmin命令试试,没问题就可以跳过了。

                      我的64位Linux操作系统出现: /usr/lib64/libz.so.1: no version information available (required by ....) 错误, 原因是zlib1.2.3的版本有问题, 需要升级即可。

                      解决办法: su使用root帐号, 执行删除命令:rm /lib64/libz.so.1  /lib64/libz.so.1.2.3, 

                                                                      复制文件: cp /ZLib_Home/lib/libz.so.1 /lib64/libz.so.1

                                                                      复制文件: cp /Zlib_Home/lib/libz.so.1.x.x /lib64/libz.so.1.x.x

           

 

4. 配置Apache加载SVN

   执行: vi apache安装目录/conf/httpd.conf

    将
       
 #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so

    修改为:

        

 LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_module modules/mod_dav.so

    完了再看看apache svn的相关模块有没有加载!如下!(没有则手动加上)
    
LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so

 

 

5. 新建版本仓库, 并由Apache管理

    创建版本仓库

   
     svnadmin create /Program/Server/subversion/repos/javaee        --用于存储JavaEE项目的仓库     svnadmin create /Program/Server/subversion/repos/javase        --用于存储JavaSE项目的仓库     svnadmin create /Program/Server/subversion/repos/android --用于存储Android项目的仓库

    执行上述三条命令,创建了三个svn仓库,目录可以改为你本机的目录。  注意三个仓库父文件夹要相同。

 

   执行命令:  vi apache安装目录/conf/httpd.conf

   在文件末尾加上
  
  <Location/svn>        #意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库                      DAV svn             # 告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块                                                    SVNListParentPath on           SVNParentPath /Program/Server/subversion/repos        #告诉Subversion在目录/Program/Server/subversion/repos  下寻找版本库;只有一个版本仓库就用SVNPath, 直接指向仓库具体目录。           AuthType Basic          #启用基本的验证,使用用户名/密码验证           AuthName "please input username/password"         # 弹出用户验证对话框时的提示信息           AuthUserFile  /Program/Server/subversion/repos/passwd            #passwd问密码和用户文件,用来验证用户的用户名及密码           AuthzSVNAccessFile /Program/Server/subversion/repos/access          #权限控制文件,限定各个用户或组在版本库中目录的访问权限           Require valid-user                             #限定用户只有输入正确的用户名及密码后才能访问这个路径    </Location>

 
 
6. 用户权限管理
   创建passwd文件
     AuthUserFile 指向的是passwd的策略文件, 系统用户账户密码保存该文件里
    前往apache httpd安装目录
    bin\htpasswd -c passwd<username>       
    比 如: bin\htpasswd
-c /Program/Server/subversion/repos/passwd admin
    命令分析:
    c:\svn\passwd 表示会在/Program/Server/subversion/repos/passwd 目录下创建一个passwd文件
    admin 表示用户名
    要添加更多用户可以htpasswd /Program/Server/subversion/repos/passwd <username>
 
 
 
 创建access文件
  AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定。
[groups]committers = paulex, richarddevelopers = jimmy, michel, spark, sean   [/]* = r@committers = rw    [javaee:/]@developers = rw    [javase:/]tony = rw    [android:/]* = @committers= r
使用 SVNParentPath 代替 SVNPath 来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。例如上例中 tony 将对所有版本库里的 /tags 目录具有读写权限。如果要对具体每个版本库配置,用如下的语法: 
[groups]    project1_committers = paulex, richard     project2_committers = jimmy, michel, spark, tony, Robert  [repos1:/]  * = r  @ project1_committer = rw  [repos2:/]  * = r  @ project2_committer = rw

这样项目1的 project1_committer 组只能对 repos1 版本库下的文件具有写权限而不能修改版本库 repos2 ,同样项目2的 project2_commiter 组也不能修改 repos1 版本库的文件。

7.  用MySQL认证Subversion
一般情况下,subversion的用户密码文件是以文本文件形式存放在文件系统中的。出于安全性的需要或者单点登陆等可扩展性的考虑,文本文件的管理方式都不能满足需求了。通过 Apache 的 module_auth_mysql 模块,我们可以用 MySQL 来保存用户信息。该模块的主页在 http://modauthmysql.sourceforge.net/,你也可以在 http://modules.apache.org/ 找到它的发行版本。安装方法同其它 Apache 的模块一样,拷贝至 modules 目录并在 httpd.conf 文件中添加如下语句: 
LoadModule mysql_auth_module modules/mod_auth_mysql.so
相应的 Location 区域改写为:  
<Location /repos/> AuthName "MySQL Testing" AuthType Basic AuthMySQLHost db.kysf.net AuthMySQLUser svnadmin AuthMySQLPassword PaSsWoRd    #必填项 AuthMySQLDB svn AuthMySQLUserTable users AuthMySQLNameField user_name AuthMySQLPasswordField user_password AuthMySQLGroupField user_group AuthMySQLPwEncryption none    #必填项 require valid-user</Location>
其中,
AuthMySQLHost db.kysf.netAuthMySQLUser svnadminAuthMySQLDB svnAuthMySQLUserTable usersAuthMySQLNameField user_nameAuthMySQLPasswordField user_passwordAuthMySQLGroupField user_group

这7项可以省略。如果省略系统采用默认的值,其默认值如下:

默认值:

 AuthMySQLHost localhost  AuthMySQLUser ODBC  AuthMySQLDB test  AuthMySQLUserTable user_info  AuthMySQLNameField user_name  AuthMySQLPasswordField user_password  AuthMySQLGroupField user_group
然后在 mysql 中添加名为 svn 的数据库,并建立 users 数据表: 
 create database svn;  use svn;  CREATE TABLE users (  user_name CHAR(30) NOT NULL,  user_password CHAR(20) NOT NULL,  user_group CHAR(10),  PRIMARY KEY (user_name)  );

在 users 表中插入用户信息 
insert into users values('username','password','group');
重新启动 Apache,在访问版本库的时候 Apache 就会用 mysql 数据表中的用户信息来验证了。

8. 集成用户文件(UserFile)认证和MySQL数据库认证

更改Location 区域:

<Location /repos/> DAV svn SVNListParentPath on #SVNPath e:/svn/repos1 SVNParentPath e:/svn AuthzSVNAccessFile E:/usr/Apache2.2/bin/accesspolicy.conf Satisfy Any Require valid-user AuthType Basic AuthName "MySQL Auth" AuthMySQLEnable on AuthMySQLPwEncryption md5 AuthMySQLAuthoritative off AuthMySQLHost localhost AuthMySQLUser svnslt AuthMySQLPassword list AuthMySQLDB svn_auth AuthMySQLUserTable users AuthMySQLNameField user_name AuthMySQLPasswordField user_passwd AuthMySQLGroupTable groups AuthMySQLGroupField user_group AuthUserFile E:/usr/Apache2.2/bin/passwd.conf</Location>

说明:

既可以用数据库中的用户名认证,也可以用文件中的用户名认证。如果数据库认证失败,就由用户文件认证。不过最好把用户文件和数据库中的用户名设为一致,防止单点失败。


 

原创粉丝点击