CentOS下源码安装Apache+SVN服务器实现版本控制

来源:互联网 发布:sql function函数 编辑:程序博客网 时间:2024/05/21 10:15
首先,准备各种源码安装包,其中包括SVN的源码安装包和Apache的源码安装包。这里需要声明的是Apache HTTP服务器所必须的,但是如果像俺这样需要远程访问以及网页访问SVN的话就必须安装HTTP服务器了。当然,既然是HTTP服务器也没必要一定选Apache,但是考虑到它所能提供的各种功能,Apache基本上还是常规选择。以下是源码安装包的清单:
1)SVN安装包:subversion-1.6.20.tar.gz和subversion-deps-1.6.20.tar.gz,下载地址:http://subversion.apache.org/;
2)Apache HTTP服务器安装包:httpd-2.2.23.tar.gz,下载地址:http://httpd.apache.org/;
3)附件安装包:apr-1.4.6.tar.gz和apr-util-1.5.1.tar.gz,下载地址:http://apr.apache.org/。
其次,解压缩源码安装包,编译安装软件。以下给出所有软件的安装过程,这里需要注意各个软件在安装时的./configure选项。
1)安装apr。
tar zxvf apr-1.4.6.tar.gz
cd apr-1.4.6
./configure --prefix=/usr/local/apr
make
make install
2)安装apr-util。
tar zxvf apr-util-1.5.1.tar.gz
cd apr-util-1.5.1
./configure --with-apr=/usr/local/apr
make
make install
3)安装apache。
tar zxvf httpd-2.2.23.tar.gz
cd httpd-2.2.23
./configure --prefix=/usr/local/apache2 --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config
make
make install
4)安装SVN。
tar zxvf subversion-1.6.20.tar.gz
tar zxvf subversion-deps-1.6.20.tar.gz(subversion-deps中的目录和文件会自动解压到subversion-1.6.20目录下,所以就不用费心再去找subversion-deps-1.6.20这个目录了
./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr
make
make install
在以上编译过程中可能会出现几种情况导致无法编译通过:
1)可能出现configure: error: Subversion requires SQLite,该问题的解决需访问SQLite官网下载到最新的SQLite版本如:sqlite-amalgamation-3.6.13.tar.gz,解压缩进入文件夹sqlite-amalgamation找到sqlite3.c将其复制subversion-1.6.20/sqlite-amalgamation/sqlite3.c即可;
2)也有可能在编译时缺少zlib编译不过,这就需要先编译zlib;
    3)还有可能出现/usr/bin/ld: cannot find -lexpat collect2: ld returned 1 exit status,这就需要安装expat-devel软件包,yum install expat-devel或者rpm -ivh expat-devel-2.0.1-9.1.el6.x86_64.rpm,后者的expat-devel-2.0.1-9.1.el6.x86_64.rpm可以在如下链接找到下载地址:expat-devel RPM包下载地址。
    再次,配置Apache。配置方法就是修改Apache的配置文件/usr/local/apache2/conf/httpd.conf,具体配置方法如下:
    1)打开并查看配置文件。
    vi /usr/local/apache2/conf/httpd.conf(看到以下两行时说明Apache安装是成功的)
    LoadModule dav_svn_module modules/mod_dav_svn.so 
    LoadModule authz_svn_module modules/mod_authz_svn.so
    2)如果没有以上两句,查看 /usr/local/apache2/modules/下有没有mod_dav_svn.so和mod_authz_svn.so有则在# LoadModule foo_module modules/mod_foo.so下面加入以上两句。
    3)如果有下面一句就用#注释掉。
    # LoadModule foo_module modules/mod_foo.so
    4)定义Apache访问SVN配置,在/usr/local/apache2/conf/httpd.conf中任意位置添加如下内容:
    <Location /svn>
    DAV svn
    SVNParentPath /data/svn (SVN服务器的根目录路径)
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile /home/svn/svnpasswd (SVN服务器的本地访问控制文件路径)
    AuthzSVNAccessFile /home/svn/svnaccessfile (SVN服务器的项目控制文件路径)
    Require valid-user
    </Location>
    5)定义Apache的服务器名称,即在/usr/local/apache2/conf/httpd.conf中任意位置添加如下内容:
    ServerName 服务器IP地址:80 (如俺的Linux服务器ip地址是10.2.45.107,那么配置就是:ServerName 
10.2.45.107:80
    再次,配置SVN服务器,主要内容包括创建SVN服务器的根目录路径以及生成上面所配置的用户管理文件和访问权限文件。
    1)创建SVN服务器的根目录。
    mkdir -p /home/svn/
    2)创建本地访问控制文件,添加用户admin的用户名和密码。
    /usr/local/apache2/bin/htpasswd -c /home/svn/svnpasswd admin (第一次创建本地访问控制文件时需要加 -c 参数,表示创建该文件,之后不再加该参数)
    执行以上命令后需要用户键入amdin的密码,该密码默认采用MD5加密
    3)创建本地项目控制文件,添加访问项目的用户组、用户以及访问权限,因为上面仅添加了admin用户,所以这里只添加amdin用户组的访问权限,内容如下:
    vi /home/svn/svnaccessfile
    [groups]
    #<groupname1>=<username1>,<username2>
    admin=admin (配置admin用户组包含用户admin)
    #[<versionLib>:projectName/directory]
    #@<groupsname>=<authorities>
    #<username>=<authorities>
    [/]
    @admin = rw (指定admin用户组成员可以读写根目录所有应用)
    最后,测试SVN连接,其中首先创建一个代码库repos,然后通过浏览器访问该代码库。
    1)创建一个新的代码库repos。
    svnadmin create /data/svn/repos
    2)启动Apache。
    /usr/local/apache2/bin/apachectl start
    3)在自己的客户端机器的浏览器中访问代码库。
    http://10.2.45.107/svn/repos (出现需要输入用户名和密码的登录框就说明SVN服务器安装配置成功了!)
    当然也有可能出现无法连接的情况,俺比较点背儿,就遇到这个问题了,这可能是两个原因导致的:其一,Apache配置没成功,需要重新配置,关于这方面的资料网上有很多,此处就不赘述了;其二,Linux服务器的防火墙iptables把TCP协议的80端口给关闭了,只要打开80端口就可以了,打开命令:iptables -I INPUT -p tcp --dport 80 -j ACCEPT。
1 0
原创粉丝点击