David
发布于 2014-08-08 / 17 阅读 / 0 评论 / 0 点赞

Ubuntu 搭建Subversion+Apache+WebSvn系列 - 基础

继上篇的《Raspberry Pi 搭建SubVersion》,树莓派并不方便随时随地访问,放在家里随时都有可能断网或者断电,带到公司宿舍路由器却不支持端口映射。 树莓派本身的性能即使在局域网也是相当鸡肋的,当然他本身的扩展性不是一般的强,只要你愿意动手做,什么事都有可能。 放弃使用树莓派后,也在Azure搭建了Subversion,但是由于公司电脑上网都是HTTP代理上网,不能使用SVN的自带协议(svn://)。 正准备配Apache的时候,才发现服务器超额使用3块多,都是硬盘IO写入过多,坑啊,具体原因就不说了。 不过经一事长一智,将源码建立在免费的服务器上是很不靠谱的,好像其他人都想到,就我没想到的样子。 唉,即使国内VPS系统装上Linux跟装Windows,价格还是差不多的,正不正版先不说,Linux出名稳定和节省资源,淘宝上能找到的基本上都是坑(猜的),好的VPS靠得是人推薦出來,很少會在淘寶上買。對於主機商來說,在自己的網頁系統上接入支付寶就夠了,沒必要去弄什麼淘寶店鋪,反而給一些不懷好意的人惡意差評。 扯淡夠了,開始說下需要準備的東西吧。 1、暢通的網絡 2、很多首好聽的歌曲和耳機一副 3、PuTTY 軟件(下載地址) 4、純淨Ubuntu

我是從系統剛裝好開始配。

5、服務器一台(內存最少512M,突發內存最少756M,獨立IP

內存:為了以後可能裝上更多的功能。事實上強迫症發作,內存準備滿了就受不了,自己根據實際情況選擇服務器配置吧。

突發內存:在剛剛配置服務器的時候看到內存突然暴升到660M,不過隨著時間的推移回落到360M左右。

獨立IP:基本配置,必須的,主機商有專買Linux的話都會有獨立IP,某寶上面的都是共享IP,除了挂機還能做什麼?

CPU不做最低限制,也不准備放網站什麼的,不怎麼消耗CPU的話,隨意即可。

帶寬與服務器配置成正比。

主機商的話,我買的是LocVPS - 洛杉矶 OpenVZ VPS,使用折扣後每月只需24元,優惠碼:ovz50off

如果服務器系統不是Ubuntu的話,自行選擇是否重裝,不同系統文件位置和命令可能不一樣,本系列作基本參考。 同樣的,基本操作我也在YouTuBe上找到了視頻,視頻非常耐心地操作,雖然沒有聲音.......已經下載收藏了,隨時觀看,也可以去找一些可以下載視頻的網站下載。 網上資料參差不齊,很多資料都是缺這缺那,複製粘貼,破圖什麼都有,很難找到一套完整的流程,所以部分截圖截取於視頻。 為避免安裝各種包的時候出現錯誤,先執行下更新
apt-get upgrade
安裝Subversion,Apache,WebSvn三個包
apt-get install websvn subversion libapache2-svn
图像 004 如果在看到這個畫面之前出現錯誤,那就要自行解決了,超出本文記錄範圍。Linux安裝或者配置寫什麼東西,不出錯的話,那感覺簡直妙不可言。 這裡暫時還不能對websvn進行配置,所以我們選”NO“,然後系統繼續安裝其他東西。 對/etc/apache2/mods-enabled/dav_svn.conf進行配置
 vi /etc/apache2/mods-enabled/dav_svn.conf
裡面有很多都是被註釋掉的內容,根據需要將註釋去掉,配置結果 这段配置是针对NFS版本控制器。
<Location /svn/NFS>
  DAV svn
  SVNPath /var/lib/svn/NFS
  AuthType Basic
  AuthName "Subversion"
  AuthUserFile /etc/apache2/dav_svn.passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>
“/svn/NFS” - URL “/var/lib/svn/NFS” - 版本庫的絕對對路徑,暫時還沒被創建 “AuthType Basic” - 基本認證,也就是賬戶和密碼認證 "AuthTpye Name" - 弹出框里显示的内容 “AuthUserFile” - 用来保存用户名和密码的文件
 <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
关于这段内容,现在我们还是跟随视频里一致吧,以后另写一篇来说。 好了,这部分配置暂时先放着。 开始创建并配置SVN的相关文件,之前也说过在执行到这里之前SVN的所有东东都是没有弄。 也就是说上面配置文件里的“/var/lib/svn/NFS”是不存在的,包括“/var/lib/svn”,如果已经有相同的文件夹那就跳过。 嗯,先在/var/lib/下创建svn文件夹
mkdir /var/lib/svn
接着在新建的svn文件夹中创建NFS库,为了好比较,用绝对路径,免得搞混了。
svnadmin create /var/lib/svn/NFS
 下面这步非常重要,以后增加SVN库的时候都要执行这句。
chown -R www-data:www-data /var/lib/svn/NFS
命令的意思是改所属用户组和用户,关于用户组和用户是什么,得自行谷歌。 在Linux中,用户组和用户是相当重要的东西,如果不改成正确的用户,那么相关文件就不能被其他用户修改读取删除,最终导致程序出问题。 这种用户权限的问题,网上比较难找到解决方法,毕竟每个人遇到的情况都可能不一样。 视频中做完这步以后就马上重启Apache2,并在浏览器中打开SVN中的文件,结果我就喜闻乐见了。
service apache2 restart
这里就拿我的配置出来的结果,跟上面做的一模一样,其他设置是跟着视频配置。(IP地址不给看) 图像 021 如果机器是放在公网上,这样子可以直接打开项目源码有点危险,所以......在进阶篇写吧,不然这文章太长了。 既然浏览器可以打开,证明Apache2部分没有配错,可以正常运行,下面试下把源码通过svn签出试试。 看视频截图....... 图像 022 "svn co" - svn checkout就是签出源码。我的是这样子“svn co http://IP地址/svn/NFS/ .” 注意URL后面还有一个点,就是把源码签出到当前目录下。 如果用浏览器打开没问题的话,签出应该不会出问题,凡事都有可能。 试着在签出目录下创建个文件夹。 图像 024 增加文件或者文件夹都需要使用add命令添加到SVN的源码控制里,不然待会提交的时候不会显示这个新建的文件夹。 提交命令
svn commit
图像 025 这时候会弹出个vim编辑器,暂时还不知道是干嘛的,退出vim命令
:q
退出vim后会让你选择Abort、Continue、Edit,对应意思:中止、继续、编辑(还没搞懂是干嘛的) 很明显,我们要做的是继续,输入c就行 图像 026 好,视频中从输入密码这里出现了转折点,由于之前没有对/etc/apache2/dav_svn.passwd进行配置,所以我们得先弄好帐号密码才能成功提交。 使用Apache2自带命令htpasswd创建账户和密码
htpasswd -cm /etc/apache2/dav_svn.passwd username
如果dav_svn.passwd不存在或者说是第一次创建账户就用“-cm” c - 创建文件 m - 创建账户和密码 路径什么的不解释 username - 用户名(还是写明白些) 然后他会要求输入密码,国际惯例,输入两次 图像 027 如果是添加用帐号就不用加“c"参数 图像 028 现在打开dav_svn.passwd文件看下有没有刚刚创建的两个账户密码 图像 029 密码是经过加密的,这就是为什么要用htpasswd添加 搞定这个以后,再回到之前签出源码的目录下再次提交 图像 030 这次提交输入密码就输入刚刚创建的密码。 想换其他账户提交的话,那就在输入密码的时候直接回车,会提示重新输入用户名。 最后询问是否提交,一定要输入完整的Yes..........这是规定,没什么好说。 图像 031 提交成功就是显示版本号。 再到浏览器中看下是否有提交的文件夹。 图像 032 之前Rsvision显示的是0,现在显示的是最新版本号1,那就说已经配置好了。 现在还差WebSvn还没有配置,来吧。 输入命令
dpkg-reconfigure websvn
又出现一开始的画面.........这次我们选Yes,不截图了,反正是一样的。 图像 033 把那些选项都选上,下一步 图像 034 这里的路径就是放置svn相关文件的路径,下一步 图像 035 不知道是什么意思,有空再去谷歌搜索下,留空,下一步 图像 036 OK 接下是自动执行....... 图像 037 看到OK两个字母,可以放下心头大石了。 在浏览器中打开http://IP地址/websvn 嘿嘿.......就是这么简单,就是这么容易 图像 038 这个地址僅供查看,不能修改............這樣就可以不用TortoiseSVN看修改日誌。 支持查看文件差異!!! 基礎篇終於寫完了.........拖延症無冷卻發作...... 最後附上視頻。 [su_youtube url="https://www.youtube.com/watch?v=xtE7FlEEOZY&list=FLIT-IAuM4pmq0NrXI1wPFZA"]