码迷,mamicode.com
首页 > Web开发 > 详细

yum搭建svn apache 利用钩子检出到web目录 自动同步

时间:2015-08-02 06:43:46      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:yum搭建svn apache 利用钩子检出到web目录 自动同步

目的: 服务器上搭建svn,和apache,利用svn的 钩子 实现本地修改,同步到web目录下,使用yum装。


一: 关闭selinux,关闭防火墙或者开放相关端口。


[root@meng python]# vim /etc/selinux/config 

[root@meng python]# cat /etc/selinux/config 


# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled  #修改为disabled,其他的#号注释掉

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

#SELINUXTYPE=targeted 


[root@meng python]# setenforce 0 #使配置立即生效

[root@meng python]# service iptables stop #关闭防火墙,或者开放相关端口,

iptables:将链设置为政策 ACCEPT:filter                    [确定]

iptables:清除防火墙规则:                                 [确定]

iptables:正在卸载模块:                                   [确定]


二: 安装apache,

yum install httpd apr apr-util httpd-devel #使用yum安装httpd服务

[root@meng python]# chkconfig httpd on #设置为系统服务,开机自启

[root@meng python]# httpd -version  #查看apache版本

Server version: Apache/2.2.15 (Unix)

Server built:   Oct 16 2014 14:48:21

[root@meng python]# service httpd restart  #启动apache服务

停止 httpd:                                               [失败]

正在启动 httpd:httpd: Could not reliably determine the server‘s fully qualified domain name, using 202.106.199.36 for ServerName

                                                           [确定]

ServerName www.example.com:80


[root@meng python]# vi /etc/httpd/conf/httpd.conf #定位到ServerName www.example.com:80把前面的#号去掉,再重启apache就不会出现Could not reliably determine the server‘s fully qualified domain name, using 202.106.199.36 for ServerName这个问题了。



[root@meng python]# service httpd restart

停止 httpd:                                               [确定]

正在启动 httpd:                                           [确定]


三:安装svn

[root@meng python]# yum install subversion #同样使用网络源yum


[root@meng python]# svnserve --version  #查看svn版本,看到版本信息,svn安装成功。

svnserve,版本 1.6.11 (r934486)

   编译于 Feb 10 2015,22:08:22


版权所有 (C) 2000-2009 CollabNet。

四:配置svn,

  1. [root@meng python]# mkdir -p /home/svn  #先创建svn版本库目录,

  2. [root@meng python]# svnadmin create /home/svn/project1 #创建svn版本库project1

    [root@meng svn]# svnadmin create /home/svn/project2 #创建svn版本库project2

    [root@meng svn]# ls

    project1  project2

  3. 调配置文件


    [root@meng svn]# mkdir -p /home/svn/conf  #创建配置文件目录

    [root@meng svn]# cp /home/svn/project1/conf/passwd /home/svn/conf/passwd #拷贝账号密码文件样板

    [root@meng svn]# cp /home/svn/project1/conf/authz /home/svn/conf/authz #拷贝目录权限样板

    [root@meng svn]# cp /home/svn/project1/conf/svnserve.conf /home/svn/conf/svnserve.conf #拷贝全局配置文件样板

  4. 编辑三个配置文件,添加如下代码

    [root@meng svn]# vi /home/svn/conf/passwd #编辑,配置文件


    [root@meng svn]# cat /home/svn/conf/passwd 

    ### This file is an example password file for svnserve.

    ### Its format is similar to that of svnserve.conf. As shown in the

    ### example below it contains one section labelled [users].

    ### The name and password for each user follow, one account per line.

    [users]

    # harry = harryssecret

    # sally = sallyssecret

    test1=123456

    test2=123456

[root@meng svn]# vim /home/svn/conf/authz 



admin = test


project1 = test1


project2 = test2




[/]


@admin = rw


* =


[project1:/]


@admin = rw


@project1 = rw


* =


[project2:/]


@admin = rw


@project2 = rw


* =

[root@meng svn]# vim /home/svn/conf/svnserve.conf #编辑全局文件,最后一行添加如下代码


[general]

#禁止匿名访问,设置为none。默认为read,参数:read,write,none

anon-access=none 

#授权用户写权限

auth-access=write 

#用户账号密码文件路径,可以写绝对路径

password-db=/home/svn/conf/passwd 

#访问控制权限文件路径,可以写绝对路径

authz-db=/home/svn/conf/authz 

#每个SVN项目的认证命,会在认证提示里显示,建议写项目名称

realm=svn

5.启动svn

[root@meng svn]# svnserve -d -r /home/svn --config-file /home/svn/conf/svnserve.conf --listen-port 3690  #启动svn

[root@meng svn]# 

[root@meng svn]# ps -ef|grep svn  #查看进程

root      2815     1  0 15:48 ?        00:00:00 svnserve -d -r /home/svn --config-file /home/svn/conf/svnserve.conf --listen-port 3690  

root      2817  2200  0 15:48 pts/0    00:00:00 grep sv n

[root@meng svn]# netstat -ln |grep 3690  #查看端口

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      

[root@meng svn]# killall svnserve  #杀进程

五:配置svn支持Apache访问

#创建用户,用户密码要和上面的用户一样

[root@meng svn]# htpasswd -cm /home/svn/conf/http_passwd test

[root@meng svn]# htpasswd -c /home/svn/conf/http_passwd test1

[root@meng svn]# htpasswd -c /home/svn/conf/http_passwd test2

六:钩子的调整


#在项目库 hooks/ 目录下编辑 post-commit 文件 【钩子脚本】

[root@meng html]# cd /home/svn/project1/hooks/

[root@meng hooks]# pwd

/home/svn/project1/hooks

[root@meng hooks]# cat post-commit

#!/bin/bash

SVN=/usr/bin/svn

WEB=/var/www/html

export LANG=en_US.UTF-8

$SVN update --username test1 --password ‘123456‘ $WEB


#其中SVN=右边改成 svn 命令位置

  WEB=右边改成你实际的web目录

#让post-commit有执行的权限 chmod 777 post-commit   (一定要有)

  保证版本库所有的内容的属主和属组是Apache的程序用户和组。

[root@meng hooks]# chmod 777 post-commit

[root@meng hooks]# ll

总用量 40

-rwxrwxrwx. 1 root root  124 7月  31 16:04 post-commit

-rw-r--r--. 1 root root 1977 7月  31 15:24 post-commit.tmpl

-rw-r--r--. 1 root root 1638 7月  31 15:24 post-lock.tmpl

-rw-r--r--. 1 root root 2289 7月  31 15:24 post-revprop-change.tmpl

-rw-r--r--. 1 root root 1567 7月  31 15:24 post-unlock.tmpl

-rw-r--r--. 1 root root 3426 7月  31 15:24 pre-commit.tmpl

-rw-r--r--. 1 root root 2410 7月  31 15:24 pre-lock.tmpl

-rw-r--r--. 1 root root 2786 7月  31 15:24 pre-revprop-change.tmpl

-rw-r--r--. 1 root root 2100 7月  31 15:24 pre-unlock.tmpl

-rw-r--r--. 1 root root 2780 7月  31 15:24 start-commit.tmpl

[root@meng hooks]# chown apache:apache /home/svn -R

#还要让hooks下所有都有777

[root@meng hooks]# chmod -R 777 .

[root@meng hooks]# ll

总用量 40

-rwxrwxrwx. 1 apache apache  124 7月  31 16:04 post-commit

-rwxrwxrwx. 1 apache apache 1977 7月  31 15:24 post-commit.tmpl

-rwxrwxrwx. 1 apache apache 1638 7月  31 15:24 post-lock.tmpl

-rwxrwxrwx. 1 apache apache 2289 7月  31 15:24 post-revprop-change.tmpl

-rwxrwxrwx. 1 apache apache 1567 7月  31 15:24 post-unlock.tmpl

-rwxrwxrwx. 1 apache apache 3426 7月  31 15:24 pre-commit.tmpl

-rwxrwxrwx. 1 apache apache 2410 7月  31 15:24 pre-lock.tmpl

-rwxrwxrwx. 1 apache apache 2786 7月  31 15:24 pre-revprop-change.tmpl

-rwxrwxrwx. 1 apache apache 2100 7月  31 15:24 pre-unlock.tmpl

-rwxrwxrwx. 1 apache apache 2780 7月  31 15:24 start-commit.tmpl

#导出项目至站点目录

[root@meng hooks]# svn checkout svn://192.168.0.142/project1 /var/www/html/

svn: 无法连接主机“192.168.0.142”: 拒绝连接

[root@meng hooks]# 

[root@meng hooks]# 

[root@meng hooks]# svnserve -d -r /home/svn --config-file /home/svn/conf/svnserve.conf --listen-port 3690 #刚才杀进程关掉了svn,启动svn,然后检出到web目录/var/www/html

[root@meng hooks]# 

[root@meng hooks]# svn checkout svn://192.168.0.142/project1 /var/www/html/ #检出到web目录

认证领域: <svn://192.168.0.142:3690> svn

“root”的密码: 

认证领域: <svn://192.168.0.142:3690> svn

用户名: test1

“test1”的密码: 


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

注意!  你的密码,对于认证域:


   <svn://192.168.0.142:3690> svn


只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。

保存未加密的密码(yes/no)?yes

取出版本 0。

[root@meng hooks]# 

#检出成功,

七;测试svn

Windows下安装svn客户端TortoiseSVN。

TortoiseSVN下载地址:http://tortoisesvn.net/downloads.html

1.把svn服务器 project1检出到本地,修改index.html内容,

2.本地修改文件 commint 后 访问 http://192.168.0.142  后网页内容也变化了。成功。 

本文出自 “IT技术总结” 博客,请务必保留此出处http://menglingqian.blog.51cto.com/8281087/1680611

yum搭建svn apache 利用钩子检出到web目录 自动同步

标签:yum搭建svn apache 利用钩子检出到web目录 自动同步

原文地址:http://menglingqian.blog.51cto.com/8281087/1680611

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!