First we download the snipsnap software from snipsnap.org and extract the package to
/opt. Then we create a symlink to the extracted directory, set the file permission to the user
tux and remove unnecessary files.
tux@earth:~$ cd ~/tmp
tux@earth:~/tmp$ wget ftp://ftp.first.fraunhofer.de/pub/mirror/ftp.snipsnap.org/snipsnap/snipsnap-1.0b3-uttoxeter-20060510.tgz
tux@earth:~/tmp$ cd /opt
tux@earth:/opt$ sudo cp ~/tmp/snipsnap-1.0b3-uttoxeter-20060510.tgz .
tux@earth:/opt$ sudo tar xzvf snipsnap-1.0b3-uttoxeter-20060510.tgz
tux@earth:/opt$ sudo ln -s snipsnap-1.0b3-uttoxeter snipsnap
tux@earth:/opt$ sudo chown -R tux.tux snipsnap-1.0b3-uttoxeter
tux@earth:/opt$ sudo chown -R tux.tux snipsnap
tux@earth:/opt$ cd snipsnap/
tux@earth:/opt/snipsnap$ rm {README,license.txt,run.bat}
tux@earth:/opt/snipsnap$ rm lib/*.warDownload JDK from
http://java.sun.com/products/archive/ I will save the package in
~/tmp/.
Download JDBC Connector for mysql from
http://dev.mysql.com/downloads/connector/j/ I will save the package in
~/tmp/.
We extract the mysql-connector package and exchange the available
mysql-connector.jar with the new
mysql-connector-java-5.1.11-bin.jar. Then we go to
/usr/local/share and copy the downloaded JDK into. Now we execute the JDK with the
bash. When you have to accept the licence with
yes the JDK package will be extracted. After the extraction we delete the binary package.
tux@earth:/opt/snipsnap$ cd ~/tmp/
tux@earth:~/tmp$ tar xzvf mysql-connector-java-5.1.11.tar.gz
tux@earth:~/tmp/$ cd /opt/snipsnap
tux@earth:/opt/snipsnap$ rm lib/mysql-connector.jar
tux@earth:/opt/snipsnap$ cp ~/tmp/mysql-connector-java-5.1.11/mysql-connector-java-5.1.11-bin.jar lib/
tux@earth:/opt/snipsnap$ cd /usr/local/share
tux@earth:/usr/local/share$ sudo bash ./jdk-6u17-linux-i586.bin
tux@earth:/usr/local/share$ sudo rm jdk-6u17-linux-i586.bin
Open the
conf/jetty.conf and setup the
jetty.port,
jetty.host and
jetty.home. The entry 0.0.0.0 mens, the application will bind to the localhost interface. As
jetty.home we use the install location
/opt/snipsnap of snipsnap.
tux@earth:/usr/local/share$ cd /opt/snipsnap
tux@earth:/opt/snipsnap$ vi conf/jetty.conf
....
<Set name="Port">
<SystemProperty name="jetty.port" default="8668"/>
</Set>
<Set name="Host">
<SystemProperty name="jetty.host" default="0.0.0.0"/>
</Set>
....
<Arg><SystemProperty name="jetty.home" default="."/>/yyyy_mm_dd.request.log</Arg>
....Now we create the logfile directory in
/var/log/snipsnap and set the file permission to user
tux. Then we install cronolog for the logfile rotation.
tux@earth:/opt/snipsnap$ sudo mkdir -p /var/log/snipsnap
tux@earth:/opt/snipsnap$ sudo chown tux.tux /var/log/snipsnap
tux@earth:/opt/snipsnap$ ! which cronolog && sudo apt-get install cronolog
Modify the startup script
run.sh. We setup the location of the installed JDK directory as
JAVA_HOME. As default, snipsnap use tcp6. To use tcp, set the option
java.net.preferIPv4Stack=true in the
JAVA_OPTS variable. We also set the option
user.home=/opt/snipsnap. At the and of the script we modify the startup line like the following.
tux@earth:/opt/snipsnap$ vi run.sh
....
export JAVA_HOME="/usr/local/share/jdk1.6.0_17"
....
JAVA_OPTS="$JAVA_OPTS -DentityExpansionLimit=1000000 -Djava.awt.headless=true -Xmx512m -Duser.home=/opt/snipsnap -Djava.net.preferIPv4Stack=true"
....
$JAVA $JAVA_OPTS $DBG \
-Dlauncher.errlog=/var/log/snipsnap/server.log \
-jar /opt/snipsnap/lib/snipsnap.jar $* | \
cronolog --symlink=/var/log/snipsnap/server.log /var/log/snipsnap/server-%Y-%m-%d.log >> \
/dev/null 2>&1 &# EOFBefore we can start the application we create a database user
snipsnap and a database
snipsnap. Then we use the
create-snipsnap.sql to create the database structure.
tux@earth:/opt/snipsnap$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON snipsnap.* TO snipsnap@localhost IDENTIFIED BY '<password>';
mysql> CREATE DATABASE `snipsnap` CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> FLUSH PRIVILEGES;
mysql> QUIT;
tux@earth:/opt/snipsnap$ mysql -u root -p <create-snipsnap.sql
I have create a startup script
snipsnapctl which I have saved in
/usr/local/bin. We make the script executable and start the application with the command
snipsnapctl start.
tux@earth:/opt/snipsnap$ sudo vi /usr/local/bin/snipsnapctl
tux@earth:/opt/snipsnap$ sudo chmod 755 /usr/local/bin/snipsnapctl
tux@earth:/opt/snipsnap$ snipsnapctl start
Starting SnipSnap 1.0b3 [ OK ]
If the application was successfuly started you go to your browser and go to
http://localhost:8668/install/
You have to enter the server key. The key you can find in
/opt/snipsnap/conf/snipsnap.xmltux@earth:/opt/snipsnap$ cat conf/snipsnap.xml
....
<entry key="snipsnap.server.admin.password" value="92f3a"/>
....
First we login into SnipSnap. Enter the server key (to found in conf/snipsnap.xml) and go to the next step.

In this step we setup the database like the following:
Storage: Generic JDBC Database
JDBC URL: jdbc:mysql://localhost/snipsnap?useUnicode=true&characterEncoding=UTF-8
Datenbank Driver: com.mysql.jdbc.Driver
Datenbank Username: snipsnap
Datenbank Password: <password>

In this step we create the spipspap administrator account.

In this step we setup the base settings.

In the last step press the
Start SnipSnap button.

Perfect, you have finish the installation of SnipSnap.