Linux下一键安装包的基础上安装SVN及实现nginx web同步更新

  一、安装

  1.查看是否安装cvs

  rpm -qa | grep subversion

  2.安装

  yum install subversion

  3.测试是否安装成功

  /usr/bin/svnserve --version

  如提示以下内容,说明已安装成功

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

  svnserve,版本1.6.11 (r934486)

  编译于Apr 11 2013,17:28:04

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

  Subversion 是开放源代码软件,请参阅http://subversion.tigris.org/ 站点。

  此产品包含由CollabNet(http://www.Collab.Net/) 开发的软件。

  下列版本库后端(FS) 模块可用:

  * fs_base : 模块只能操作BDB版本库。

  * fs_fs : 模块与文本文件(FSFS)版本库一起工作。

  Cyrus SASL 认证可用。

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

  二、配置

  1、新建一个目录:repos 可用于存储SVN所有文件

  mkdir -p /opt/svndata/repos

  注意,这里的目录(项目名称)路径可以更改,格式如下:

  mkdir -p 目录路径(如:mkdir -p /www/svn/project)

  2、新建一个版本仓库(使用svnadmin create 目录仓库路径与上面新建的目录要一致)

 svnadmin create /opt/svndata/repos

  3、修改svn版本库的配置文件

  vi /opt/svndata/repos/conf/svnserve.conf

  按以下格式内容修改,其中realm的值为项目名称,本例中即为repos。

  [general]

  anon-access = none

  auth-access = write

  password-db = /opt/svndata/project/conf/passwd

  authz-db = /opt/svndata/project/conf/authz

  realm = repos

  注意:对用户配置文件的修改立即生效,不必重启svn。

  4、添加用户

  vi /opt/svndata/repos/conf/passwd

  要添加SVN用户非常简单,只需在/opt/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了。

  为了测试,我添加了如下内容:

  [users]

  # harry = harryssecret

  # sally = sallyssecret

  pm = pm_pw

  server_group = server_pw

  client_group = client_pw

  test_group = test_pw

  5、修改用户访问策略

 vi /opt/svndata/repos/conf/authz

  记录用户的访问策略,以下是参考:

  [groups]

  project_p = pm

  project_s = server_group

  project_c = client_group

  project_t = test_group

  [project:/]

  @project_p = rw

  * =

  [project:/server]

  @project_p = rw

  @project_s = rw

  * =

  [project:/client]

  @project_p = rw

  @project_c = rw

  * =

  [project:/doc]

  @project_p = rw

  @project_s = rw

  @project_c = rw

  @project_t = rw

  * =

  以上信息表示,只有pm有根目录的读写权,server_group能访问server目录,client_group能访问client目录,所有人都可以访问doc目录。

  当然,以上是比较复杂的权限控制,如果只是测试,可以简单些。建立一个用户组,把所有的用户都放到一个用户组,如下:

  [groups]

  admin = pm,server_group,client_group,test_group

  [/]

  @admin = rw

  关于权限的控制,找百度。

  5、启动svn服务

  svnserve -d --listen-port 3690 -r /opt/svndata/repos (以root用户在运行)

  假如有多个项目同时在开发的话,可以通过不同端口可以开启多个SVN服务,使用TortoiseSVN操作时记得加上端口号。

  6、测试svn服务器

  进入网站根目录

  cd /www/web/repos/public_html

  svn co svn://127.0.0.1:3690 /www/web/repos/public_html --username pm --password pm_pw

  会出现以下认证的提示

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

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

   repos

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

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

  你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

  来避免再次出现此警告。

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

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

  输入“yes” 回车,因为版本仓库还没有添加任何文件,所以取出版本为0,如下:

  取出版本0。

  三、配置post-commit,实现自动同步svn版本库文件到web目录

  为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,进入hooks目录,

  cd /opt/svndata/repos/hooks

  ls

  可以看到有一个post-commit.tmpl文件,这是一个模板文件,复制一份放在此目录下,命名为post-commit,并将其用户组设为www,并设置为可执行:

  cp post-commit.tmpl post-commit

  chown www:www post-commit

  chmod +x post-commit

  这样就有了访问www目录的权限。

  里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件.

  文件内容参考以下:

  vi post-commit

  #!/bin/sh

  export LANG=zh_CN.UTF-8

  REPOS="$1"

  REV="$2"

  SVN_PATH=/usr/bin/svn

  WEB_PATH=/web/web/repos/public_html

  LOG_PATH=/tmp/svn_update.log

  #/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache

  echo "nnn##########开始提交" `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH

  echo `whoami`,$REPOS,$REV >> $LOG_PATH

  $SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH

  chown -R www:www $WEB_PATH

  说明:

  1、#!/bin/sh 说明是执行shell命令/*设定环境变量,如果没有设定可能会出现update报错*/

  2、export LANG=zh_CN.UTF-8 是为了解决svn post commit 中文乱码。

  如果你是GBK编码可能会提示:Error output could not be translated from the native locale to UTF-8

  这是客户端和服务器编码的问题,默认是utf-8,可尝试设置export LANG=zh_CN.GBK或者export LANG=en_US.UTF-8

  #执行更新操作

  3、svn update –username 你版本库的用户名–password 用户名的密码svn://你的IP地址:端口/web/web/repos/public_html

  4、chown -R www:www $WEB_PATH 更改文件夹属主为适合Web Server的

  里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件。

Linux下一键安装包的基础上安装SVN及实现nginx web同步更新的更多相关文章

  1. 安装SVN及实现nginx web同步更新需要在WDCP一键安装包的基础上

    一.安装 1.查看是否安装cvs rpm -qa | grep subversion 2.安装 yum install subversion 3.测试是否安装成功 /usr/bin/svnserve ...

  2. linux下各安装包的安装方法

    <转>linux下各安装包的安装方法   一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root ...

  3. 制作Linux下程序安装包——使用脚本打包bin、run等安装包

    制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了.一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可. ...

  4. (推荐)linux用一键安装包

    linux一键安装包内置了XXD.apache, php, mysql这些应用程序,不需要再单独安装部署. 从7.3版本开始,linux一键安装包分为32位和64位两个包,请大家根据操作系统的情况下载 ...

  5. RedMine项目管理系统安装问题(Linux版一键安装包)

    安装环境 操作环境:VMware下安装的Parrot Security OS 系统 使用软件:bitnami-redmine---linux-x64-installer.run 问题描述: 安装步骤与 ...

  6. [Linux]lnmp一键安装包,访问yii/tp5/laravel的时候,报错500或者空白页面

    当你将默认的访问路径改后(nginx.conf中的root 之后的路径),同时应该将/home/wwwroot/default/.user.ini 中的路径也改了! .user.ini 是隐藏文件,需 ...

  7. Linux下获取安装包

    https://blog.csdn.net/xiaofeng3011/article/details/82797614 # cat /etc/yum.conf [main]cachedir=/var/ ...

  8. linux用一键安装包 禅道

    ----------------1.重启apache 和 mysql /opt/zbox/zbox restart -----------------2.问题1:发现端口被占用 apache启动报错( ...

  9. LNMP-Linux下Nginx+MySQL+PHP+phpMyAdmin+eAcelerator一键安装包

    LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat.Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx.MySQL.PHP.phpMyA ...

随机推荐

  1. HTML连载33-背景定位

    一.背景定位 同一个标签可以同时设置背景颜色和背景图片,如果颜色和图片同时存在,那么图片会覆盖颜色 1.在CSS中有一个叫做background-position:属性,就是专门用来控制背景图片的位置 ...

  2. 解决 java Could not resolve resource location pattern [classpath:sql/*.xml] 的问题

    时间过的真快,转眼间已经有2年了.2年里发生了太多的事,有些事依稀还记得,但更多的已经忘记.忘记了那些烦恼与忧愁,以为自己会快乐,才发现一切并不是以自己的意志为转移.终于在迷途中迷失了自己, 再也回不 ...

  3. HTML 参考手册(摘自菜鸟教程)

    标签 描述 基础   <!DOCTYPE>  定义文档类型. <html> 定义一个 HTML 文档 <title> 为文档定义一个标题 <body> ...

  4. Spring Boot 2.0 教程 | 快速集成整合消息中间件 Kafka

    欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site ...

  5. .net core api服务端跨域配置

    第1步:添加包引用(.net core 2.2 已自带此包,可跳过此步骤) Install-Package Microsoft.AspNetCore.Cors 第2步:在Startup.cs文件的Co ...

  6. mybatis 源码分析(八)ResultSetHandler 详解

    本篇博客就是 myabtis 系列的最后一篇了,还剩 ResultSetHandler 没有分析:作为整个 mybatis 最复杂最繁琐的部分,我不打算按步骤一次详解,因为里面的主要内容就是围绕 re ...

  7. POJ-1984-Navigation Nightmare+带权并查集(中级

    传送门:Navigation Nightmare 参考:1:https://www.cnblogs.com/huangfeihome/archive/2012/09/07/2675123.html 参 ...

  8. python读取大文件只能读取部分的问题

    最近准备重新研究一下推荐系统的东西,用到的数据集是Audioscrobbler音乐数据集.我用python处理数据集中artist_data.txt这个文件的时候,先读取每一行然后进行处理: with ...

  9. 【Offer】[57-2] 【和为S的连续正数序列】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数).例如,输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以 ...

  10. 【Offer】[8] 【中序遍历的下一个结点】

    题目描述 思路分析 Java代码 代码链接 题目描述 给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针. ...