Install Semantic Scuttle bookmarks sharing software on Debian
Semantic Scuttle is a open source alternative to social sharing services as Digg. It is based on Scuttle with semantic functionalities. I have found it the best among the software I tested.
This howto is tested on :
- Debian 6.0 Squeeze
This howto is tested with these versions of Semantic Scuttle :
- 0.98.4
Prerequisites
This howto needs :
- a MySQL server, as described by Install and setup MySQL on Debian.
- a HTTP server with PHP, as described by Install PHP-FPM on Debian.
- the PHP OpCode cache APC, as described by Install the PHP extension APC on Debian.
- The mysql-tools script easing MySQL server administration on local host (and MySQL server host, if other).
This howto needs one of these tools, according to the installed HTTP server :
- a2tools available in Install and setup Apache 2 on Debian.
- lighty-tools available in Installer and setup Lighttpd on Debian.
Parameters
Provide the domain name where will be available the software :
DOMAIN="links.example-domain.com"
Provide the protocol used to view the software (http or https) :
PROTOCOL="http"
Provide the administration account email address :
ADMIN_EMAIL="webmaster@example-domain.com"
Provide the MySQL server host :
MYSQL_HOST="localhost"
If the MySQL server is not local, the mysql-tools script will try to connect with MySQL client, or in case of connection failure, through SSH.
Installation
Compute the installation path :
INSTALL_PATH="/opt/semantic-scuttle/${DOMAIN}"
Make sure that the parent folder exists :
PARENT_PATH="$(command dirname "${INSTALL_PATH}")"
if [ ! -e "${PARENT_PATH}" ]; then
command mkdir --parent "${PARENT_PATH}"
fi
Environment preparation
Install the needed software :
command apt-get install php5-mysql mysql-client unzip apg
Reload PHP configuration :
test -x /etc/init.d/php5-fpm && /etc/init.d/php5-fpm force-reload
test -x /etc/init.d/apache2 && /etc/init.d/apache2 force-reload
test -x /etc/init.d/lighttpd && /etc/init.d/lighttpd force-reload
test -x /etc/init.d/nginx && /etc/init.d/nginx force-reload
Application installation
Fetch the latest sources using the sf-downloader script :
command mkdir --parent '/opt/bin'
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/opt/bin/sf-downloader'
command chmod +x '/opt/bin/sf-downloader'
/opt/bin/sf-downloader --zip --strip-components=1 --output-directory="${INSTALL_PATH}" \
"semanticscuttle" "SemanticScuttle-VERSION.zip"
Move the source folder to the install path :
command mv "${SOURCE}" "${INSTALL_PATH}"
Database creation
Create the database with mysql-tools :
MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="semantic-scuttle" --create "${DOMAIN}")"
Parse the database connection parameters :
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \
| cut --delimiter="=" --fields="2-")"
MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \
| cut --delimiter="=" --fields="2-")"
MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \
| cut --delimiter="=" --fields="2-")"
echo "${MYSQL_PARAMS}"
Create a random table prefix to prevent SQL injection attacks :
TABLE_PREFIX="$(command apg -q -a 0 -n 1 -M NCL)"
Initialize database contents :
command cat "${INSTALL_PATH}/data/tables.sql" \
| command sed -e "s/sc_/${TABLE_PREFIX}_/g" \
| command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \
--host="${MYSQL_HOST}" "${MYSQL_DB}"
Conformity with LSB
Move data and cache folders to fit Linux Standard Base :
command mkdir --parent "/var/cache/semantic-scuttle/${DOMAIN}"
command chown -R www-data:www-data "/var/cache/semantic-scuttle/${DOMAIN}"
Configuration
Create the configuration file :
echo "<?php
\$dbtype = 'mysqli';
\$dbuser = '${MYSQL_USER}';
\$dbpass = '${MYSQL_PASSWORD}';
\$dbname = '${MYSQL_DB}';
\$dbhost = '${MYSQL_HOST}';
\$tableprefix = '${TABLE_PREFIX}_';
\$cleanurls = true;
\$locale = 'fr_FR';
\$shortdate = 'd/m/Y';
\$use_cache = true;
\$dir_cache = '/var/cache/semantic-scuttle/${DOMAIN}';
\$root = '${PROTOCOL}://${DOMAIN}/';
\$admin_users = array('admin');
\$adminemail = '${ADMIN_EMAIL}';
\$antispamQuestion = '29 + 13 ?';
\$antispamAnswer = '42';
" > "${INSTALL_PATH}/data/config.php"
Setup the HTTP server for the application :
if [ -x "/usr/bin/a2tools" ]; then
command a2enmod expires
command a2tools --overrides="All" "${DOMAIN}" "${INSTALL_PATH}/www"
/etc/init.d/apache2 force-reload
fi
if [ -x "/usr/bin/lighty-tools" ]; then
command lighty-tools add-vhost "${DOMAIN}" "${INSTALL_PATH}/www"
fi
The software should now be available on the domain name.
Important : Create the administration account by registering a user with "admin" as username.
Advanced setup
Disable registration
If you do not want the visitors to be able to create a user account, disable the registration (after the "admin" user account creation) :
command echo '$enableRegistration = false;
' >> "${INSTALL_PATH}/data/config.php"
Customize title and description
Provide the custom title :
TITLE="Mes liens"
Provide the custom description (displayed on home page) :
DESC="Liens en vrac"
Apply the settings :
echo "\$sitename = \"${TITLE}\";
\$welcomeMessage = \"${DESC}\";" >> "${INSTALL_PATH}/data/config.php"
Use with Mozilla Firefox
In addition to the bookmarklet providing a easy way to add links to the directory from any browser, there is a Firefox add-on enhancing the integration of Scuttle in this browser :
Backup
Backup the installation with Backup Manager (see Install and setup Backup Manager on Debian) :
command backup-manager-tools add "${INSTALL_PATH}"
Don't forget to backup the database (see Install and setup MySQL on Debian)
Software upgrade
Provide the application domain name :
DOMAIN="links.example-domain.com"
Compute the installation path :
INSTALL_PATH="/opt/semantic-scuttle/${DOMAIN}"
Fetch the latest sources using the sf-downloader script :
command mkdir --parent '/opt/bin'
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/opt/bin/sf-downloader'
command chmod +x '/opt/bin/sf-downloader'
SOURCE="$(/opt/bin/sf-downloader --zip semanticscuttle SemanticScuttle-VERSION.zip)"
Backup the installation :
if [ -e "${INSTALL_PATH}.old" ]; then
command rm -r "${INSTALL_PATH}.old"
fi
command mv "${INSTALL_PATH}" "${INSTALL_PATH}.old"
Setup the new version :
command mv "${SOURCE}" "${INSTALL_PATH}"
command cp -a "${INSTALL_PATH}.old/data/config.php" "${INSTALL_PATH}/data/config.php"
The software is now up-to-date. Check that everything work.
Delete the backup :
command rm -r "${INSTALL_PATH}.old"
Thanks
- Thanks to Semantic Scuttle developers.
