设为首页 收藏本站
查看: 1152|回复: 0

[经验分享] linux下apache2.2性能优化和安装

[复制链接]

尚未签到

发表于 2018-11-29 07:14:03 | 显示全部楼层 |阅读模式
  macaque1101# 解压缩
  tar jxvf httpd-2.2.2.tar.bz2
  cd httpd-2.2.0
  # vi server/mpm/worker/worker.c
  找到下面几行,并改成如下的数值,其目的是在源码中修改apache可支持的最大线程数和最大客户端数目。
  # define DEFAULT_SERVER_LIMIT 256
  # define MAX_SERVER_LIMIT 40000
  # define DEFAULT_THREAD_LIMIT 256
  # define MAX_THREAD_LIMIT 40000
  # 编译和安装 apr 1.2
  cd srclib/apr
  ./configure --prefix=/home/liuchao/local/apr
  make
  make install
  # 编译和安装 apr-util 1.2
  cd ../apr-util
  ./configure --prefix=/home/local/apr-util --with-apr=/home/local/apr
  make
  make install
  优化编译选项及配置apache可加载的模块
  patch -p1 < ../mod_limitipconn-0.22/apachesrc.diff
  /usr/local/apache2.2.3/bin/apxs -c -i -a mod_limitipconn.c
  /usr/local/apache2.2/bin/apxs -c -i -a mod_evasive20.c
  更改2Glogs
  export CFLAGS=&quot;-O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE&quot;
  然后编译cronolog即可
  CHOST=&quot;i686-pc-linux-gnu&quot;
  CFLAGS=&quot;-march=pentium4 -O3 -pipe -fomit-frame-pointer&quot;
  CXXFLAGS=&quot;-march=pentium4 -O3 -pipe -fomit-frame-pointer&quot;
  ./configure --prefix=/usr/local/apache2.2.3 --enable-mods-shared=all --enable-so --with-mpm=worker --enable-deflate --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache --enable-proxy --enable-rewrite --enable-charset-lite --enable-suexec --with-suexec-bin=/usr/sbin/suexec --disable-ipv6 -disable-dav --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
  # 编译及安装
  gmake && make install
  二、优化apache配置选项
  在主配置文件httpd.conf注释下一行,这样做的目的是把apache的功能配置分成小文件,便于修改和移植
  Include conf/Includes/*.conf
  修改MPM(多道处理器)参数
  # cd /usr/local/apache2.2
  # vi conf/extra/httpd-mpm.conf
  找到如下选项,并改成对应的数值
  
  ServerLimit           64
  ThreadLimit          128
  StartServers           8
  MaxClients          8192
  MinSpareThreads       64
  MaxSpareThreads       256
  ThreadsPerChild       128
  MaxRequestsPerChild    0
  
  ServerLimit              64
  ThreadLimit              64
  StartServers              8
  MaxClients             4096
  MinSpareThreads          64
  MaxSpareThreads         256
  ThreadsPerChild          64
  MaxRequestsPerChild     500
  测试过的配置:
  ServerLimit          32
  ThreadLimit          64
  StartServers          8
  MaxClients         2048
  MinSpareThreads      64
  MaxSpareThreads      256
  ThreadsPerChild       64
  MaxRequestsPerChild   0
  
  修改apache2.2子进程所有者
  # vi /usr/local/apache2.2/conf/httpd.conf
  把daemon改为nobody
  User nobody
  Group nobody
  一般说来,可以不需要的模块包括:
  #LoadModule env_module libexec/mod_env.so
  #LoadModule negotiation_module libexec/mod_negotiation.so
  #LoadModule status_module libexec/mod_status.so
  #server side include已经过时了
  #LoadModule includes_module libexec/mod_include.so
  #不需要将没有缺省index文件的目录下所有文件列出
  #LoadModule autoindex_module libexec/mod_autoindex.so
  #尽量不使用CGI:一直是Apache安全问题最多的地方
  #LoadModule cgi_module libexec/mod_cgi.so
  #LoadModule asis_module libexec/mod_asis.so
  #LoadModule imap_module libexec/mod_imap.so
  #LoadModule action_module libexec/mod_actions.so
  #不使用安全认证可以大大提高访问速度
  #LoadModule access_module libexec/mod_access.so
  #LoadModule auth_module libexec/mod_auth.so
  #LoadModule setenvif_module libexec/mod_setenvif.so
  最好保留的有:
  #用于定制log格式
  LoadModule config_log_module libexec/mod_log_config.so
  #用于增加文件应用的关联
  LoadModule mime_module libexec/mod_mime.so
  #用于缺省index文件:index.php等
  LoadModule dir_module libexec/mod_dir.so
  可用可不用的有:
  #比如:需要在~/username/下调试php可以将
  LoadModule userdir_module libexec/mod_userdir.so
  #比如:需要将以前的URL进行转向或者需要使用CGI scrīpt-alias
  LoadModule alias_module libexec/mod_alias.so
  三、配置模块
  1.配置静态页面压缩输出模块deflate
  使用mod_deflate模块
  在httpd.conf中加入以下设置:
  SetOutputFilter DEFLATE
  DeflateFilterNote ratio
  SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
  SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
  SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
  或者
  DeflateFilterNote ratio
  AddOutputFilterByType DEFLATE text/*
  AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscrīpt
  两种配置方法的作用差不多,其目的主要是把一些不必要压缩的文件禁止压缩。
  2.配置mod_cache模块
  # cd /usr/local/apache2.2/conf/Includes
  # vi mod_cache.conf
  在配置文件里添加如下语句
  
  LoadModule disk_cache_module modules/mod_disk_cache.so
  
  CacheRoot /
  CacheSize 256
  CacheEnable disk /
  CacheDirLevels 5
  CacheDirLength 3
  
  LoadModule mem_cache_module modules/mod_mem_cache.so
  
  CacheEnable mem /
  MCacheSize 4096
  MCacheMaxObjectCount 100
  MCacheMinObjectSize 1
  MCacheMaxObjectSize 2048
  
  
  vi /usr/local/apache2/conf/httpd.conf
  在末尾添加上:
  CacheForceCompletion 100
  CacheDefaultExpire 3600
  CacheMaxExpire 86400
  CacheLastModifiedFactor 0.1
  设置虚拟目录
  然后保存退出。启动apache
  参数的解释:
  mod_cache:
  CacheEnable: 启动 mod_cache,其后接两个参数。第一个参数指定快取的种类,应设为 mem (记忆体快取) 或 disk (磁碟快取) 之其一;第二个参数指定使用快取的 URI 路径,如果对整个网站 (或虚拟主机) 进行快取,简单指定为根目录(/) 即可。
  CacheForceCompletion: 这个值指定当 HTTP request 被取消时,内容的产生动作要完成的百分比;预设是 60(%)。
  CacheDefaultExpire: 指定快取的预设过期秒数;预设值是一小时 (3600)。
  CacheMaxExpire: 指定快取最大的过期秒数;预设值是一天 (86400)。
  CacheLastModifiedFactor: 用来从回应里 Last Modified 资讯算出 expire date。
  计算方式是:
  expire period (过期时距) = 最后更新后至今的时间间距 * CacheLastModifiedFactor
  而
  expire date = 目前时间 + expire period
  不过无论如何,过期时间不能超过 CacheMaxExpire 的设定值。
  现在。如果用squid对该服务器进行反向代理的话,就可以通过cache 实现web的加速了
  3.配置mod_expires模块
  mod_expires可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。
  mod_expires的安装配置:
  
  ExpiresActive on
  ExpiresByType image/gif &quot;access plus 1 month&quot;
  ExpiresByType text/css &quot;now plus 1 month&quot;
  ExpiresDefault &quot;now plus 1 day&quot;
  
  注释:
  所有的.gif文件1个月以后过期
  所有的文件缺省1天以后过期
  4.配置dosevasive模块
  /usr/local/apache2.2/bin/apxs -i -a -c mod_dosevasive20.c
  编辑httpd.conf,加入以下内容:
  LoadModule dosevasive20_module modules/mod_dosevasive20.so
  
  DOSHashTableSize 3097
  DOSPageCount 2
  DOSSiteCount 50
  DOSPageInterval 1
  DOSSiteInterval 1
  DOSBlockingPeriod 10
  
  5.配置mod_limitipconn模块
  mod_limitipconn.c是一个非官方的apache防止多线程下载模块,可以用来作为WEB文件的下载限制,但是它是使用ExtendedStatus On形式,工作在应用层。当同一个IP的连接到达限制的时候,apache对get请求发送:
  HTTP/1.1 503 Service Temporarily Unavailable
  从而使用户不能下载,但并不能阻止这种***,仍旧允许连接的。
  # /usr/local/apache2.2/bin/apxs -c -i -a mod_limitipconn.c
  修改apache配置文件:
  # vi /usr/local/apache/conf/httpd.conf
  同时需要设置以下参数在 httpd.conf 中 , 也可以在单个虚拟服务器中。
  ExtendedStatus On
  修改配置文件:
  1 全局控制:
  在httpd.conf加上以下几行:
  
       # 所有虚拟主机的/目录
  MaxConnPerIP 3       # 每IP只允许3个并发连接
  NoIPLimit image/*    # 对图片不做IP限制
  
      # 所有主机的/mp3目录
  MaxConnPerIP 1           # 每IP只允许一个连接请求
  OnlyIPLimit audio/mpeg video      # 该限制只对视频和音频格式的文件
  
  
  2 局部限制,你也可以在虚拟主机的配置文件里设置IP限制,方法是完全一样:
  < VirtualHost xx.xxx.xx.xx >
  ServerAdmin chenlf@chinalinuxpub.com
  ServerName server.domain.com
  ServerAlias *.domain.com
  UseCanonicalName OFF
  VirtualDocumentRoot /htdoc/domain/%1
  < IfModule mod_limitipconn.c >
  < Location / >      # 所有虚拟主机的/目录
  MaxConnPerIP 5           # 每IP只允许3个并发连接
  NoIPLimit image/*        # 对图片不做IP限制
  < /Location >
  < Location /mp3 >      # 所有主机的/mp3目录
  MaxConnPerIP 2           # 每IP只允许一个连接请求
  OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件
  < /Location >
  < /IfModule >
  ErrorLog /home/my/logs/error_log
  CustomLog /home/my/logs/access_log common
  < /VirtualHost >
  重启apache,用多线程的下载工具下载时,大于3个线程,其余的将得到信息:
  HTTP/1.1 503 Service Temporarily Unavailable
  或者根据User_Agent判断,把已知的多线程工具都给deny 掉
  in httpd.conf
  .....
  BrowserMatch &quot;NetAnt&quot; badguy
  BrowserMatch &quot;GetRight&quot; badguy
  BrowserMatch &quot;JetCar&quot; badguy
  BrowserMatch &quot;Mass Downloader&quot; badguy
  BrowserMatch &quot;ReGet&quot; badguy
  BrowserMatch &quot;DLExpert&quot; badguy
  BrowserMatch &quot;FlashGet&quot; badguy
  BrowserMatch &quot;Offline Explorer&quot; badguy
  BrowserMatch &quot;Teleport&quot; badguy
  ...........
  order deny,allow
  deny from env=badguy
  allow from all
  注意httpd里面应该有 mod_setenvif模块。
  在你的apache的conf文件里面加入
  LoadModule limitipconn_module lib/apache/mod_limitipconn.so
  ExtendedStatus On
  6.安装modsecurity(mod_security 可以加强apache的安全性,特别是在防sql 注入上有很好的效果。)
  下载站点:http://www.modsecurity.org/download/
  # /usr/local/httpd220/bin/apxs -cia mod_security.c
  打开httpd.conf查看是否有如下文字加入
  在httpd.conf中添加下列一段mod_security的配置文件
  LoadModule security_module      modules/mod_security.so
  
  SecFilterEngine On
  SecFilterCheckURLEncoding On
  SecFilterDefaultAction &quot;deny,log,status:500&quot;
  #SecFilterForceByteRange 32 126
  #SecFilterScanPOST On
  SecAuditLog logs/audit_log
  ###
  SecFilter &quot;\.\./&quot;
  #####
  SecFilter /etc/*passwd
  SecFilter /bin/*sh
  #for css attack
  SecFilter &quot;s %b \&quot;%{Referer}i\&quot; \&quot;%{User-Agent}i\&quot;&quot; combined
  LogFormat &quot;%h %l %u %t \&quot;%r\&quot; %>s %b&quot; common
  LogFormat &quot;%{Referer}i -> %U&quot; referer
  LogFormat &quot;%{User-agent}i&quot; agent
  再后面加上图片文件的类型
  SetEnvIf Request_URI \.gif$ gif-image
  SetEnvIf Request_URI \.GIF$ gif-image
  SetEnvIf Request_URI \.jpg$ gif-image
  SetEnvIf Request_URI \.JPG$ gif-image
  SetEnvIf Request_URI \.png$ gif-image
  SetEnvIf Request_URI \.js$    gif-image
  SetEnvIf Request_URI \.bmp$ gif-image
  SetEnvIf Request_URI \.css$ gif-image
  SetEnvIf Request_URI \.mid$ gif-image
  SetEnvIf Request_URI \.swf$ gif-image
  SetEnvIf Request_URI \.mmf$ gif-image
  SetEnvIf Request_URI \.wma$ gif-image
  SetEnvIf Request_URI \.midi$ gif-image
  日志
  CustomLog /usr/local/apache/logs/access.log combined env=!gif-image
  使用两个
  ProxyPa***everse / http://%{HTTP_HOST}:8088/
  RewriteEngine on
  RewriteCond     %{REQUEST_URI} !.*\.(gif|png|jpg)$
  RewriteRule ^/(.*) http://%{HTTP_HOST}:8088/ $1 [P]
  Linux下检测Apache进程数量并自动重启的脚本
  在/etc/crontab里,定时执行检测脚本,检测系统的Apache,和Mysql进程是否超出标准,超标的话,自动重启,没有的话,记录进程数据.
  Crontab的内容(每30分钟执行一次,并将结果记录在/var/log/chksys.log)
  0,30 * * * * root /usr/local/chksys.sh >> /var/log/chksys.log
  /usr/local/chksys.sh代码:
  #!/bin/bash
  #check apache,mysql thread and auto reboot system
  #Powered by ipaddr(aspbiz)
  #config
  MaxApacheThread=300
  MaxMysqlThread=250
  NeedReboot=0
  ApacheThread=`ps -A|grep http|wc -l`
  MysqlThread=`ps -A|grep mysql|wc -l`
  if [ $ApacheThread -gt $MaxApacheThread ]
  then
  NeedReboot=1
  fi
  if [ $MysqlThread -gt $MaxMysqlThread ]
  then
  NeedReboot=1
  fi
  if [ $NeedReboot -eq 1 ]
  then
  echo &quot;-----------------------------&quot;
  echo $(date +&quot;%y-%m-%d %H:%M:%S&quot;
  echo &quot;-----------------------------&quot;
  echo &quot;Apache:$ApacheThread;Mysql:$MysqlThread.&quot;
  echo &quot;System is busy,reboot&quot;
  reboot
  else
  echo &quot;-----------------------------&quot;
  echo $(date +&quot;%y-%m-%d %H:%M:%S&quot;
  echo &quot;-----------------------------&quot;
  echo &quot;Apache:$ApacheThread;Mysql:$MysqlThread.&quot;
  echo &quot;System is normal&quot;
  fi
  SVN服务器搭建完全手册
  cvs, 版本控制, 系统维护, Linux, svn准备,下载所需要文件.
  检查已安装的 Apache2 是否已经安装了 mod_dav .
  编译SVN,遇到的问题和解决方法
  使用 默认文件系统(fsfs) 保存数据
  使用 Berkeley DB 保存数据
  配置Apache和SVN,测试.
  其它小结
  从Windows平台上数据转移
  配置文件,使用其支持对文件中的 $Id$ 标签每次提交的时候自动更新版本信息.
  基于路径的权限控制
  常用SVN命令
  相关资源
  准备,下载所需要文件
  本文测试环境
  Linux MY_SERVER 2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:30:39 EST 2005 i686 i686 i386 GNU/Linux
  Apache 2.2.2
  最新的版本 Subversion 可以在这里找到 :http://subversion.tigris.org/project_packages.html
  检查已安装的 Apache2 是否已经安装了 mod_dav
  如果已经成功安装了Apache,使用 httpd -M 来查看有没有安装 dav_module,如果没有的话 必须附加 ‘–enable-dav’ ‘–enable-dav-fs’ 两个参数重新编译 Apache,否则即使编译通过了svn,apache也会启动不起来.
  编译APACHE2.2
  修改部分源代码
  # vi server/mpm/worker/worker.c
  找到下面几行,并改成如下的数值,其目的是在源码中修改apache可支持的 最大线程数和最大客户端数目。
  # define DEFAULT_SERVER_LIMIT 256
  # define MAX_SERVER_LIMIT 40000
  # define DEFAULT_THREAD_LIMIT 256
  # define MAX_THREAD_LIMIT 40000
  编译配置
  优化编译选项及配置apache可加载的模块
  # CFLAGS=&quot;-O6 -mpentiumpro -fomit-frame-pointer&quot; CXX=gcc CXXFLAGS=&quot;-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti&quot; \
  > ./configure --prefix=/usr/local/apache2.2 --enable-mods-shared=all \
  > --enable-so --with-mpm=worker --enable-deflate \
  > --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \
  > --enable-proxy --enable-suexec
  编译及安装
  # gmake && make install
  优化apache配置选项
  修改MPM(多道处理器)参数
  # cd /usr/local/apache2.2
  # vi conf/extra/httpd-mpm.conf
  找到如下选项,并改成对应的数值
  ServerLimit 64
  ThreadLimit 128
  StartServers 8
  MaxClients 8192
  MinSpareThreads 50
  MaxSpareThreads 256
  ThreadsPerChild 128
  MaxRequestsPerChild 0
  修改apache2.2子进程所有者
  # vi /usr/local/apache2.2/conf/httpd.conf
  把daemon改为nobody
  User nobody
  Group nobody
  编译SVN,遇到的问题和解决方法
  使用默认的文件系统保存数据.
  最终完整通过安装和测试的编译参数为:
  ./configure --with-apxs=/usr/local/apache2/bin/apxs \
  --with-apr=/home/src/server/httpd-2.2.2/srclib/apr \
  --with-apr-util=/home/src/server/httpd-2.2.2/srclib/apr-util
  # make
  # make install
  其中 /home/src/server/ 为 httpd-2.2.2 源代码所在文件夹,根据实际情况调整一下.
  遇到问题
  –with-apr 和 –with-apr-util 如果没有加上的话,即使编译成功了也会出现
  Can’t set position pointer in file ‘/home/svn/repos/db/revs/0&prime;: Invalid argument
  这样的错误提示.
  暂时不能使用 Berkeley DB [* 已解决]
  svn保存文件更新数据库的方法有两个,一种是直接使用 fs (filesystem)来保存,另一种是通过Oracle提供支持的开源数据库 Berkeley DB 进行保存。但是如果加上 –with-berkeley-db=/usr/local/BerkeleyDB.4.4 就会configure时就会报错.
  configure: error: APR-UTIL was installed independently, it won’t be
  possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4
  我想 apr-unit 暂时不支持吧,我们就用默认的fs好了.
  在make 的时候可能会遇到缺少 srclib/apr/libapr-1.la,srclib/apr-util/libaprutil-1.la 两个文件,找不到而make error.
  解决办法:/usr/local/apache2/lib/ 中找到,将其复制到源代码文件夹相应的位置中.
  UPDATE!!!
  使用 BerkeleyDB 保存数据
  安装 BerkeleyDB
  cd /usr/local/src
  $ wget http://downloads.sleepycat.com/db-4.3.29.tar.gz
  $ tar xzvf db-4.3.29.tar.gz
  $ cd /usr/local/src/db-4.3.29/build_unix
  $ ../dist/configure --enable-compat185
  $ make
  $ make install
  更新apr和apr-util源代码
  # 清理编译后的.la文件
  $ cd /usr/local/src/httpd-2.2.3
  $ make clean
  $ cd /usr/local/src/subversion-1.3.2
  $ rm -rf apr
  $ rm -rf apr-util
  $ cp -rf /usr/local/src/httpd-2.2.3/srclib/apr ./
  $ cp -rf /usr/local/src/httpd-2.2.3/srclib/apr-util/ ./
  编译安装
  # /configure --with-apxs=/usr/local/apache2/bin/apxs \
  > --with-berkeley-db=/usr/local/BerkeleyDB.4.3 \
  > --with-ssl
  # make
  # make install
  遇到问题
  BerkeleyDB 版本不能大于 4.3.否则同样会出现以下错误.
  configure: error: APR-UTIL was installed independently, it won’t be
  possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4
  主要是apr-util 暂时不支持4.4的版本.
  必须更新apr,apr-util 源代码.
  subversion-1.3.2 自带的 apr-util 的版本是0.9.6的,必须升级为 1.2.7 虽然能编译过去。但在 svn checkout 的时候会提示
  svn: REPORT request failed on ‘/!svn/vcc/default’
  svn: REPORT of ‘/!svn/vcc/default’: Could not read status line: connection was closed by server.
  这个问题困扰了我很长时间,Google和官方论坛都无结果。后来昨天竟然自己无意中解决了,感动的得哭了:)
  配置Apache和SVN,测试
  成功编译svn后会在 httpd.conf 中自动加上
  LoadModule dav_svn_module modules/mod_dav_svn.so
  LoadModule authz_svn_module modules/mod_authz_svn.so
  两个模块,没有的话,自行加上或检测是否真的编译成功.
  假设我们现在要将一个名为 Lair 的项目导入到 SVN中
  Apache的配置
  在 conf/httpd.conf 或 conf/extra/httpd-vhosts.conf 中加入
  DAV svn
  SVNPath /home/svn/Lair
  可以参考以下apache的配置,实现数据加密传输,用户身份验证.
  Listen 443
  AddType application/x-x509-ca-cert .crt
  AddType application/x-pkcs7-crl .crl.
  SSLPassPhraseDialog exec:/etc/sendsslpwd
  SSLSessionCache shmcb:/usr/local/apache2/logs/ssl_scache(512000)
  SSLSessionCacheTimeout 300
  SSLMutex file:/usr/local/apache2/logs/ssl_mutex
  DocumentRoot /var/SVNRoot
  ServerName svn.yousite.com:443
  ServerAdmin webmaster@yousite.com
  DAV svn
  SVNPath /var/SVNRoot
  AuthzSVNAccessFile /etc/svnserve.conf
  Satisfy Any
  AuthType Basic
  AuthName “yousite SVN Repository”
  AuthUserFile /etc/httpd-passwords.txt
  Require valid-user
  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  SSLCertificateFile /etc/ssl/server.crt
  SSLCertificateKeyFile /etc/ssl/server.key
  更详细的配置说明文档 http://svnbook.red-bean.com/nightly/en/svn.ref.mod_dav_svn.conf.html
  配置,并且测试SVN,
  创建一个新用户,用了保存仓库.
  useradd -m svn
  创建一个新模块
  # su daemon #(apache是以daemon用户运行的,所以要切换身份,否则可能会报目录访问权限错误)
  # svnadmin create --fs-type fsfs /home/svn/Lair
  导入原来的项目
  svn import /var/www/Lair http://localhost/svn/Lair -m ‘Initial import’
  重新建立工作目录
  # rm -rf /var/www/Lair ##(注意备份!!)
  # svn checkout http://localhost/svn/Lair
  测试打开 http://localhost/svn/Lair
  如能看到一个你项目录列表,说明您成功了。
  其它小结
  数据转移:
  从 Windows 平台 SVN 服务器转移
  如果windows svn储存的格式也是dbd的话,直接将SVN的文件夹copy过来即可.然后
  执行 svnadmin recover /var/SVNRoot 检查一下数据库是否损坏.
  最后注意权限,确保 db 目录下的所有文件可写。
  chmod 755 db
  chmod 666 db/*
  否则checkout时出现以下错误,多数是因为 文件或者目录权限问题 引起的,可以尝试用 chown 或者 chmod 命令修改一下权限
  Could not open the requested SVN filesystem
  Could not open the requested SVN filesystem
  另外一种方法没有测试过,原理大致和mysqldump一样,将svn导出为文本文件,然后重新导入,好处是可以避免因为存储格式不同而导致的数据转移困难。
  # dump data to file (assuming a repo @ c:\repo):
  svnadmin dump c:\repo > c:\repo.txt
  # Copy the file over to linux:
  mkdir /repo
  svnadmin create /repo
  svnadmin load /repo < /repo.txt
  设置访问控制
  当 httpd.conf 中 设置 AuthzSVNAccessFile 时,可以设置不同用户对不同目录的访问控制.以下是一个例子.
  [groups]
  root = admin.root
  web = user1,user2
  soft = user3,user4
  [/]
  @root = rw
  [/www]
  @web = rw
  [/soft]
  @soft = rw
  详细的说明文档:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html
  配置文件,使用其支持对文件中的 $Id$ 标签每次提交的时候自动更新版本信息(自动属性).
  Windows : C:\Documents and Settings\%USERNAME%\Application Data\Subversion\config
  Linux : ~\.subversion\config
  [miscellany]
  enable-auto-props = yes
  [auto-props]
  *.php=svn:keywords=Id
  *.html=svn:keywords=Id
  关于自动属性的更高级讨论
  几条常用svn 命令
  $ svn update
  $ svn add “filename”
  $ svn commit
  参考
  http://subversion.tigris.org/faq.html [FAQ]
  http://svnbook.red-bean.com/ [文档]
  http://www.svnforum.org/ [论坛]
  http://d.hatena.ne.jp/cooldaemon/searchdiary?word=%2a%5bSubversion%5d
  http://artis.imag.fr/~Xavier.Decoret/resources/svn/index.html
  http://www.germane-software.com/~ser/R_n_R/subversion.html#ftn.N45
  http://zen.sh.nu/book/zh/index.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-640909-1-1.html 上篇帖子: Linux+Apache服务器配置详解教程系列|____总帖 下篇帖子: apache rewrite伪静态
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表