通过浏览器从SVN更新代码到Linux服务器的指定目录

一个PHP小程序,用途是:无需给程序员开放服务器SSH帐号,只需通过Web浏览器即可从SVN版本库更新代码到Linux服务器的指定目录。如果有需要,可以给这段代码加个密码登录。

1、假设www、www是Apache或Nginx服务器的用户名和组, /home/wwwroot/web 是网页文件存放根目录,执行以下shell命令:

  1. svn checkout svn://ip/project   /home/wwwroot/web
  2. chown R www:www  /home/wwwroot/web

2、创建文件svn_up.php:

  1. <?php 
  2. header(“Content-type: text/html; charset=utf-8”); 
  3. error_reporting(E_ALL);
  4. $handle = popen(‘LANG=zh_CN.utf8 svn up –username  xx  –password  xx123  /home/wwwroot/web 2>&1’,‘r’);
  5. $handle1 = popen(‘chown -R www:www /home/wwwroot/web 2>&1’,‘r’);
  6. echo “‘$handle’; “ . gettype($handle) . “\n”;echo “<br/>”;
  7. echo fread($handle, 2096);echo “<br/>”;
  8. echo fread($handle1, 2096);echo “<br/>”;
  9. pclose($handle);
  10. pclose($handle1);
  11. ?>

附:不要去掉上面的报错设置,这样也是为了方便调试,因为会有很多权限问题,等着你去更改。
如果你的SVN版本是1.6以上(一般都是),然后修改svn的服务器配置:
我的svn的配置目录为/home/www/.subversion/
修改下面的servers文件:
[global]
store-passwords = yes
store-plaintext-passwords = no
否则会出现密码加密等之类的报错提示
其他的问题就是一些权限问题,基本都把其改为www:www的原则,因为是web访问的嘛
chown -R www:www   /home/wwwroot/web

3、通过浏览器访问svn_up.php,显示以下内容(例):
U  /home/wwwroot/web/images/test.jpg
Updated to revision 81.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据