标签: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,
[root@meng python]# mkdir -p /home/svn #先创建svn版本库目录,
[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
调配置文件
[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 #拷贝全局配置文件样板
编辑三个配置文件,添加如下代码
[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