blob: 34572ea83fe7dd8313c1afeda57a08a485fc6c27 [file] [log] [blame]
<document>
<properties>
<title>Setup a Testserver</title>
<author email="imario@apache.org">Mario Ivankovits</author>
</properties>
<body>
<section name="Testserver">
<p>
This documentation describes how to setup a VFS testserver needed during development for the junit
tests.
</p>
<p>
I tried to simplify things as good as I can, e.g. this setup uses for all server the same vfs work
directory.
Thus it is needed to setup apache to use user 'vfsusr' instead of 'wwwrun'.
<br/>
Based on this description it should be possible for you to avoid this "insecurity" if needed.
</p>
<p>
I created it during setup a fresh server based on the following components:
<ol>
<li>SuSE Linux 9.3 Minimal Installation</li>
<li>Apache 2 Webserver (apache2-2.0.53)</li>
<li>Samba 3 (samba-3.0.12)</li>
<li>ssh (openssh-3.9p1)</li>
<li>vsftp (vsftpd-2.0.2-3)</li>
</ol>
</p>
<subsection name="System setup">
<ol>
<li>You need maven to build the local test-data structure. This is done automatically during build of VFS.</li>
<li>Create a user 'vfsusr' with password 'vfs/%\te:st' and home directory '/home/vfsusr'
<br/>
<source><![CDATA[
useradd -p vfsusr -m vfsusr
]]></source>
</li>
<li>Create the directories
<ol>
<li>/vfstest</li>
<li>/vfstest/write-tests</li>
</ol>
and copy from your local 'target/test-data' the directories
<source>code,read-tests</source> into it.<br />
Now your structure looks like this:<br />
<source><![CDATA[
/vfstest
/vfstest/write-tests
/vfstest/read-tests
/vfstest/read-tests/emptydir
/vfstest/read-tests/file1.txt
/vfstest/read-tests/dir1
/vfstest/read-tests/dir1/file1.txt
/vfstest/read-tests/dir1/file2.txt
/vfstest/read-tests/dir1/file3.txt
/vfstest/read-tests/dir1/subdir1
/vfstest/read-tests/dir1/subdir1/file1.txt
/vfstest/read-tests/dir1/subdir1/file2.txt
/vfstest/read-tests/dir1/subdir1/file3.txt
/vfstest/read-tests/dir1/subdir2
/vfstest/read-tests/dir1/subdir2/file1.txt
/vfstest/read-tests/dir1/subdir2/file2.txt
/vfstest/read-tests/dir1/subdir2/file3.txt
/vfstest/read-tests/dir1/subdir3
/vfstest/read-tests/dir1/subdir3/file1.txt
/vfstest/read-tests/dir1/subdir3/file2.txt
/vfstest/read-tests/dir1/subdir3/file3.txt
/vfstest/read-tests/empty.txt
/vfstest/read-tests/file%.txt
/vfstest/code
/vfstest/code/sealed
/vfstest/code/sealed/AnotherClass.class
/vfstest/code/ClassToLoad.class
]]></source>
</li>
<li>Setup a symbolic link to '/vfstest'<br />
<source><![CDATA[
ln -s /vfstest /home/vfsusr/vfstest
]]></source>
</li>
<li>Set permissions
<br/>
<source><![CDATA[
find /vfstest -print0 | xargs -0 chown vfsusr.users
]]></source>
</li>
<li>After you followed the steps below and setup the server ensure they
are activated and running.<br />
This is only needed if you installed a fresh system. Otherwise simply restart them.
<br/>
<source><![CDATA[
insserv xinetd
insserv apache2
insserv smb
insserv nmb
/etc/rc.d/xinetd restart
/etc/rc.d/apache2 restart
/etc/rc.d/smb restart
/etc/rc.d/nmb restart
]]></source>
</li>
</ol>
</subsection>
<subsection name="Apache 2 Webserver">
<ol>
<li>Create a file named '/etc/apache2/conf.d/vfstest.conf' with this content<br />
<source><![CDATA[
#
# VFSTEST
#
Alias /vfstest /vfstest/
DAVLockDB /var/lib/apache2/dav.lockDB
DAVMinTimeout 600
<Directory /vfstest>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Location />
DAV On
Options Indexes MultiViews
AllowOverride None
AuthType Basic
AuthName vfstest_zone
AuthUserFile /etc/apache2/passwd
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require user vfsusr
</Limit>
</Location>
]]></source>
</li>
<li>change the permission on
<source><![CDATA[
chown vfsusr.users /var/lib/apache2
]]></source>
</li>
<li>Activate the WebDAV module by adding 'dav' and 'dav_fs' to the list of modules in '/etc/sysconfig/apache2'. e.g <br/>
<source><![CDATA[
APACHE_MODULES="access actions alias auth auth_dbm autoindex cgi dir env expires include log_config
mime negotiation setenvif ssl suexec userdir php4 php5 dav dav_fs"
]]></source>
</li>
<li>Setup the webserver to use user-id 'vfsusr' and group 'users'. This can be done by changing the file '/etc/apache2/uid.conf'<br />
<source><![CDATA[
User vfsusr
Group users
]]></source>
</li>
<li>Create the VFS user to access the Webdav resource<br />
<source><![CDATA[
htpasswd2 -cmb /etc/apache2/passwd vfsusr 'vfs/%\te:st'
]]></source>
</li>
</ol>
</subsection>
<subsection name="Samba 3">
<ol>
<li>Create a share 'vfsusr'<br />
<source><![CDATA[
[vfsusr]
comment = VFS Test Directory
path = /home/vfsusr
guest ok = yes
writable = yes
]]></source>
</li>
<li>Setup a 'vfsusr' with password 'vfs/%\te:st'<br />
<source><![CDATA[
smbpasswd -a vfsusr
]]></source>
</li>
</ol>
</subsection>
<subsection name="ssh">
<ol>
<li>In '/etc/ssh/sshd_config' ensure<br />
<source><![CDATA[
PasswordAuthentication yes
]]></source>
</li>
</ol>
</subsection>
<subsection name="vsftp">
<ol>
<li>Ensure the server is not disabled in the xinetd configuration<br />
Set <source>disable=no</source> in '/etc/xinetd.d/vsftpd'
</li>
<li>Setup the server config: '/etc/vsftpd.conf'<br/>
<source>
write_enable=YES
local_enable=YES
</source>
</li>
</ol>
</subsection>
<subsection name="Tests">
Now we are finished and you can try to activate the tests by
<ol>
<li>reactivate the tests in 'build.xml'.<br/>
Search for <code><![CDATA[<!-- tests disabled -->]]></code> and comment the exclude.</li>
<source><![CDATA[
<!-- tests disabled
<exclude name="**/*.java">
</exclude>
-->
]]></source>
<li>or use the class org.apache.commons.vfs.RunTest where you have
to adapt some properties at the top of the file and choose which test
you would like to run by comment the others.<br />
This is the way how I debug a failed testcase.
</li>
</ol>
</subsection>
</section>
</body>
</document>