<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MEMOBALL.info &#187; trac</title>
	<atom:link href="http://www.memoball.info/tag/trac/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.memoball.info</link>
	<description>All of my Memories</description>
	<lastBuildDate>Thu, 22 Jul 2010 06:17:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>การติดตั้ง SVN &amp; Trac ร่วมกับ Apache ใน Ubuntu</title>
		<link>http://www.memoball.info/10/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-svn-trac-%e0%b8%a3%e0%b9%88%e0%b8%a7%e0%b8%a1%e0%b8%81%e0%b8%b1%e0%b8%9a-apache-%e0%b9%83%e0%b8%99-ubun/</link>
		<comments>http://www.memoball.info/10/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-svn-trac-%e0%b8%a3%e0%b9%88%e0%b8%a7%e0%b8%a1%e0%b8%81%e0%b8%b1%e0%b8%9a-apache-%e0%b9%83%e0%b8%99-ubun/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 09:11:46 +0000</pubDate>
		<dc:creator>spnball</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trac]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.memoball.info/?p=411</guid>
		<description><![CDATA[ช่วงนี้กำลังปรับปรุงระบบ SVN ใหม่อยู่ โดยจะให้การทำ authen ผ่าน .htaccess เดียวกันทั้ง SVN &#38; Trac
จึงได้นำ SVN และ Trac มาผูกรวมกับ Apache ซึ่งเป็นวิธีการติดตั้งที่ง่ายกว่า และสะดวกกว่าการติดตั้งแบบที่นำเสนอครั้งก่อน โดยอาศัย dav_svn กับ mods_python เข้ามาช่วย


จาก WikiBall


			




เนื้อหา


1 ติดตั้ง Program ใน Ubuntu

1.1 SVN + Apache
1.2 Trac + Apache


2 การสร้าง project

2.1 สร้าง repository
2.2 สร้าง Trac


3 Enable apache modules
4 Apache configure

4.1 configuration file สำหรับ trac
4.2 configuration file สำหรับ subversion
4.3 Enable site


5 [...]]]></description>
			<content:encoded><![CDATA[<p>ช่วงนี้กำลังปรับปรุงระบบ SVN ใหม่อยู่ โดยจะให้การทำ authen ผ่าน .htaccess เดียวกันทั้ง SVN &amp; Trac<br />
จึงได้นำ SVN และ Trac มาผูกรวมกับ Apache ซึ่งเป็นวิธีการติดตั้งที่ง่ายกว่า และสะดวกกว่า<a href="http://www.memoball.info/01/%E0%B8%9B%E0%B8%B1%E0%B8%8D%E0%B8%AB%E0%B8%B2%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89-web-interface-%E0%B8%82%E0%B8%AD%E0%B8%87-trac/">การติดตั้งแบบที่นำเสนอครั้งก่อน</a> โดยอาศัย dav_svn กับ mods_python เข้ามาช่วย<br />
<span id="more-411"></span></p>
<div id="bodyContent">
<h3 id="siteSub"><a href="http://wiki.memoball.info/index.php/SVN%2BTrac%2Bapache2">จาก WikiBall</a></h3>
<div id="contentSub"></div>
<div id="jump-to-nav"></div>
<p>			<!-- start content --></p>
<table id="toc" class="toc" summary="เนื้อหา">
<tr>
<td>
<div id="toctitle">
<h2>เนื้อหา</h2>
</div>
<ul>
<li class="toclevel-1"><a href="./#.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87_Program_.E0.B9.83.E0.B8.99_Ubuntu" ref="toc"><span class="tocnumber">1</span> <span class="toctext">ติดตั้ง Program ใน Ubuntu</span></a>
<ul>
<li class="toclevel-2"><a href="./#SVN_.2B_Apache" ref="toc"><span class="tocnumber">1.1</span> <span class="toctext">SVN + Apache</span></a></li>
<li class="toclevel-2"><a href="./#Trac_.2B_Apache" ref="toc"><span class="tocnumber">1.2</span> <span class="toctext">Trac + Apache</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_project" ref="toc"><span class="tocnumber">2</span> <span class="toctext">การสร้าง project</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_repository" ref="toc"><span class="tocnumber">2.1</span> <span class="toctext">สร้าง repository</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_Trac" ref="toc"><span class="tocnumber">2.2</span> <span class="toctext">สร้าง Trac</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#Enable_apache_modules" ref="toc"><span class="tocnumber">3</span> <span class="toctext">Enable apache modules</span></a></li>
<li class="toclevel-1"><a href="./#Apache_configure" ref="toc"><span class="tocnumber">4</span> <span class="toctext">Apache configure</span></a>
<ul>
<li class="toclevel-2"><a href="./#configuration_file_.E0.B8.AA.E0.B8.B3.E0.B8.AB.E0.B8.A3.E0.B8.B1.E0.B8.9A_trac" ref="toc"><span class="tocnumber">4.1</span> <span class="toctext">configuration file สำหรับ trac</span></a></li>
<li class="toclevel-2"><a href="./#configuration_file_.E0.B8.AA.E0.B8.B3.E0.B8.AB.E0.B8.A3.E0.B8.B1.E0.B8.9A_subversion" ref="toc"><span class="tocnumber">4.2</span> <span class="toctext">configuration file สำหรับ subversion</span></a></li>
<li class="toclevel-2"><a href="./#Enable_site" ref="toc"><span class="tocnumber">4.3</span> <span class="toctext">Enable site</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#.E0.B8.A7.E0.B8.B4.E0.B8.98.E0.B8.B5.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_.htaccess" ref="toc"><span class="tocnumber">5</span> <span class="toctext">วิธีสร้าง .htaccess</span></a></li>
<li class="toclevel-1"><a href="./#Restart_apache" ref="toc"><span class="tocnumber">6</span> <span class="toctext">Restart apache</span></a></li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" ref="toc"><span class="tocnumber">7</span> <span class="toctext">การใช้งาน</span></a></li>
</ul>
</td>
</tr>
</table>
<p><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "แสดง"; var tocHideText = "ซ่อน"; showTocToggle(); } </script><br />
<a name=".E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87_Program_.E0.B9.83.E0.B8.99_Ubuntu" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline">ติดตั้ง Program ใน Ubuntu</span></h2>
<p><a name="SVN_.2B_Apache" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> SVN + Apache </span></h3>
<p>ติดตั้ง apache
</p>
<pre>
$ sudo apt-get install apache2
</pre>
<p>ติดตั้ง svn
</p>
<pre>
$ sudo apt-get install subversion
</pre>
<p>ติดตั้งโมดูล svn ของ apache
</p>
<pre>
$ sudo apt-get install libapache2-svn
</pre>
<p><a name="Trac_.2B_Apache" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> Trac + Apache </span></h3>
<p>การติดตั้ง Trac จำเป็นต้องมี SVN อยู่ก่อนแล้ว<br />
จึงทำการติดตั้ง Trac ดังนี้<br />
ดาวโหลด trac มาใส่ไว้ในที่ไดที่หนึ่งอาจเป็น /home/user ก็ได้ หรืออาจให้ wget ดึงมาเลย
</p>
<pre>
wget http://ftp.edgewall.com/pub/trac/Trac-0.11.5.tar.gz
</pre>
<p>ระเบิดมัน
</p>
<pre>tar -xzf Trac-0.11.5.tar.gz</pre>
<p>ลง Python setup
</p>
<pre>$ sudo apt-get install python-setuptools</pre>
<p>เข้าไปที่ directory ดังกล่าว  Trac-0.11.5 แล้วทำการ install
</p>
<pre>$ sudo python ./setup.py install</pre>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_project" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การสร้าง project </span></h2>
<p><a name=".E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_repository" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> สร้าง repository </span></h3>
<p>ตัวอย่างการสร้าง
</p>
<pre>$ svnadmin create /var/svn/repository/example</pre>
<p>นำเข้า (import) project
</p>
<pre>$ svn import /path/to/projectexample file:///var/svn/repository/example/examplev1 -m&quot;initial import&quot; </pre>
<p><a name=".E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_Trac" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> สร้าง Trac </span></h3>
<p>การสร้าง project enviroment รันคำสั่ง
</p>
<pre>$ trac-admin /path/to/myproject initenv</pre>
<p>ดู option ต่างๆ ได้ที่ <a href="http://wiki.memoball.info//index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99_trac" title="การใช้งาน trac">การใช้งาน trac</a>
</p>
<p><a name="Enable_apache_modules" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Enable apache modules </span></h2>
<p>เราต้องทำการ enable apache modules โดยการทำ soft link ใน /etc/apache2/mods-enabled ไปยัง /etc/apache2/mods-available/
</p>
<pre>
$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/dav_svn.conf
$ sudo ln -s ../mods-available/dav_svn.load
$ sudo ln -s ../mods-available/mod_python.load
</pre>
<p><a name="Apache_configure" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Apache configure </span></h2>
<p>หลังจากลงโปรแกรม แล้ว เราก็จะมากทำการ config เจ้าตัว apache ของเราให้สามารถทำงานได้กัน โดยก่อนอื่นต้องเข้าไปที่ /etc/apache2/sites-available/
</p>
<p><a name="configuration_file_.E0.B8.AA.E0.B8.B3.E0.B8.AB.E0.B8.A3.E0.B8.B1.E0.B8.9A_trac" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> configuration file สำหรับ trac </span></h3>
<p>สร้าง config file ใหม่
</p>
<pre>
$sudo vim trac
</pre>
<pre>
&lt;Location /uri/path/to/trac/project&gt;
        SetHandler mod_python
        PythonInterpreter main_interpreter
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnv /path/to/project/environment
        PythonOption TracUriRoot /uri/path/to/trac/project
&lt;/Location&gt;
</pre>
<p>ถ้าต้องการทำ authentication ผ่าน .htaccess ของ apache ให้เพิ่มโค้ดด้านล่าง ลงใน Location
</p>
<pre>
        AuthType Basic
        AuthName &quot;Project name&quot;
        AuthUserFile /path/to/.htaccess
        Require valid-user
</pre>
<p><a name="configuration_file_.E0.B8.AA.E0.B8.B3.E0.B8.AB.E0.B8.A3.E0.B8.B1.E0.B8.9A_subversion" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> configuration file สำหรับ subversion </span></h3>
<p>สร้าง config file ใหม่
</p>
<pre>
$sudo vim svn
</pre>
<pre>
&lt;Location /uri/path/to/svn/project&gt;
        DAV svn
        SVNPath /var/svn/repository/rddi/mailgoth/
&lt;/Location
</pre>
<p>ถ้าต้องการทำ authentication ผ่าน .htaccess ของ apache ให้เพิ่มโค้ดด้านล่าง ลงใน Location
</p>
<pre>
        AuthType Basic
        AuthName Foo
        AuthUserFile /var/svn/repository/rddi/mailgoth/.htaccess

        require valid-user
        Order deny,allow
</pre>
<p><a name="Enable_site" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> Enable site </span></h3>
<p>ทำการ Enable site
</p>
<pre>
$ cd /etc/apache2/sites-enabled/
$ sudo ln -s ../sites-available/svn 002-svn
$ sudo ln -s ../sites-available/trac 002-trac
</pre>
<p><a name=".E0.B8.A7.E0.B8.B4.E0.B8.98.E0.B8.B5.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_.htaccess" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> วิธีสร้าง .htaccess </span></h2>
<pre>htpasswd -c .htaccess username</pre>
<p><a name="Restart_apache" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Restart apache </span></h2>
<p>สั่ง restart apache
</p>
<pre> $ sudo apache2ctl restart</pre>
<p>ถ้าเข้าแล้วยังมี error อยู่ ให้ไปดูที่ /var/log/apache/error.log ว่ามี Error อะไรเกิดขึ้น
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การใช้งาน </span></h2>
<ul>
<li>เข้าใช้งาน Trac&nbsp;: http:/site.name/uri/path/to/trac/project
</li>
<li>เข้าใช้งาน SVN&nbsp;: http:/site.name/uri/path/to/svn/project
</li>
</ul>
<p><!--<br />
NewPP limit report<br />
Preprocessor node count: 75/1000000<br />
Post-expand include size: 0/2097152 bytes<br />
Template argument size: 0/2097152 bytes<br />
Expensive parser function count: 0/100<br />
--></p>
<p><!-- Saved in parser cache with key memoball_wiki:pcache:idhash:73-0!1!0!!th!2!edit=0 and timestamp 20091002091041 --></p>
<div class="printfooter">
<h5>รับข้อมูลจาก (Reference) : </h5>
<p>จาก WikiBall : <a href="http://wiki.memoball.info/index.php/SVN%2BTrac%2Bapache2">http://wiki.memoball.info/index.php/SVN+Trac+apache2</a></div>
<div id='catlinks' class='catlinks'>
<div id="mw-normal-catlinks"><a href="http://wiki.memoball.info//index.php/%E0%B8%9E%E0%B8%B4%E0%B9%80%E0%B8%A8%E0%B8%A9:Categories" title="พิเศษ:Categories">หมวดหมู่</a>:&#32;<span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:SVN&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:SVN (ยังไม่ได้สร้าง)">SVN</a></span> | <span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:Apache&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:Apache (ยังไม่ได้สร้าง)">Apache</a></span> | <span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:Trac&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:Trac (ยังไม่ได้สร้าง)">Trac</a></span> | <span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:Ubuntu&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:Ubuntu (ยังไม่ได้สร้าง)">Ubuntu</a></span></div>
</div>
<p>			<!-- end content --></p>
<div class="visualClear"></div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.memoball.info/10/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-svn-trac-%e0%b8%a3%e0%b9%88%e0%b8%a7%e0%b8%a1%e0%b8%81%e0%b8%b1%e0%b8%9a-apache-%e0%b9%83%e0%b8%99-ubun/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>การติดตั้ง svn</title>
		<link>http://www.memoball.info/01/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-svn/</link>
		<comments>http://www.memoball.info/01/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-svn/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 12:28:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Trac & SVN]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://memoball.nabzer.com/?p=169</guid>
		<description><![CDATA[หลังจากหัวหมุนกับการใช้งานและการติดตั้ง svn&#038;trac อยู่ซะตั้งนาน แต่ตอนนี้ก็ใช้งานได้แล้วครับ ก้เลยเอาไปเขียนใส่ไว้ใน wiki ของตัวเองซะ ที่นี่ครับ 

จาก WikiBall


			
Subversion เป็นโปรแกรมที่ใชัสร้าง และจัดการ version ของ source code ของเรา





เนื้อหา


1 การติดตั้ง

1.1 การใช้งานร่วมกับ apache2


2 การใช้งาน

2.1 สร้าง repository
2.2 นำเข้า (import) project
2.3 การเข้าผ่าน apache
2.4 คู่มือการใช้งาน
2.5 การ config svnserve
2.6 SVN Client


3 svn service file
4 Troubleshooting
5 อื่นๆ ที่เกี่ยวข้อง




 if (window.showTocToggle) { var tocShowText = "แสดง"; var tocHideText = "ซ่อน"; showTocToggle(); } 

  [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากหัวหมุนกับการใช้งานและการติดตั้ง svn&#038;trac อยู่ซะตั้งนาน แต่ตอนนี้ก็ใช้งานได้แล้วครับ ก้เลยเอาไปเขียนใส่ไว้ใน wiki ของตัวเองซะ ที่นี่ครับ <span id="more-169"></span></p>
<div id="bodyContent">
<h3 id="siteSub"><a href="http://wiki.memoball.info/index.php/Subversion">จาก WikiBall</a></h3>
<div id="contentSub"></div>
<div id="jump-to-nav"></div>
<p>			<!-- start content --></p>
<p>Subversion เป็นโปรแกรมที่ใชัสร้าง และจัดการ version ของ source code ของเรา
</p>
<table id="toc" class="toc" summary="เนื้อหา">
<tr>
<td>
<div id="toctitle">
<h2>เนื้อหา</h2>
</div>
<ul>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87" ref="toc"><span class="tocnumber">1</span> <span class="toctext">การติดตั้ง</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99.E0.B8.A3.E0.B9.88.E0.B8.A7.E0.B8.A1.E0.B8.81.E0.B8.B1.E0.B8.9A_apache2" ref="toc"><span class="tocnumber">1.1</span> <span class="toctext">การใช้งานร่วมกับ apache2</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" ref="toc"><span class="tocnumber">2</span> <span class="toctext">การใช้งาน</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_repository" ref="toc"><span class="tocnumber">2.1</span> <span class="toctext">สร้าง repository</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.99.E0.B8.B3.E0.B9.80.E0.B8.82.E0.B9.89.E0.B8.B2_.28import.29_project" ref="toc"><span class="tocnumber">2.2</span> <span class="toctext">นำเข้า (import) project</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.80.E0.B8.82.E0.B9.89.E0.B8.B2.E0.B8.9C.E0.B9.88.E0.B8.B2.E0.B8.99_apache" ref="toc"><span class="tocnumber">2.3</span> <span class="toctext">การเข้าผ่าน apache</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.84.E0.B8.B9.E0.B9.88.E0.B8.A1.E0.B8.B7.E0.B8.AD.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" ref="toc"><span class="tocnumber">2.4</span> <span class="toctext">คู่มือการใช้งาน</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3_config_svnserve" ref="toc"><span class="tocnumber">2.5</span> <span class="toctext">การ config svnserve</span></a></li>
<li class="toclevel-2"><a href="./#SVN_Client" ref="toc"><span class="tocnumber">2.6</span> <span class="toctext">SVN Client</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#svn_service_file" ref="toc"><span class="tocnumber">3</span> <span class="toctext">svn service file</span></a></li>
<li class="toclevel-1"><a href="./#Troubleshooting" ref="toc"><span class="tocnumber">4</span> <span class="toctext">Troubleshooting</span></a></li>
<li class="toclevel-1"><a href="./#.E0.B8.AD.E0.B8.B7.E0.B9.88.E0.B8.99.E0.B9.86_.E0.B8.97.E0.B8.B5.E0.B9.88.E0.B9.80.E0.B8.81.E0.B8.B5.E0.B9.88.E0.B8.A2.E0.B8.A7.E0.B8.82.E0.B9.89.E0.B8.AD.E0.B8.87" ref="toc"><span class="tocnumber">5</span> <span class="toctext">อื่นๆ ที่เกี่ยวข้อง</span></a></li>
</ul>
</td>
</tr>
</table>
<p><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "แสดง"; var tocHideText = "ซ่อน"; showTocToggle(); } </script><br />
<a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การติดตั้ง </span></h2>
<p>สำหรับ Ubuntu
</p>
<pre>$ sudo apt-get install apt-get install subversion</pre>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99.E0.B8.A3.E0.B9.88.E0.B8.A7.E0.B8.A1.E0.B8.81.E0.B8.B1.E0.B8.9A_apache2" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การใช้งานร่วมกับ apache2 </span></h3>
<p>ติดตั้ง apache module
</p>
<pre>$ sudo apt-get install libapache2-svn</pre>
<p>สร้าง diretory ดังตัวอย่าง หรืออย่างอื่นก็ได้
</p>
<pre>
mkdir /var/svn
mkdir /var/svn/repository
</pre>
<p>แก้ไขค่า permission
</p>
<pre>
chown www-data:www-data -R /var/svn/repository
chmod 770 -R /var/svn/repository
</pre>
<p>แก้ไข apache svn module configuration file&nbsp;: <b>/etc/apache2/mods-available/dav_svn.conf</b>
</p>
<pre>
...
SVNParentPath /var/svn/repository
#SVNPath /var/svn/repository
.....
AuthType Basic
AuthName &quot;Subversion Repository&quot;
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
...
</pre>
<p>สร้าง htaccess
</p>
<pre>
htpasswd2 -c /etc/apache2/dav_svn.passwd tester
</pre>
<p>ref&nbsp;: <a href="http://www.debuntu.org/2006/05/20/54-how-to-subversion-svn-with-apache2-and-dav" class="external free" title="http://www.debuntu.org/2006/05/20/54-how-to-subversion-svn-with-apache2-and-dav" rel="nofollow">http://www.debuntu.org/2006/05/20/54-how-to-subversion-svn-with-apache2-and-dav</a>
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การใช้งาน </span></h2>
<p><a name=".E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_repository" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> สร้าง repository </span></h3>
<p>ตัวอย่างการสร้าง
</p>
<pre>$ svnadmin create /var/svn/repository/example</pre>
<p><a name=".E0.B8.99.E0.B8.B3.E0.B9.80.E0.B8.82.E0.B9.89.E0.B8.B2_.28import.29_project" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> นำเข้า (import) project </span></h3>
<pre>$ svn import /path/to/projectexample file:///var/svn/repository/example/examplev1 -m&quot;initial import&quot; </pre>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.80.E0.B8.82.E0.B9.89.E0.B8.B2.E0.B8.9C.E0.B9.88.E0.B8.B2.E0.B8.99_apache" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การเข้าผ่าน apache </span></h3>
<pre>http://servername/svn/project</pre>
<p><a name=".E0.B8.84.E0.B8.B9.E0.B9.88.E0.B8.A1.E0.B8.B7.E0.B8.AD.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> คู่มือการใช้งาน </span></h3>
<ol>
<li><a href="http://svnbook.red-bean.com/" class="external text" title="http://svnbook.red-bean.com/" rel="nofollow">SVN Command line 1</a>
</li>
<li><a href="http://www.yolinux.com/TUTORIALS/Subversion.html#COMMAND" class="external text" title="http://www.yolinux.com/TUTORIALS/Subversion.html#COMMAND" rel="nofollow">SVN Command line 2</a>
</li>
<li><a href="http://home.thep.lu.se/~jari/documents/subversion_guidelines/subversion_guidelines.pdf" class="external text" title="http://home.thep.lu.se/~jari/documents/subversion_guidelines/subversion_guidelines.pdf" rel="nofollow">คู่มือการใช้งาน Subversion</a>
</li>
<li><a href="http://www.rapidsvn.org/index.php/Documentation#Linux.2FUnix" class="external text" title="http://www.rapidsvn.org/index.php/Documentation#Linux.2FUnix" rel="nofollow">คู่มือการใช้งาน RapidSVN</a>
</li>
</ol>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3_config_svnserve" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การ config svnserve </span></h3>
<p>svnserve คือ daemon สำหรับ svn โดยที่เราสามารถ login ผ่านทาง <a href="http://wiki.memoball.info//index.php/Subversion#SVN_Client" title="Subversion">SVN client</a> ต่างๆ โดยผ่านโปรโตคอล svn
</p>
<pre>
svn://hostname:port/repos
</pre>
<p>ทดสอบรับ daemon แบบ forground โดยใช้คำสั่ง
</p>
<pre>
$ sudo svnserve -d --listen-port=port --foreground -r  root/path
</pre>
<p>เรียกเป็น http ใน browser ถ้าขึ้นในลักษณะนี้แสดงว่ารันได้แล้ว
</p>
<pre>
( success ( 1 2 ( ANONYMOUS ) ( edit-pipeline svndiff1 absent-entries ) ) )
</pre>
<p>ตัว svnserve นี้จะไม่มี file ใน init.d มาให้เราจะต้องสร้างเองดังนี้<br />
<a href="http://wiki.memoball.info//images/8/88/Svnserve.tar.gz" class="internal" title="Svnserve.tar.gz">สื่อ:svnserve.tar.gz</a>
</p>
<p>อย่าลืมตั้งค่า authentication ใน <i>/path/to/repository/conf</i>
</p>
<p><a name="SVN_Client" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> SVN Client </span></h3>
<p>สำหรับที่ผู้ที่ไม่อยากใช้ SVN แบบ command line ใช้แบบ command line ไม่เป็น(เช่นเดียวกับผม) จะมี GUI กระต่ายกับเต่า ให้เลือกใช้ได้ดังนี้
</p>
<ol>
<li><a href="http://tortoisesvn.tigris.org/" class="external text" title="http://tortoisesvn.tigris.org/" rel="nofollow">TortoiseSVN-(Windows)</a>
</li>
<li><a href="http://rapidsvn.tigris.org/" class="external text" title="http://rapidsvn.tigris.org/" rel="nofollow">RapidSVN-(Ubuntu+Mac+Windows)</a>
</li>
</ol>
<p>ref&nbsp;: <a href="http://agaricdesign.com/note/subversion-client-ubuntu-anything-tortoisesvn" class="external free" title="http://agaricdesign.com/note/subversion-client-ubuntu-anything-tortoisesvn" rel="nofollow">http://agaricdesign.com/note/subversion-client-ubuntu-anything-tortoisesvn</a>
</p>
<p><a name="svn_service_file" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> svn service file </span></h2>
<pre>
#!/bin/sh -e
#
# svnserve - brings up the svn server so anonymous users
# can access svn
#

# Get LSB functions
. /lib/lsb/init-functions
. /etc/default/rcS

SVNSERVE=/usr/bin/svnserve
SVN_USER=svn
SVN_GROUP=svn
SVN_REPO_PATH=/var/svn/repository/
SVN_PORT=8000

# Check that the package is still installed
[ -x $SVNSERVE ] || exit 0;

case &quot;$1&quot; in
	start)
		log_begin_msg &quot;Starting svnserve...&quot;
		umask 002
		if start-stop-daemon --start \
		--chuid $SVN_USER:$SVN_GROUP \
		--exec $SVNSERVE \
		-- -d --listen-port=$SVN_PORT -r $SVN_REPO_PATH; then
			log_end_msg 0
		else
			log_end_msg $?
		fi
	;;

	stop)
		log_begin_msg &quot;Stopping svnserve...&quot;
		if start-stop-daemon --stop --exec $SVNSERVE; then
		log_end_msg 0
		else
		log_end_msg $?
		fi
	;;

	restart|force-reload)
		&quot;$0&quot; stop &amp;&amp; &quot;$0&quot; start
	;;

	*)
	echo &quot;Usage: /etc/init.d/svnserve {start|stop|restart|force-reload}&quot;
		exit 1
	;;
esac

exit 0
</pre>
<p><a name="Troubleshooting" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Troubleshooting </span></h2>
<ul>
<li>import ไม่ได้
</li>
</ul>
<pre>
svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///Development/subversion/foo'
</pre>
<p>เหตุการณ์ดังกล่าวเกิดขึ้นได้ 2 กรณี คือ
</p>
<pre> #path ดังกล่าวไม่สามารถเข้าไปได้ เช่น ติด permission
 #ใส่ path กับ URL สรับกัน
</pre>
<p><a name=".E0.B8.AD.E0.B8.B7.E0.B9.88.E0.B8.99.E0.B9.86_.E0.B8.97.E0.B8.B5.E0.B9.88.E0.B9.80.E0.B8.81.E0.B8.B5.E0.B9.88.E0.B8.A2.E0.B8.A7.E0.B8.82.E0.B9.89.E0.B8.AD.E0.B8.87" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> อื่นๆ ที่เกี่ยวข้อง </span></h2>
<p><!--<br />
NewPP limit report<br />
Preprocessor node count: 55/1000000<br />
Post-expand include size: 0/2097152 bytes<br />
Template argument size: 0/2097152 bytes<br />
Expensive parser function count: 0/100<br />
--></p>
<p><!-- Saved in parser cache with key memoball_wiki:pcache:idhash:6-0!1!0!!th!2!edit=0 and timestamp 20090825100730 --></p>
<div class="printfooter">
<h5>รับข้อมูลจาก (Reference) : </h5>
<p>จาก WikiBall : <a href="http://wiki.memoball.info/index.php/Subversion">http://wiki.memoball.info/index.php/Subversion</a></div>
<div id='catlinks' class='catlinks'>
<div id="mw-normal-catlinks"><a href="http://wiki.memoball.info//index.php/%E0%B8%9E%E0%B8%B4%E0%B9%80%E0%B8%A8%E0%B8%A9:Categories" title="พิเศษ:Categories">หมวดหมู่</a>:&#32;<span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:SVN&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:SVN (ยังไม่ได้สร้าง)">SVN</a></span></div>
</div>
<p>			<!-- end content --></p>
<div class="visualClear"></div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.memoball.info/01/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-svn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การติดตั้ง subversion เพื่อใช้กับ trac</title>
		<link>http://www.memoball.info/01/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-subversion-%e0%b9%80%e0%b8%9e%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%81%e0%b8%b1/</link>
		<comments>http://www.memoball.info/01/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-subversion-%e0%b9%80%e0%b8%9e%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%81%e0%b8%b1/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 07:34:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Trac & SVN]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://memoball.nabzer.com/?p=165</guid>
		<description><![CDATA[เนื่องจากเมื่อลง trac แล้วกลับยังใช้ browse source ไม่ได้ จึงได้หาข้อมูลในส่วนนี้ จึงทำให้รู้ว่า trac นั้น จะ run ตรงส่วนของ browse source เป็นเพียงหน้ากากเท่านั้น แต่จะเพิ่มบางส่วนเท่านั้นคือ mileston และ ticket ซึ่งตัวที่รันจริงๆ จะเป็นตัวจัดการโค้ด Subversion (จะเป็นตัวอื่นก็ได้ ไม่จำกัด) ซึ่งการติดตั้ง Subversion จะอยู่ใน


จาก WikiBall


			
Subversion เป็นโปรแกรมที่ใชัสร้าง และจัดการ version ของ source code ของเรา





เนื้อหา


1 การติดตั้ง

1.1 การใช้งานร่วมกับ apache2


2 การใช้งาน

2.1 สร้าง repository
2.2 นำเข้า (import) project
2.3 การเข้าผ่าน apache
2.4 คู่มือการใช้งาน
2.5 การ config svnserve
2.6 SVN Client


3 svn service [...]]]></description>
			<content:encoded><![CDATA[<p>เนื่องจากเมื่อลง trac แล้วกลับยังใช้ browse source ไม่ได้ จึงได้หาข้อมูลในส่วนนี้ จึงทำให้รู้ว่า trac นั้น จะ run ตรงส่วนของ browse source เป็นเพียงหน้ากากเท่านั้น แต่จะเพิ่มบางส่วนเท่านั้นคือ mileston และ ticket ซึ่งตัวที่รันจริงๆ จะเป็นตัวจัดการโค้ด Subversion (จะเป็นตัวอื่นก็ได้ ไม่จำกัด) ซึ่งการติดตั้ง Subversion จะอยู่ใน<br />
<span id="more-165"></span></p>
<div id="bodyContent">
<h3 id="siteSub"><a href="http://wiki.memoball.info/index.php/Subversion">จาก WikiBall</a></h3>
<div id="contentSub"></div>
<div id="jump-to-nav"></div>
<p>			<!-- start content --></p>
<p>Subversion เป็นโปรแกรมที่ใชัสร้าง และจัดการ version ของ source code ของเรา
</p>
<table id="toc" class="toc" summary="เนื้อหา">
<tr>
<td>
<div id="toctitle">
<h2>เนื้อหา</h2>
</div>
<ul>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87" ref="toc"><span class="tocnumber">1</span> <span class="toctext">การติดตั้ง</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99.E0.B8.A3.E0.B9.88.E0.B8.A7.E0.B8.A1.E0.B8.81.E0.B8.B1.E0.B8.9A_apache2" ref="toc"><span class="tocnumber">1.1</span> <span class="toctext">การใช้งานร่วมกับ apache2</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" ref="toc"><span class="tocnumber">2</span> <span class="toctext">การใช้งาน</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_repository" ref="toc"><span class="tocnumber">2.1</span> <span class="toctext">สร้าง repository</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.99.E0.B8.B3.E0.B9.80.E0.B8.82.E0.B9.89.E0.B8.B2_.28import.29_project" ref="toc"><span class="tocnumber">2.2</span> <span class="toctext">นำเข้า (import) project</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.80.E0.B8.82.E0.B9.89.E0.B8.B2.E0.B8.9C.E0.B9.88.E0.B8.B2.E0.B8.99_apache" ref="toc"><span class="tocnumber">2.3</span> <span class="toctext">การเข้าผ่าน apache</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.84.E0.B8.B9.E0.B9.88.E0.B8.A1.E0.B8.B7.E0.B8.AD.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" ref="toc"><span class="tocnumber">2.4</span> <span class="toctext">คู่มือการใช้งาน</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3_config_svnserve" ref="toc"><span class="tocnumber">2.5</span> <span class="toctext">การ config svnserve</span></a></li>
<li class="toclevel-2"><a href="./#SVN_Client" ref="toc"><span class="tocnumber">2.6</span> <span class="toctext">SVN Client</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#svn_service_file" ref="toc"><span class="tocnumber">3</span> <span class="toctext">svn service file</span></a></li>
<li class="toclevel-1"><a href="./#Troubleshooting" ref="toc"><span class="tocnumber">4</span> <span class="toctext">Troubleshooting</span></a></li>
<li class="toclevel-1"><a href="./#.E0.B8.AD.E0.B8.B7.E0.B9.88.E0.B8.99.E0.B9.86_.E0.B8.97.E0.B8.B5.E0.B9.88.E0.B9.80.E0.B8.81.E0.B8.B5.E0.B9.88.E0.B8.A2.E0.B8.A7.E0.B8.82.E0.B9.89.E0.B8.AD.E0.B8.87" ref="toc"><span class="tocnumber">5</span> <span class="toctext">อื่นๆ ที่เกี่ยวข้อง</span></a></li>
</ul>
</td>
</tr>
</table>
<p><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "แสดง"; var tocHideText = "ซ่อน"; showTocToggle(); } </script><br />
<a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การติดตั้ง </span></h2>
<p>สำหรับ Ubuntu
</p>
<pre>$ sudo apt-get install apt-get install subversion</pre>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99.E0.B8.A3.E0.B9.88.E0.B8.A7.E0.B8.A1.E0.B8.81.E0.B8.B1.E0.B8.9A_apache2" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การใช้งานร่วมกับ apache2 </span></h3>
<p>ติดตั้ง apache module
</p>
<pre>$ sudo apt-get install libapache2-svn</pre>
<p>สร้าง diretory ดังตัวอย่าง หรืออย่างอื่นก็ได้
</p>
<pre>
mkdir /var/svn
mkdir /var/svn/repository
</pre>
<p>แก้ไขค่า permission
</p>
<pre>
chown www-data:www-data -R /var/svn/repository
chmod 770 -R /var/svn/repository
</pre>
<p>แก้ไข apache svn module configuration file&nbsp;: <b>/etc/apache2/mods-available/dav_svn.conf</b>
</p>
<pre>
...
SVNParentPath /var/svn/repository
#SVNPath /var/svn/repository
.....
AuthType Basic
AuthName &quot;Subversion Repository&quot;
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
...
</pre>
<p>สร้าง htaccess
</p>
<pre>
htpasswd2 -c /etc/apache2/dav_svn.passwd tester
</pre>
<p>ref&nbsp;: <a href="http://www.debuntu.org/2006/05/20/54-how-to-subversion-svn-with-apache2-and-dav" class="external free" title="http://www.debuntu.org/2006/05/20/54-how-to-subversion-svn-with-apache2-and-dav" rel="nofollow">http://www.debuntu.org/2006/05/20/54-how-to-subversion-svn-with-apache2-and-dav</a>
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การใช้งาน </span></h2>
<p><a name=".E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_repository" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> สร้าง repository </span></h3>
<p>ตัวอย่างการสร้าง
</p>
<pre>$ svnadmin create /var/svn/repository/example</pre>
<p><a name=".E0.B8.99.E0.B8.B3.E0.B9.80.E0.B8.82.E0.B9.89.E0.B8.B2_.28import.29_project" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> นำเข้า (import) project </span></h3>
<pre>$ svn import /path/to/projectexample file:///var/svn/repository/example/examplev1 -m&quot;initial import&quot; </pre>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.80.E0.B8.82.E0.B9.89.E0.B8.B2.E0.B8.9C.E0.B9.88.E0.B8.B2.E0.B8.99_apache" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การเข้าผ่าน apache </span></h3>
<pre>http://servername/svn/project</pre>
<p><a name=".E0.B8.84.E0.B8.B9.E0.B9.88.E0.B8.A1.E0.B8.B7.E0.B8.AD.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B9.83.E0.B8.8A.E0.B9.89.E0.B8.87.E0.B8.B2.E0.B8.99" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> คู่มือการใช้งาน </span></h3>
<ol>
<li><a href="http://svnbook.red-bean.com/" class="external text" title="http://svnbook.red-bean.com/" rel="nofollow">SVN Command line 1</a>
</li>
<li><a href="http://www.yolinux.com/TUTORIALS/Subversion.html#COMMAND" class="external text" title="http://www.yolinux.com/TUTORIALS/Subversion.html#COMMAND" rel="nofollow">SVN Command line 2</a>
</li>
<li><a href="http://home.thep.lu.se/~jari/documents/subversion_guidelines/subversion_guidelines.pdf" class="external text" title="http://home.thep.lu.se/~jari/documents/subversion_guidelines/subversion_guidelines.pdf" rel="nofollow">คู่มือการใช้งาน Subversion</a>
</li>
<li><a href="http://www.rapidsvn.org/index.php/Documentation#Linux.2FUnix" class="external text" title="http://www.rapidsvn.org/index.php/Documentation#Linux.2FUnix" rel="nofollow">คู่มือการใช้งาน RapidSVN</a>
</li>
</ol>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3_config_svnserve" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การ config svnserve </span></h3>
<p>svnserve คือ daemon สำหรับ svn โดยที่เราสามารถ login ผ่านทาง <a href="http://wiki.memoball.info//index.php/Subversion#SVN_Client" title="Subversion">SVN client</a> ต่างๆ โดยผ่านโปรโตคอล svn
</p>
<pre>
svn://hostname:port/repos
</pre>
<p>ทดสอบรับ daemon แบบ forground โดยใช้คำสั่ง
</p>
<pre>
$ sudo svnserve -d --listen-port=port --foreground -r  root/path
</pre>
<p>เรียกเป็น http ใน browser ถ้าขึ้นในลักษณะนี้แสดงว่ารันได้แล้ว
</p>
<pre>
( success ( 1 2 ( ANONYMOUS ) ( edit-pipeline svndiff1 absent-entries ) ) )
</pre>
<p>ตัว svnserve นี้จะไม่มี file ใน init.d มาให้เราจะต้องสร้างเองดังนี้<br />
<a href="http://wiki.memoball.info//images/8/88/Svnserve.tar.gz" class="internal" title="Svnserve.tar.gz">สื่อ:svnserve.tar.gz</a>
</p>
<p>อย่าลืมตั้งค่า authentication ใน <i>/path/to/repository/conf</i>
</p>
<p><a name="SVN_Client" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> SVN Client </span></h3>
<p>สำหรับที่ผู้ที่ไม่อยากใช้ SVN แบบ command line ใช้แบบ command line ไม่เป็น(เช่นเดียวกับผม) จะมี GUI กระต่ายกับเต่า ให้เลือกใช้ได้ดังนี้
</p>
<ol>
<li><a href="http://tortoisesvn.tigris.org/" class="external text" title="http://tortoisesvn.tigris.org/" rel="nofollow">TortoiseSVN-(Windows)</a>
</li>
<li><a href="http://rapidsvn.tigris.org/" class="external text" title="http://rapidsvn.tigris.org/" rel="nofollow">RapidSVN-(Ubuntu+Mac+Windows)</a>
</li>
</ol>
<p>ref&nbsp;: <a href="http://agaricdesign.com/note/subversion-client-ubuntu-anything-tortoisesvn" class="external free" title="http://agaricdesign.com/note/subversion-client-ubuntu-anything-tortoisesvn" rel="nofollow">http://agaricdesign.com/note/subversion-client-ubuntu-anything-tortoisesvn</a>
</p>
<p><a name="svn_service_file" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> svn service file </span></h2>
<pre>
#!/bin/sh -e
#
# svnserve - brings up the svn server so anonymous users
# can access svn
#

# Get LSB functions
. /lib/lsb/init-functions
. /etc/default/rcS

SVNSERVE=/usr/bin/svnserve
SVN_USER=svn
SVN_GROUP=svn
SVN_REPO_PATH=/var/svn/repository/
SVN_PORT=8000

# Check that the package is still installed
[ -x $SVNSERVE ] || exit 0;

case &quot;$1&quot; in
	start)
		log_begin_msg &quot;Starting svnserve...&quot;
		umask 002
		if start-stop-daemon --start \
		--chuid $SVN_USER:$SVN_GROUP \
		--exec $SVNSERVE \
		-- -d --listen-port=$SVN_PORT -r $SVN_REPO_PATH; then
			log_end_msg 0
		else
			log_end_msg $?
		fi
	;;

	stop)
		log_begin_msg &quot;Stopping svnserve...&quot;
		if start-stop-daemon --stop --exec $SVNSERVE; then
		log_end_msg 0
		else
		log_end_msg $?
		fi
	;;

	restart|force-reload)
		&quot;$0&quot; stop &amp;&amp; &quot;$0&quot; start
	;;

	*)
	echo &quot;Usage: /etc/init.d/svnserve {start|stop|restart|force-reload}&quot;
		exit 1
	;;
esac

exit 0
</pre>
<p><a name="Troubleshooting" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Troubleshooting </span></h2>
<ul>
<li>import ไม่ได้
</li>
</ul>
<pre>
svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///Development/subversion/foo'
</pre>
<p>เหตุการณ์ดังกล่าวเกิดขึ้นได้ 2 กรณี คือ
</p>
<pre> #path ดังกล่าวไม่สามารถเข้าไปได้ เช่น ติด permission
 #ใส่ path กับ URL สรับกัน
</pre>
<p><a name=".E0.B8.AD.E0.B8.B7.E0.B9.88.E0.B8.99.E0.B9.86_.E0.B8.97.E0.B8.B5.E0.B9.88.E0.B9.80.E0.B8.81.E0.B8.B5.E0.B9.88.E0.B8.A2.E0.B8.A7.E0.B8.82.E0.B9.89.E0.B8.AD.E0.B8.87" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> อื่นๆ ที่เกี่ยวข้อง </span></h2>
<p><!--<br />
NewPP limit report<br />
Preprocessor node count: 55/1000000<br />
Post-expand include size: 0/2097152 bytes<br />
Template argument size: 0/2097152 bytes<br />
Expensive parser function count: 0/100<br />
--></p>
<p><!-- Saved in parser cache with key memoball_wiki:pcache:idhash:6-0!1!0!!th!2!edit=0 and timestamp 20090825100730 --></p>
<div class="printfooter">
<h5>รับข้อมูลจาก (Reference) : </h5>
<p>จาก WikiBall : <a href="http://wiki.memoball.info/index.php/Subversion">http://wiki.memoball.info/index.php/Subversion</a></div>
<div id='catlinks' class='catlinks'>
<div id="mw-normal-catlinks"><a href="http://wiki.memoball.info//index.php/%E0%B8%9E%E0%B8%B4%E0%B9%80%E0%B8%A8%E0%B8%A9:Categories" title="พิเศษ:Categories">หมวดหมู่</a>:&#32;<span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:SVN&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:SVN (ยังไม่ได้สร้าง)">SVN</a></span></div>
</div>
<p>			<!-- end content --></p>
<div class="visualClear"></div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.memoball.info/01/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-subversion-%e0%b9%80%e0%b8%9e%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%81%e0%b8%b1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ปัญหาการใช้ web interface ของ trac</title>
		<link>http://www.memoball.info/01/%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a%e0%b9%89-web-interface-%e0%b8%82%e0%b8%ad%e0%b8%87-trac/</link>
		<comments>http://www.memoball.info/01/%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a%e0%b9%89-web-interface-%e0%b8%82%e0%b8%ad%e0%b8%87-trac/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 06:32:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Trac & SVN]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[trac]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://memoball.nabzer.com/?p=124</guid>
		<description><![CDATA[หลังจากสร้าง wiki เป็นของตัวเอง จึงได้รวบรวมปัญหา และการติดตั้งเป็นอันเดียวกันใน wiki
โดยมีวิธีการที่ง่าย และสะดวกกว่าที่ การติดตั้ง SVN &#38; Trac ร่วมกับ Apache ใน Ubuntu


จาก WikiBall


			




เนื้อหา


1 การติดตั้ง
2 การสร้าง project enviroment
3 การทำ Authentication

3.1 การสร้างแบบ .htpasswd
3.2 การสร้างแบบ .htdigest


4 การรัน Service ของ trac

4.1 การรันโดยใช้ Basic Authentiction
4.2 การรันโดยใช้ Digest Authentiction
4.3 การรันแบบ Multiple Project
4.4 Service tracd


5 การทำ NGINX + TRAC
6 การสร้าง Repository
7 Troubleshooting

7.1 โหลดโปรเจคไม่ขึ้น
7.2 admin tab ไม่ขึ้น
7.3 login ไม่ได้
7.4 repository [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากสร้าง wiki เป็นของตัวเอง จึงได้รวบรวมปัญหา และการติดตั้งเป็นอันเดียวกันใน wiki<br />
<strong>โดยมีวิธีการที่ง่าย และสะดวกกว่าที่</strong> <strong></strong><strong><a title="Edit “การติดตั้ง SVN &amp; Trac ร่วมกับ Apache ใน Ubuntu”" href="http://www.memoball.info/10/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-svn-trac-%e0%b8%a3%e0%b9%88%e0%b8%a7%e0%b8%a1%e0%b8%81%e0%b8%b1%e0%b8%9a-apache-%e0%b9%83%e0%b8%99-ubun/">การติดตั้ง SVN &amp; Trac ร่วมกับ Apache ใน Ubuntu</a></strong><br />
<span id="more-124"></span></p>
<div id="bodyContent">
<h3 id="siteSub"><a href="http://wiki.memoball.info/index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_trac_%E0%B8%9A%E0%B8%99_linux_%28Ubuntu%29">จาก WikiBall</a></h3>
<div id="contentSub"></div>
<div id="jump-to-nav"></div>
<p>			<!-- start content --></p>
<table id="toc" class="toc" summary="เนื้อหา">
<tr>
<td>
<div id="toctitle">
<h2>เนื้อหา</h2>
</div>
<ul>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87" ref="toc"><span class="tocnumber">1</span> <span class="toctext">การติดตั้ง</span></a></li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_project_enviroment" ref="toc"><span class="tocnumber">2</span> <span class="toctext">การสร้าง project enviroment</span></a></li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.97.E0.B8.B3_Authentication" ref="toc"><span class="tocnumber">3</span> <span class="toctext">การทำ Authentication</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87.E0.B9.81.E0.B8.9A.E0.B8.9A_.htpasswd" ref="toc"><span class="tocnumber">3.1</span> <span class="toctext">การสร้างแบบ .htpasswd</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87.E0.B9.81.E0.B8.9A.E0.B8.9A_.htdigest" ref="toc"><span class="tocnumber">3.2</span> <span class="toctext">การสร้างแบบ .htdigest</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99_Service_.E0.B8.82.E0.B8.AD.E0.B8.87_trac" ref="toc"><span class="tocnumber">4</span> <span class="toctext">การรัน Service ของ trac</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.82.E0.B8.94.E0.B8.A2.E0.B9.83.E0.B8.8A.E0.B9.89_Basic_Authentiction" ref="toc"><span class="tocnumber">4.1</span> <span class="toctext">การรันโดยใช้ Basic Authentiction</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.82.E0.B8.94.E0.B8.A2.E0.B9.83.E0.B8.8A.E0.B9.89_Digest_Authentiction" ref="toc"><span class="tocnumber">4.2</span> <span class="toctext">การรันโดยใช้ Digest Authentiction</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.81.E0.B8.9A.E0.B8.9A_Multiple_Project" ref="toc"><span class="tocnumber">4.3</span> <span class="toctext">การรันแบบ Multiple Project</span></a></li>
<li class="toclevel-2"><a href="./#Service_tracd" ref="toc"><span class="tocnumber">4.4</span> <span class="toctext">Service tracd</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.97.E0.B8.B3_NGINX_.2B_TRAC" ref="toc"><span class="tocnumber">5</span> <span class="toctext">การทำ NGINX + TRAC</span></a></li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_Repository" ref="toc"><span class="tocnumber">6</span> <span class="toctext">การสร้าง Repository</span></a></li>
<li class="toclevel-1"><a href="./#Troubleshooting" ref="toc"><span class="tocnumber">7</span> <span class="toctext">Troubleshooting</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B9.82.E0.B8.AB.E0.B8.A5.E0.B8.94.E0.B9.82.E0.B8.9B.E0.B8.A3.E0.B9.80.E0.B8.88.E0.B8.84.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B8.82.E0.B8.B6.E0.B9.89.E0.B8.99" ref="toc"><span class="tocnumber">7.1</span> <span class="toctext">โหลดโปรเจคไม่ขึ้น</span></a></li>
<li class="toclevel-2"><a href="./#admin_tab_.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B8.82.E0.B8.B6.E0.B9.89.E0.B8.99" ref="toc"><span class="tocnumber">7.2</span> <span class="toctext">admin tab ไม่ขึ้น</span></a></li>
<li class="toclevel-2"><a href="./#login_.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B9.84.E0.B8.94.E0.B9.89" ref="toc"><span class="tocnumber">7.3</span> <span class="toctext">login ไม่ได้</span></a></li>
<li class="toclevel-2"><a href="./#repository_.26_SVN_error" ref="toc"><span class="tocnumber">7.4</span> <span class="toctext">repository &amp; SVN error</span></a></li>
<li class="toclevel-2"><a href="./#HTML_preview_not_available" ref="toc"><span class="tocnumber">7.5</span> <span class="toctext">HTML preview not available</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#Plugin" ref="toc"><span class="tocnumber">8</span> <span class="toctext">Plugin</span></a></li>
<li class="toclevel-1"><a href="./#Reference" ref="toc"><span class="tocnumber">9</span> <span class="toctext">Reference</span></a></li>
</ul>
</td>
</tr>
</table>
<p><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "แสดง"; var tocHideText = "ซ่อน"; showTocToggle(); } </script><br />
<a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การติดตั้ง </span></h2>
<p>ขั้นแรกติดตั้ง apache, sqlite
</p>
<p>ต่อไป download source จาก&lt;a href=&#8221;http://&#8221;&gt; <a href="http://trac.edgewall.org/wiki/TracDownload" class="external free" title="http://trac.edgewall.org/wiki/TracDownload" rel="nofollow">http://trac.edgewall.org/wiki/TracDownload</a>&lt;/a&gt;<br />
ระเบิด(Extract) มันออกมา (ถ้าเป็น tar.gz)
</p>
<pre>$ tar -xzf trac.tar.gz</pre>
<p>เข้าไปยัง source ที่ระเบิดได้<br />
ถ้ายังไม่มี python ก็ในลง python ก่อน แต่ Ubuntu ตัวใหม่ๆ จะมีมาให้อยู่แล้วแต่ยังไม่มี setuptools ตังนั้น ใช้คำสั่งนี้ลงได้ทีเดียวเลยครับ
</p>
<pre>$ sudo apt-get install python-setuptools</pre>
<p>ต่อไป compile เลย
</p>
<pre>$ sudo python ./setup.py install</pre>
<p>ดูเพิ่มเติมได้ที่ &gt; <a href="http://trac.edgewall.org/wiki/TracInstall" class="external text" title="http://trac.edgewall.org/wiki/TracInstall" rel="nofollow">การติดตั้ง Trac</a>
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_project_enviroment" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การสร้าง project enviroment </span></h2>
<p>รันคำสั่ง
</p>
<pre>$ trac-admin /path/to/myproject initenv</pre>
<p>ดู option ต่างๆ ได้ที่ การใช้  [<a href="http://wiki.memoball.info/index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99_trac#initenv" class="external text" title="http://wiki.memoball.info/index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99_trac#initenv" rel="nofollow">initenv</a>]
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.97.E0.B8.B3_Authentication" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การทำ Authentication </span></h2>
<p>trac นั้นจะใช้การ Authentication ผ่าน apache จะง่ายกว่ามากครับ<br />
โดยในที่นี้จะกล่าวถึงเฉพาะ tracd หรือ Trac แบบ standalone เท่านั้นโดยมีวิธีทำดังนี้
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87.E0.B9.81.E0.B8.9A.E0.B8.9A_.htpasswd" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การสร้างแบบ .htpasswd </span></h3>
<pre>htpasswd -c /path/to/env/.htpasswd username</pre>
<p>เพิ่ม user ที่ต้องการ
</p>
<pre>sudo htpasswd /path/to/env/.htpasswd username2</pre>
<p>รัน tracd โดยใช้ option &#8211; -basic-auth
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87.E0.B9.81.E0.B8.9A.E0.B8.9A_.htdigest" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การสร้างแบบ .htdigest </span></h3>
<pre>htdigest -c /path/to/env/.htpasswd realm username</pre>
<p>เพิ่ม user ที่ต้องการ
</p>
<pre>htdigest /path/to/env/.htpasswd realm username</pre>
<p>รัน tracd โดยใช้ option &#8211; -auth
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99_Service_.E0.B8.82.E0.B8.AD.E0.B8.87_trac" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การรัน Service ของ trac </span></h2>
<p>การรัน Service ของ trac นั้นจะแบ่งเป็น 2 ลักษณะคือ
</p>
<ol>
<li>Standalone&nbsp;: รันบน tracd พอร์ต(port) 8000 ซึ่งสามารถวิ่งใช้บน localhost ได้สบายๆ<br />
<a href="http://trac.mailgothai.net/demo/wiki/TracStandalone" class="external text" title="http://trac.mailgothai.net/demo/wiki/TracStandalone" rel="nofollow">standalone</a></li>
<li>WebService&nbsp;: รันบน <a href="http://trac.edgewall.org/wiki/TracCgi" class="external text" title="http://trac.edgewall.org/wiki/TracCgi" rel="nofollow">TracCgi</a> หรือ <a href="http://trac.edgewall.org/wiki/TracModPython" class="external text" title="http://trac.edgewall.org/wiki/TracModPython" rel="nofollow">TracModPython</a>
</li>
</ol>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.82.E0.B8.94.E0.B8.A2.E0.B9.83.E0.B8.8A.E0.B9.89_Basic_Authentiction" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การรันโดยใช้ Basic Authentiction </span></h3>
<pre>tracd -p 8080 --basic-auth=environmentname,/fullpath/environmentname/.htpasswd,/fullpath/environmentname /fullpath/environmentname
</pre>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.82.E0.B8.94.E0.B8.A2.E0.B9.83.E0.B8.8A.E0.B9.89_Digest_Authentiction" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การรันโดยใช้ Digest Authentiction </span></h3>
<pre>$ tracd -p port --auth=base_project_dir,password_file_path,realm project_path</pre>
<ul>
<li><strong>base_project_dir </strong>คือ directory หลักของ project (ตัวเล็กใหญ่มีผล)</li>
<li><strong>password_file_path</strong> คือ path ที่อยู่ของไฟล์รหัสผ่าน</li>
<li><strong>realm</strong> คือ ชื่อที่อยู่ของโปรเจค (URL)</li>
<li><strong>project_path</strong> คือ ที่อยู่ของ project</li>
</ul>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.81.E0.B8.9A.E0.B8.9A_Multiple_Project" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การรันแบบ Multiple Project </span></h3>
<pre>$ tracd -p 8080 \
   --auth=project1,/path/to/users.htdigest,mycompany.com /path/to/project1
</pre>
<pre>$ tracd -p 8080 \
   --auth=project1,/path/to/users.htdigest,mycompany.com \
   --auth=project2,/path/to/users.htdigest,mycompany.com \
   /path/to/project1 /path/to/project2
</pre>
<pre>$ tracd -p 8080 \
   --auth=&quot;*&quot;,/path/to/users.htdigest,mycompany.com \
   /path/to/project1 /path/to/project2
</pre>
<p><b>ระวังห้ามใส่ตัวใหญ่</b>
</p>
<p><a name="Service_tracd" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> Service tracd </span></h3>
<p>ใส่ script ดังนี้ใน /etc/init.d/tracd
</p>
<pre>
#! /bin/sh
#
# tracd		Trac standalone server daemon
#
# Author:	cocoaberry
#

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC=&quot;Trac standalone server&quot;
NAME=tracd
DAEMON=/usr/bin/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

# defaults for tracd
TRACD_PORT=8080
TRACD_BIND_ADDRESS=0.0.0.0
TRACD_EXTRA_OPTS=

# Read config file if it is present.
if [ -r /etc/default/$NAME ]
then
	. /etc/default/$NAME
fi

#
#	Function that starts the daemon/service.
#
d_start() {
	start-stop-daemon --start --background --make-pidfile --quiet \
		--pidfile $PIDFILE --chuid $TRACD_USER \
		--exec $DAEMON -- $TRACD_EXTRA_OPTS --port $TRACD_PORT --hostname $TRACD_BIND_ADDRESS $TRACD_ENVIRONMENTS
}

#
#	Function that stops the daemon/service.
#
d_stop() {
	start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
		--name $NAME
}

case &quot;$1&quot; in
  start)
	echo -n &quot;Starting $DESC: $NAME&quot;
	d_start
	echo &quot;.&quot;
	;;
  stop)
	echo -n &quot;Stopping $DESC: $NAME&quot;
	d_stop
	echo &quot;.&quot;
	;;
  restart|force-reload)
	#
	#	If the &quot;reload&quot; option is implemented, move the &quot;force-reload&quot;
	#	option to the &quot;reload&quot; entry above. If not, &quot;force-reload&quot; is
	#	just the same as &quot;restart&quot;.
	#
	echo -n &quot;Restarting $DESC: $NAME&quot;
	d_stop
	sleep 1
	d_start
	echo &quot;.&quot;
	;;
  *)
	echo &quot;Usage: $SCRIPTNAME {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
</pre>
<p>โดยตั้งค่าไหม่ดังตัวอย่าง
</p>
<pre>
TRACD_USER=tracd
 # The environments that tracd manages. If more than one, separate
 # with spaces
TRACD_ENVIRONMENTS=/home/tracd/trac-env
 # Extra options to tracd
TRACD_EXTRA_OPTS=&quot;--auth *,/home/tracd/trac.htdigest,TracRealm&quot;
</pre>
<p>ref&nbsp;: <a href="http://codesnippets.joyent.com/tag/tracd" class="external free" title="http://codesnippets.joyent.com/tag/tracd" rel="nofollow">http://codesnippets.joyent.com/tag/tracd</a>
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.97.E0.B8.B3_NGINX_.2B_TRAC" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การทำ NGINX + TRAC </span></h2>
<p>แต่ในที่นี้จะกล่าวถึงการใช้ Standalone บนโดยใช้ nginx มาวิ่งเป็น webservice แบบ proxy<br />
ต่อไป ทำการสร้าง project environment
</p>
<pre>$ trac-admin /path/to/myproject initenv</pre>
<p>รันแบบ standalone ได้เลย
</p>
<pre>tracd --port 8000 /path/to/myproject</pre>
<p>จากนั้นไป set ใน nginx ให้ ทำ proxy มาที่ service ที่เราใส่ไว้
</p>
<pre>
    server {
        listen       80;
        server_name  trac.xxxxxxxxxx.com;

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #

        location /OC/report {
            root /var/trac/test/htdocs;
            autoindex on;
        }

        location / {
            proxy_pass   http://127.0.0.1:8001;
        }

        location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
            proxy_pass   http://127.0.0.1:8001;

            #root /var/trac/test/htdocs;
        }

        location /munin/ {
            root /var/trac/test/htdocs;
        }
    }
</pre>
<p>ดูเพิ่มเติมได้ที่&nbsp;: <a href="http://wiki.memoball.info//index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%AA%E0%B8%B3%E0%B8%AB%E0%B8%A3%E0%B8%B1%E0%B8%9A_nginx_%28Nginx_configuration%29" title="การตั้งค่าสำหรับ nginx (Nginx configuration)">การตั้งค่าสำหรับ_nginx_(Nginx_configuration)</a>
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_Repository" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การสร้าง Repository </span></h2>
<p>เนื่องจาก trac เองเป็นแค่หน้ากากครอบตัว svn อยู่เท่านั้น ดังนั้นเราจึงต้องสร้าง repository ผ่านท่าง <a href="http://wiki.memoball.info//index.php/Subversion" title="Subversion">subversion</a> เท่านั้น
</p>
<p><a name="Troubleshooting" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Troubleshooting </span></h2>
<p><a name=".E0.B9.82.E0.B8.AB.E0.B8.A5.E0.B8.94.E0.B9.82.E0.B8.9B.E0.B8.A3.E0.B9.80.E0.B8.88.E0.B8.84.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B8.82.E0.B8.B6.E0.B9.89.E0.B8.99" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> โหลดโปรเจคไม่ขึ้น </span></h3>
<p>เกิด error ดังต่อไปนี้
</p>
<pre>
Traceback (most recent call last):
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/api.py&quot;, line 367, in send_error
    'text/html')
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/chrome.py&quot;, line 688, in render_template
    data = self.populate_data(req, data)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/chrome.py&quot;, line 596, in populate_data
    d['chrome'].update(req.chrome)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/api.py&quot;, line 194, in __getattr__
    value = self.callbacks[name](self)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/chrome.py&quot;, line 464, in prepare_request
    for category, name, text in contributor.get_navigation_items(req):
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/ticket/web_ui.py&quot;, line 162, in get_navigation_items
    if 'TICKET_CREATE' in req.perm:
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 523, in has_permission
    return self._has_permission(action, resource)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 537, in _has_permission
    check_permission(action, perm.username, resource, perm)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 424, in check_permission
    perm)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 282, in check_permission
    get_user_permissions(username)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 357, in get_user_permissions
    for perm in self.store.get_user_permissions(username):
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 173, in get_user_permissions
    db = self.env.get_db_cnx()
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/env.py&quot;, line 264, in get_db_cnx
    return DatabaseManager(self).get_connection()
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/api.py&quot;, line 76, in get_connection
    return self._cnx_pool.get_cnx(self.timeout or None)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/pool.py&quot;, line 174, in get_cnx
    return _backend.get_cnx(self._connector, self._kwargs, timeout)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/pool.py&quot;, line 107, in get_cnx
    cnx = connector.get_connection(**kwargs)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/sqlite_backend.py&quot;, line 126, in get_connection
    return SQLiteConnection(path, params)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/sqlite_backend.py&quot;, line 159, in __init__
    raise TracError('Database &quot;%s&quot; not found.'&nbsp;% path)
TracError: Database &quot;/var/trac/test/test.db&quot; not found.
</pre>
<p>สาเหตุ
</p>
<ul>
<li>เกิดจากการสร้าง environment ของโปรเจคนั้นๆ ไม่สมบูรณ์ ให้สร้าง environment ใหม่ โดยให้ขึ้น complete ด้วย ซึ่งในบางครั้งมีไฟล์ใหม่ใน path แต่ก็ยังไม่สมบูรณ์ สังเกตได้จากการรายงานของ trac-admin ตอนส้าง
</li>
<li>ไม่สามารถเปิดไฟล์ DB ของ Sqlite ได้ เนื่องจากติด permission ของ OS
</li>
</ul>
<p><a name="admin_tab_.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B8.82.E0.B8.B6.E0.B9.89.E0.B8.99" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> admin tab ไม่ขึ้น </span></h3>
<p>ยังไม่ได้ Authen
</p>
<p><a name="login_.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B9.84.E0.B8.94.E0.B9.89" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> login ไม่ได้ </span></h3>
<p>ในกรณีนี้จะเกิด error ที่หน้า login เพราะ ไม่ได้ run แบบ authentication หรือ file authentication เกิดการผิดพลาด สังเกตดูว่ามีข้อผิดพลาด(warning)ขณะรัน tracd หรือไม่ ถ้าไม่ ลองดูกรณีของชื่อโปรเจคหรือไม่(ต้องใส่ตัวเล็ก)
</p>
<p>ในกรณีทีทำทุกอย่างถูกต้องแล้วแต่ยังไม่สามารถทำ authentication ได้นั้น อาจเป้นเพราะ เมื่อรัน tracd ในส่วน &#8211;suthen=project นั้นให้ใส่ path ของเราที่เหมือนกัน URL ใน browser ของเรา เช่น โปรเจค DEMO ซึ่งในหน้า Browser ของเราปรากฎเป็น xxx.xxxxx.com/env/  ก็ใช้ใส่เป็น &#8211;authen=env<br />
<a href="http://trac.edgewall.org/wiki/TracSubversion#unsupported-vcs" class="external free" title="http://trac.edgewall.org/wiki/TracSubversion#unsupported-vcs" rel="nofollow">http://trac.edgewall.org/wiki/TracSubversion#unsupported-vcs</a>
</p>
<p><a name="repository_.26_SVN_error" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> repository &amp; SVN error </span></h3>
<pre>Warning: Can't synchronize with the repository (Unsupported version control system &quot;svn&quot;: &quot;No module named svn&quot; ). Look in the Trac log for more information.</pre>
<p><b>Trac Error</b>
</p>
<pre>Unsupported version control system &quot;svn&quot;: &quot;No module named svn&quot;</pre>
<p>ลองทดสอบดูว่า subversion module ของ python ได้ถูกติดตั้งไว้หรือไม่
</p>
<pre>http://trac.edgewall.org/wiki/TracSubversion#unsupported-vcs</pre>
<p>ถ้าขึ้นข้อความมาแสดงว่ายังไม่ได้ลง ใช้ติดตั้งดังนี้
</p>
<pre>$ apt-get install python-subversion</pre>
<p><a name="HTML_preview_not_available" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> HTML preview not available </span></h3>
<pre>HTML preview not available, since no preview renderer could handle it. Try downloading the file instead. </pre>
<p>ถ้าไปเปิดใน log ดูจะเห็นว่า
</p>
<pre>
WARNING: HTML preview using &lt;trac.mimeview.php.PHPRenderer object at 0x86db16c&gt; failed (Running (php -sn) failed: 127, sh: php: not found .) Traceback (most recent call last):   File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.4-py2.5.egg/trac/mimeview/api.py&quot;, line 715, in render     rendered_content, filename, url)   File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.4-py2.5.egg/trac/mimeview/php.py&quot;, line 93, in render     raise Exception(msg) Exception: Running (php -sn) failed: 127, sh: php: not found .
</pre>
<p>ให้ลง php5-cli ไปก็เปิดได้เรียบร้อย
</p>
<pre>$ sudo apt-get install php5-cli</pre>
<p><a name="Plugin" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Plugin </span></h2>
<ul>
<li><b>ProgressMeter</b>  <a href="http://trac-hacks.org/wiki/ProgressMeterMacro" class="external free" title="http://trac-hacks.org/wiki/ProgressMeterMacro" rel="nofollow">http://trac-hacks.org/wiki/ProgressMeterMacro</a>
</li>
</ul>
<p><a name="Reference" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Reference </span></h2>
<ul>
<li><a href="http://trac.edgewall.org/wiki/TracInstall" class="external free" title="http://trac.edgewall.org/wiki/TracInstall" rel="nofollow">http://trac.edgewall.org/wiki/TracInstall</a>
</li>
<li><a href="http://trac.edgewall.org/wiki/TracEnvironment" class="external free" title="http://trac.edgewall.org/wiki/TracEnvironment" rel="nofollow">http://trac.edgewall.org/wiki/TracEnvironment</a>
</li>
<li><a href="http://trac.edgewall.org/wiki/TracFaq" class="external free" title="http://trac.edgewall.org/wiki/TracFaq" rel="nofollow">http://trac.edgewall.org/wiki/TracFaq</a>
</li>
</ul>
<p><!--<br />
NewPP limit report<br />
Preprocessor node count: 111/1000000<br />
Post-expand include size: 0/2097152 bytes<br />
Template argument size: 0/2097152 bytes<br />
Expensive parser function count: 0/100<br />
--></p>
<p><!-- Saved in parser cache with key memoball_wiki:pcache:idhash:2-0!1!0!!th!2!edit=0 and timestamp 20090824232930 --></p>
<div class="printfooter">
<h5>รับข้อมูลจาก (Reference) : </h5>
<p>จาก WikiBall : <a href="http://wiki.memoball.info/index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_trac_%E0%B8%9A%E0%B8%99_linux_%28Ubuntu%29">http://wiki.memoball.info/index.php/การติดตั้ง_trac_บน_linux_(Ubuntu)</a></div>
<div id='catlinks' class='catlinks'>
<div id="mw-normal-catlinks"><a href="http://wiki.memoball.info//index.php/%E0%B8%9E%E0%B8%B4%E0%B9%80%E0%B8%A8%E0%B8%A9:Categories" title="พิเศษ:Categories">หมวดหมู่</a>:&#32;<span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:SVN&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:SVN (ยังไม่ได้สร้าง)">SVN</a></span> | <span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:Trac&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:Trac (ยังไม่ได้สร้าง)">Trac</a></span></div>
</div>
<p>			<!-- end content --></p>
<div class="visualClear"></div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.memoball.info/01/%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a%e0%b9%89-web-interface-%e0%b8%82%e0%b8%ad%e0%b8%87-trac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>การติดตั้ง trac บน linux (Ubuntu)</title>
		<link>http://www.memoball.info/01/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-trac-%e0%b8%9a%e0%b8%99-linux-ubuntu/</link>
		<comments>http://www.memoball.info/01/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-trac-%e0%b8%9a%e0%b8%99-linux-ubuntu/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 17:30:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Trac & SVN]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://memoball.nabzer.com/?p=116</guid>
		<description><![CDATA[ช่วงนี้กำลังต้องการใช้ SVN ซึ่งใช้จัดการกับโค้ด (source code) ของเราในลักษณะ sub version ทำให้เราสามารถจัดการโค้ดของเราได้ง่ายขึ้น สามารคดูโค้ดย้อนหลัง การเปลี่ยนแปลงต่างๆ ได้ ซึ่งถ้าจำไม่ผิดใครใช้ eclipse ก็มี feature นี้ให้อยู่แล้ว แต่การทำงานเป็นทีมนั้นอาจจะทำให้ทำงานไม่สะดวก ผมจึงเลือกใช้ trac เข้ามาช่วยในการจัดการ
ตอนแรกผมเขียนเป็น blog เกี่ยวกับการติดตั้งไว้หลายอัน แต่สุดท้ายผมเลยเอามารวมกัน แล้วลบส่วนที่ไม่จำเป็นออก ดังนี้


จาก WikiBall


			




เนื้อหา


1 การติดตั้ง
2 การสร้าง project enviroment
3 การทำ Authentication

3.1 การสร้างแบบ .htpasswd
3.2 การสร้างแบบ .htdigest


4 การรัน Service ของ trac

4.1 การรันโดยใช้ Basic Authentiction
4.2 การรันโดยใช้ Digest Authentiction
4.3 การรันแบบ Multiple Project
4.4 Service tracd


5 การทำ NGINX + [...]]]></description>
			<content:encoded><![CDATA[<p>ช่วงนี้กำลังต้องการใช้ SVN ซึ่งใช้จัดการกับโค้ด (source code) ของเราในลักษณะ sub version ทำให้เราสามารถจัดการโค้ดของเราได้ง่ายขึ้น สามารคดูโค้ดย้อนหลัง<span id="more-116"></span> การเปลี่ยนแปลงต่างๆ ได้ ซึ่งถ้าจำไม่ผิดใครใช้ eclipse ก็มี feature นี้ให้อยู่แล้ว แต่การทำงานเป็นทีมนั้นอาจจะทำให้ทำงานไม่สะดวก ผมจึงเลือกใช้ trac เข้ามาช่วยในการจัดการ<br />
ตอนแรกผมเขียนเป็น blog เกี่ยวกับการติดตั้งไว้หลายอัน แต่สุดท้ายผมเลยเอามารวมกัน แล้วลบส่วนที่ไม่จำเป็นออก ดังนี้<br />
<!--more--></p>
<div id="bodyContent">
<h3 id="siteSub"><a href="http://wiki.memoball.info/index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_trac_%E0%B8%9A%E0%B8%99_linux_%28Ubuntu%29">จาก WikiBall</a></h3>
<div id="contentSub"></div>
<div id="jump-to-nav"></div>
<p>			<!-- start content --></p>
<table id="toc" class="toc" summary="เนื้อหา">
<tr>
<td>
<div id="toctitle">
<h2>เนื้อหา</h2>
</div>
<ul>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87" ref="toc"><span class="tocnumber">1</span> <span class="toctext">การติดตั้ง</span></a></li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_project_enviroment" ref="toc"><span class="tocnumber">2</span> <span class="toctext">การสร้าง project enviroment</span></a></li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.97.E0.B8.B3_Authentication" ref="toc"><span class="tocnumber">3</span> <span class="toctext">การทำ Authentication</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87.E0.B9.81.E0.B8.9A.E0.B8.9A_.htpasswd" ref="toc"><span class="tocnumber">3.1</span> <span class="toctext">การสร้างแบบ .htpasswd</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87.E0.B9.81.E0.B8.9A.E0.B8.9A_.htdigest" ref="toc"><span class="tocnumber">3.2</span> <span class="toctext">การสร้างแบบ .htdigest</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99_Service_.E0.B8.82.E0.B8.AD.E0.B8.87_trac" ref="toc"><span class="tocnumber">4</span> <span class="toctext">การรัน Service ของ trac</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.82.E0.B8.94.E0.B8.A2.E0.B9.83.E0.B8.8A.E0.B9.89_Basic_Authentiction" ref="toc"><span class="tocnumber">4.1</span> <span class="toctext">การรันโดยใช้ Basic Authentiction</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.82.E0.B8.94.E0.B8.A2.E0.B9.83.E0.B8.8A.E0.B9.89_Digest_Authentiction" ref="toc"><span class="tocnumber">4.2</span> <span class="toctext">การรันโดยใช้ Digest Authentiction</span></a></li>
<li class="toclevel-2"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.81.E0.B8.9A.E0.B8.9A_Multiple_Project" ref="toc"><span class="tocnumber">4.3</span> <span class="toctext">การรันแบบ Multiple Project</span></a></li>
<li class="toclevel-2"><a href="./#Service_tracd" ref="toc"><span class="tocnumber">4.4</span> <span class="toctext">Service tracd</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.97.E0.B8.B3_NGINX_.2B_TRAC" ref="toc"><span class="tocnumber">5</span> <span class="toctext">การทำ NGINX + TRAC</span></a></li>
<li class="toclevel-1"><a href="./#.E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_Repository" ref="toc"><span class="tocnumber">6</span> <span class="toctext">การสร้าง Repository</span></a></li>
<li class="toclevel-1"><a href="./#Troubleshooting" ref="toc"><span class="tocnumber">7</span> <span class="toctext">Troubleshooting</span></a>
<ul>
<li class="toclevel-2"><a href="./#.E0.B9.82.E0.B8.AB.E0.B8.A5.E0.B8.94.E0.B9.82.E0.B8.9B.E0.B8.A3.E0.B9.80.E0.B8.88.E0.B8.84.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B8.82.E0.B8.B6.E0.B9.89.E0.B8.99" ref="toc"><span class="tocnumber">7.1</span> <span class="toctext">โหลดโปรเจคไม่ขึ้น</span></a></li>
<li class="toclevel-2"><a href="./#admin_tab_.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B8.82.E0.B8.B6.E0.B9.89.E0.B8.99" ref="toc"><span class="tocnumber">7.2</span> <span class="toctext">admin tab ไม่ขึ้น</span></a></li>
<li class="toclevel-2"><a href="./#login_.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B9.84.E0.B8.94.E0.B9.89" ref="toc"><span class="tocnumber">7.3</span> <span class="toctext">login ไม่ได้</span></a></li>
<li class="toclevel-2"><a href="./#repository_.26_SVN_error" ref="toc"><span class="tocnumber">7.4</span> <span class="toctext">repository &amp; SVN error</span></a></li>
<li class="toclevel-2"><a href="./#HTML_preview_not_available" ref="toc"><span class="tocnumber">7.5</span> <span class="toctext">HTML preview not available</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="./#Plugin" ref="toc"><span class="tocnumber">8</span> <span class="toctext">Plugin</span></a></li>
<li class="toclevel-1"><a href="./#Reference" ref="toc"><span class="tocnumber">9</span> <span class="toctext">Reference</span></a></li>
</ul>
</td>
</tr>
</table>
<p><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "แสดง"; var tocHideText = "ซ่อน"; showTocToggle(); } </script><br />
<a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.95.E0.B8.B4.E0.B8.94.E0.B8.95.E0.B8.B1.E0.B9.89.E0.B8.87" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การติดตั้ง </span></h2>
<p>ขั้นแรกติดตั้ง apache, sqlite
</p>
<p>ต่อไป download source จาก&lt;a href=&#8221;http://&#8221;&gt; <a href="http://trac.edgewall.org/wiki/TracDownload" class="external free" title="http://trac.edgewall.org/wiki/TracDownload" rel="nofollow">http://trac.edgewall.org/wiki/TracDownload</a>&lt;/a&gt;<br />
ระเบิด(Extract) มันออกมา (ถ้าเป็น tar.gz)
</p>
<pre>$ tar -xzf trac.tar.gz</pre>
<p>เข้าไปยัง source ที่ระเบิดได้<br />
ถ้ายังไม่มี python ก็ในลง python ก่อน แต่ Ubuntu ตัวใหม่ๆ จะมีมาให้อยู่แล้วแต่ยังไม่มี setuptools ตังนั้น ใช้คำสั่งนี้ลงได้ทีเดียวเลยครับ
</p>
<pre>$ sudo apt-get install python-setuptools</pre>
<p>ต่อไป compile เลย
</p>
<pre>$ sudo python ./setup.py install</pre>
<p>ดูเพิ่มเติมได้ที่ &gt; <a href="http://trac.edgewall.org/wiki/TracInstall" class="external text" title="http://trac.edgewall.org/wiki/TracInstall" rel="nofollow">การติดตั้ง Trac</a>
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_project_enviroment" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การสร้าง project enviroment </span></h2>
<p>รันคำสั่ง
</p>
<pre>$ trac-admin /path/to/myproject initenv</pre>
<p>ดู option ต่างๆ ได้ที่ การใช้  [<a href="http://wiki.memoball.info/index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99_trac#initenv" class="external text" title="http://wiki.memoball.info/index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99_trac#initenv" rel="nofollow">initenv</a>]
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.97.E0.B8.B3_Authentication" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การทำ Authentication </span></h2>
<p>trac นั้นจะใช้การ Authentication ผ่าน apache จะง่ายกว่ามากครับ<br />
โดยในที่นี้จะกล่าวถึงเฉพาะ tracd หรือ Trac แบบ standalone เท่านั้นโดยมีวิธีทำดังนี้
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87.E0.B9.81.E0.B8.9A.E0.B8.9A_.htpasswd" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การสร้างแบบ .htpasswd </span></h3>
<pre>htpasswd -c /path/to/env/.htpasswd username</pre>
<p>เพิ่ม user ที่ต้องการ
</p>
<pre>sudo htpasswd /path/to/env/.htpasswd username2</pre>
<p>รัน tracd โดยใช้ option &#8211; -basic-auth
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87.E0.B9.81.E0.B8.9A.E0.B8.9A_.htdigest" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การสร้างแบบ .htdigest </span></h3>
<pre>htdigest -c /path/to/env/.htpasswd realm username</pre>
<p>เพิ่ม user ที่ต้องการ
</p>
<pre>htdigest /path/to/env/.htpasswd realm username</pre>
<p>รัน tracd โดยใช้ option &#8211; -auth
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99_Service_.E0.B8.82.E0.B8.AD.E0.B8.87_trac" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การรัน Service ของ trac </span></h2>
<p>การรัน Service ของ trac นั้นจะแบ่งเป็น 2 ลักษณะคือ
</p>
<ol>
<li>Standalone&nbsp;: รันบน tracd พอร์ต(port) 8000 ซึ่งสามารถวิ่งใช้บน localhost ได้สบายๆ<br />
<a href="http://trac.mailgothai.net/demo/wiki/TracStandalone" class="external text" title="http://trac.mailgothai.net/demo/wiki/TracStandalone" rel="nofollow">standalone</a></li>
<li>WebService&nbsp;: รันบน <a href="http://trac.edgewall.org/wiki/TracCgi" class="external text" title="http://trac.edgewall.org/wiki/TracCgi" rel="nofollow">TracCgi</a> หรือ <a href="http://trac.edgewall.org/wiki/TracModPython" class="external text" title="http://trac.edgewall.org/wiki/TracModPython" rel="nofollow">TracModPython</a>
</li>
</ol>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.82.E0.B8.94.E0.B8.A2.E0.B9.83.E0.B8.8A.E0.B9.89_Basic_Authentiction" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การรันโดยใช้ Basic Authentiction </span></h3>
<pre>tracd -p 8080 --basic-auth=environmentname,/fullpath/environmentname/.htpasswd,/fullpath/environmentname /fullpath/environmentname
</pre>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.82.E0.B8.94.E0.B8.A2.E0.B9.83.E0.B8.8A.E0.B9.89_Digest_Authentiction" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การรันโดยใช้ Digest Authentiction </span></h3>
<pre>$ tracd -p port --auth=base_project_dir,password_file_path,realm project_path</pre>
<ul>
<li><strong>base_project_dir </strong>คือ directory หลักของ project (ตัวเล็กใหญ่มีผล)</li>
<li><strong>password_file_path</strong> คือ path ที่อยู่ของไฟล์รหัสผ่าน</li>
<li><strong>realm</strong> คือ ชื่อที่อยู่ของโปรเจค (URL)</li>
<li><strong>project_path</strong> คือ ที่อยู่ของ project</li>
</ul>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.A3.E0.B8.B1.E0.B8.99.E0.B9.81.E0.B8.9A.E0.B8.9A_Multiple_Project" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> การรันแบบ Multiple Project </span></h3>
<pre>$ tracd -p 8080 \
   --auth=project1,/path/to/users.htdigest,mycompany.com /path/to/project1
</pre>
<pre>$ tracd -p 8080 \
   --auth=project1,/path/to/users.htdigest,mycompany.com \
   --auth=project2,/path/to/users.htdigest,mycompany.com \
   /path/to/project1 /path/to/project2
</pre>
<pre>$ tracd -p 8080 \
   --auth=&quot;*&quot;,/path/to/users.htdigest,mycompany.com \
   /path/to/project1 /path/to/project2
</pre>
<p><b>ระวังห้ามใส่ตัวใหญ่</b>
</p>
<p><a name="Service_tracd" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> Service tracd </span></h3>
<p>ใส่ script ดังนี้ใน /etc/init.d/tracd
</p>
<pre>
#! /bin/sh
#
# tracd		Trac standalone server daemon
#
# Author:	cocoaberry
#

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC=&quot;Trac standalone server&quot;
NAME=tracd
DAEMON=/usr/bin/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

# defaults for tracd
TRACD_PORT=8080
TRACD_BIND_ADDRESS=0.0.0.0
TRACD_EXTRA_OPTS=

# Read config file if it is present.
if [ -r /etc/default/$NAME ]
then
	. /etc/default/$NAME
fi

#
#	Function that starts the daemon/service.
#
d_start() {
	start-stop-daemon --start --background --make-pidfile --quiet \
		--pidfile $PIDFILE --chuid $TRACD_USER \
		--exec $DAEMON -- $TRACD_EXTRA_OPTS --port $TRACD_PORT --hostname $TRACD_BIND_ADDRESS $TRACD_ENVIRONMENTS
}

#
#	Function that stops the daemon/service.
#
d_stop() {
	start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
		--name $NAME
}

case &quot;$1&quot; in
  start)
	echo -n &quot;Starting $DESC: $NAME&quot;
	d_start
	echo &quot;.&quot;
	;;
  stop)
	echo -n &quot;Stopping $DESC: $NAME&quot;
	d_stop
	echo &quot;.&quot;
	;;
  restart|force-reload)
	#
	#	If the &quot;reload&quot; option is implemented, move the &quot;force-reload&quot;
	#	option to the &quot;reload&quot; entry above. If not, &quot;force-reload&quot; is
	#	just the same as &quot;restart&quot;.
	#
	echo -n &quot;Restarting $DESC: $NAME&quot;
	d_stop
	sleep 1
	d_start
	echo &quot;.&quot;
	;;
  *)
	echo &quot;Usage: $SCRIPTNAME {start|stop|restart|force-reload}&quot; &gt;&amp;2
	exit 1
	;;
esac

exit 0
</pre>
<p>โดยตั้งค่าไหม่ดังตัวอย่าง
</p>
<pre>
TRACD_USER=tracd
 # The environments that tracd manages. If more than one, separate
 # with spaces
TRACD_ENVIRONMENTS=/home/tracd/trac-env
 # Extra options to tracd
TRACD_EXTRA_OPTS=&quot;--auth *,/home/tracd/trac.htdigest,TracRealm&quot;
</pre>
<p>ref&nbsp;: <a href="http://codesnippets.joyent.com/tag/tracd" class="external free" title="http://codesnippets.joyent.com/tag/tracd" rel="nofollow">http://codesnippets.joyent.com/tag/tracd</a>
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.97.E0.B8.B3_NGINX_.2B_TRAC" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การทำ NGINX + TRAC </span></h2>
<p>แต่ในที่นี้จะกล่าวถึงการใช้ Standalone บนโดยใช้ nginx มาวิ่งเป็น webservice แบบ proxy<br />
ต่อไป ทำการสร้าง project environment
</p>
<pre>$ trac-admin /path/to/myproject initenv</pre>
<p>รันแบบ standalone ได้เลย
</p>
<pre>tracd --port 8000 /path/to/myproject</pre>
<p>จากนั้นไป set ใน nginx ให้ ทำ proxy มาที่ service ที่เราใส่ไว้
</p>
<pre>
    server {
        listen       80;
        server_name  trac.xxxxxxxxxx.com;

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #

        location /OC/report {
            root /var/trac/test/htdocs;
            autoindex on;
        }

        location / {
            proxy_pass   http://127.0.0.1:8001;
        }

        location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
            proxy_pass   http://127.0.0.1:8001;

            #root /var/trac/test/htdocs;
        }

        location /munin/ {
            root /var/trac/test/htdocs;
        }
    }
</pre>
<p>ดูเพิ่มเติมได้ที่&nbsp;: <a href="http://wiki.memoball.info//index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%AA%E0%B8%B3%E0%B8%AB%E0%B8%A3%E0%B8%B1%E0%B8%9A_nginx_%28Nginx_configuration%29" title="การตั้งค่าสำหรับ nginx (Nginx configuration)">การตั้งค่าสำหรับ_nginx_(Nginx_configuration)</a>
</p>
<p><a name=".E0.B8.81.E0.B8.B2.E0.B8.A3.E0.B8.AA.E0.B8.A3.E0.B9.89.E0.B8.B2.E0.B8.87_Repository" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> การสร้าง Repository </span></h2>
<p>เนื่องจาก trac เองเป็นแค่หน้ากากครอบตัว svn อยู่เท่านั้น ดังนั้นเราจึงต้องสร้าง repository ผ่านท่าง <a href="http://wiki.memoball.info//index.php/Subversion" title="Subversion">subversion</a> เท่านั้น
</p>
<p><a name="Troubleshooting" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Troubleshooting </span></h2>
<p><a name=".E0.B9.82.E0.B8.AB.E0.B8.A5.E0.B8.94.E0.B9.82.E0.B8.9B.E0.B8.A3.E0.B9.80.E0.B8.88.E0.B8.84.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B8.82.E0.B8.B6.E0.B9.89.E0.B8.99" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> โหลดโปรเจคไม่ขึ้น </span></h3>
<p>เกิด error ดังต่อไปนี้
</p>
<pre>
Traceback (most recent call last):
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/api.py&quot;, line 367, in send_error
    'text/html')
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/chrome.py&quot;, line 688, in render_template
    data = self.populate_data(req, data)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/chrome.py&quot;, line 596, in populate_data
    d['chrome'].update(req.chrome)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/api.py&quot;, line 194, in __getattr__
    value = self.callbacks[name](self)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/web/chrome.py&quot;, line 464, in prepare_request
    for category, name, text in contributor.get_navigation_items(req):
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/ticket/web_ui.py&quot;, line 162, in get_navigation_items
    if 'TICKET_CREATE' in req.perm:
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 523, in has_permission
    return self._has_permission(action, resource)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 537, in _has_permission
    check_permission(action, perm.username, resource, perm)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 424, in check_permission
    perm)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 282, in check_permission
    get_user_permissions(username)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 357, in get_user_permissions
    for perm in self.store.get_user_permissions(username):
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/perm.py&quot;, line 173, in get_user_permissions
    db = self.env.get_db_cnx()
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/env.py&quot;, line 264, in get_db_cnx
    return DatabaseManager(self).get_connection()
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/api.py&quot;, line 76, in get_connection
    return self._cnx_pool.get_cnx(self.timeout or None)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/pool.py&quot;, line 174, in get_cnx
    return _backend.get_cnx(self._connector, self._kwargs, timeout)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/pool.py&quot;, line 107, in get_cnx
    cnx = connector.get_connection(**kwargs)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/sqlite_backend.py&quot;, line 126, in get_connection
    return SQLiteConnection(path, params)
  File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.2.1-py2.5.egg/trac/db/sqlite_backend.py&quot;, line 159, in __init__
    raise TracError('Database &quot;%s&quot; not found.'&nbsp;% path)
TracError: Database &quot;/var/trac/test/test.db&quot; not found.
</pre>
<p>สาเหตุ
</p>
<ul>
<li>เกิดจากการสร้าง environment ของโปรเจคนั้นๆ ไม่สมบูรณ์ ให้สร้าง environment ใหม่ โดยให้ขึ้น complete ด้วย ซึ่งในบางครั้งมีไฟล์ใหม่ใน path แต่ก็ยังไม่สมบูรณ์ สังเกตได้จากการรายงานของ trac-admin ตอนส้าง
</li>
<li>ไม่สามารถเปิดไฟล์ DB ของ Sqlite ได้ เนื่องจากติด permission ของ OS
</li>
</ul>
<p><a name="admin_tab_.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B8.82.E0.B8.B6.E0.B9.89.E0.B8.99" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> admin tab ไม่ขึ้น </span></h3>
<p>ยังไม่ได้ Authen
</p>
<p><a name="login_.E0.B9.84.E0.B8.A1.E0.B9.88.E0.B9.84.E0.B8.94.E0.B9.89" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> login ไม่ได้ </span></h3>
<p>ในกรณีนี้จะเกิด error ที่หน้า login เพราะ ไม่ได้ run แบบ authentication หรือ file authentication เกิดการผิดพลาด สังเกตดูว่ามีข้อผิดพลาด(warning)ขณะรัน tracd หรือไม่ ถ้าไม่ ลองดูกรณีของชื่อโปรเจคหรือไม่(ต้องใส่ตัวเล็ก)
</p>
<p>ในกรณีทีทำทุกอย่างถูกต้องแล้วแต่ยังไม่สามารถทำ authentication ได้นั้น อาจเป้นเพราะ เมื่อรัน tracd ในส่วน &#8211;suthen=project นั้นให้ใส่ path ของเราที่เหมือนกัน URL ใน browser ของเรา เช่น โปรเจค DEMO ซึ่งในหน้า Browser ของเราปรากฎเป็น xxx.xxxxx.com/env/  ก็ใช้ใส่เป็น &#8211;authen=env<br />
<a href="http://trac.edgewall.org/wiki/TracSubversion#unsupported-vcs" class="external free" title="http://trac.edgewall.org/wiki/TracSubversion#unsupported-vcs" rel="nofollow">http://trac.edgewall.org/wiki/TracSubversion#unsupported-vcs</a>
</p>
<p><a name="repository_.26_SVN_error" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> repository &amp; SVN error </span></h3>
<pre>Warning: Can't synchronize with the repository (Unsupported version control system &quot;svn&quot;: &quot;No module named svn&quot; ). Look in the Trac log for more information.</pre>
<p><b>Trac Error</b>
</p>
<pre>Unsupported version control system &quot;svn&quot;: &quot;No module named svn&quot;</pre>
<p>ลองทดสอบดูว่า subversion module ของ python ได้ถูกติดตั้งไว้หรือไม่
</p>
<pre>http://trac.edgewall.org/wiki/TracSubversion#unsupported-vcs</pre>
<p>ถ้าขึ้นข้อความมาแสดงว่ายังไม่ได้ลง ใช้ติดตั้งดังนี้
</p>
<pre>$ apt-get install python-subversion</pre>
<p><a name="HTML_preview_not_available" href="http://wiki.memoball.info/"></a><br />
<h3> <span class="mw-headline"> HTML preview not available </span></h3>
<pre>HTML preview not available, since no preview renderer could handle it. Try downloading the file instead. </pre>
<p>ถ้าไปเปิดใน log ดูจะเห็นว่า
</p>
<pre>
WARNING: HTML preview using &lt;trac.mimeview.php.PHPRenderer object at 0x86db16c&gt; failed (Running (php -sn) failed: 127, sh: php: not found .) Traceback (most recent call last):   File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.4-py2.5.egg/trac/mimeview/api.py&quot;, line 715, in render     rendered_content, filename, url)   File &quot;/usr/lib/python2.5/site-packages/Trac-0.11.4-py2.5.egg/trac/mimeview/php.py&quot;, line 93, in render     raise Exception(msg) Exception: Running (php -sn) failed: 127, sh: php: not found .
</pre>
<p>ให้ลง php5-cli ไปก็เปิดได้เรียบร้อย
</p>
<pre>$ sudo apt-get install php5-cli</pre>
<p><a name="Plugin" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Plugin </span></h2>
<ul>
<li><b>ProgressMeter</b>  <a href="http://trac-hacks.org/wiki/ProgressMeterMacro" class="external free" title="http://trac-hacks.org/wiki/ProgressMeterMacro" rel="nofollow">http://trac-hacks.org/wiki/ProgressMeterMacro</a>
</li>
</ul>
<p><a name="Reference" href="http://wiki.memoball.info/"></a><br />
<h2> <span class="mw-headline"> Reference </span></h2>
<ul>
<li><a href="http://trac.edgewall.org/wiki/TracInstall" class="external free" title="http://trac.edgewall.org/wiki/TracInstall" rel="nofollow">http://trac.edgewall.org/wiki/TracInstall</a>
</li>
<li><a href="http://trac.edgewall.org/wiki/TracEnvironment" class="external free" title="http://trac.edgewall.org/wiki/TracEnvironment" rel="nofollow">http://trac.edgewall.org/wiki/TracEnvironment</a>
</li>
<li><a href="http://trac.edgewall.org/wiki/TracFaq" class="external free" title="http://trac.edgewall.org/wiki/TracFaq" rel="nofollow">http://trac.edgewall.org/wiki/TracFaq</a>
</li>
</ul>
<p><!--<br />
NewPP limit report<br />
Preprocessor node count: 111/1000000<br />
Post-expand include size: 0/2097152 bytes<br />
Template argument size: 0/2097152 bytes<br />
Expensive parser function count: 0/100<br />
--></p>
<p><!-- Saved in parser cache with key memoball_wiki:pcache:idhash:2-0!1!0!!th!2!edit=0 and timestamp 20090824232930 --></p>
<div class="printfooter">
<h5>รับข้อมูลจาก (Reference) : </h5>
<p>จาก WikiBall : <a href="http://wiki.memoball.info/index.php/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87_trac_%E0%B8%9A%E0%B8%99_linux_%28Ubuntu%29">http://wiki.memoball.info/index.php/การติดตั้ง_trac_บน_linux_(Ubuntu)</a></div>
<div id='catlinks' class='catlinks'>
<div id="mw-normal-catlinks"><a href="http://wiki.memoball.info//index.php/%E0%B8%9E%E0%B8%B4%E0%B9%80%E0%B8%A8%E0%B8%A9:Categories" title="พิเศษ:Categories">หมวดหมู่</a>:&#32;<span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:SVN&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:SVN (ยังไม่ได้สร้าง)">SVN</a></span> | <span dir='ltr'><a href="http://wiki.memoball.info//index.php?title=%E0%B8%AB%E0%B8%A1%E0%B8%A7%E0%B8%94%E0%B8%AB%E0%B8%A1%E0%B8%B9%E0%B9%88:Trac&amp;action=edit&amp;redlink=1" class="new" title="หมวดหมู่:Trac (ยังไม่ได้สร้าง)">Trac</a></span></div>
</div>
<p>			<!-- end content --></p>
<div class="visualClear"></div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.memoball.info/01/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-trac-%e0%b8%9a%e0%b8%99-linux-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
