Version 85 (modified by Fran Boon, 9 years ago) ( diff )



We can always use SysAdmin support to help out with our infrastructure: developing tools & maintaining sites.

Deployment Cycle

Setting up a New Instance

Eden project have 2 servers kindly donated by Zen Internet.
These run KVM to provide different virtual machines.
We use Proxmox to manage these VMs:

  • Type: Fully Virtualized (KVM)
  • Installation media: Debian-6.0.5-amd64-netinst.iso (if not using the template)
  • Disk Storage: Images (Host1) data (Host2)
  • Start at Boot: tick
  • Disk type: VIRTIO
  • Disk size: 22GB
  • Guest Type: Linux-2.6
  • Network Card: virtio
  • Bridge: vmbr0

These documents are secured - ask for access if you are going to contribute:

Copy from Template

We normally copy an instance from a predefined template rather than starting with a fresh OS build.

  • consider changing this with scripts similar to ISO/VM builds?

Instances run WSGI & MySQL.

  1. Turn off template VM instance if on
  2. SSH into the host machine

If using Host1:


cd /spare/images/images
cp 106/vm-106-disk-1.raw 1xx/vm-1xx-disk-1.raw

If using Host2:


#zcat /spare/template/vm_release.gz | dd of=/dev/data/vm-1xx-disk-1 bs=8M
dd if=/dev/data/vm-106-disk-1 of=/dev/data/vm-1xx-disk-1 bs=8M
  1. That'll take a while. You can get it to notify progress by doing a kill -USR1 {process id of the dd}
  1. start your VM after the copy is complete
  2. Open VNC Console
  3. read /home/INSTALL in the vm
  4. Set the IP (using the spreadsheet)

Upgrading an Instance

See UserGuidelines/Admin/Upgrade

Continuous Integration

See SysAdmin/ContinuousIntegration


See SysAdmin/Pootle

Trac Maintenance

To clear blocks from MathCaptcha failures:

To reset tickets which have been assigned to nobody:

apache2ctl stop
sqlite3 /home/sahana/trac/db/trac.db
  SET status = 'new'
  WHERE owner = '' and status = 'assigned';
apache2ctl start

To delete a ticket:

apache2ctl stop
sqlite3 /home/sahana/trac/db/trac.db
SELECT * FROM ticket WHERE id is 0000;
DELETE FROM ticket WHERE id is 0000;
apache2ctl start

To disable Self-Registration if we get attacked by a bot:

Disable the RegistrationModule:

Disable the RecaptchaRegistrationModule:


trac-admin /home/sahana/trac hotcopy /root/trac_backup
NOW=$(date +"%Y-%m-%d")
tar cvf trac-$NOW.tar /root/trac_backup
bzip2 -9 trac-$NOW.tar
rm -rf /root/trac_backup

Customizing Trac

Just dropping in a few notes. --Pat
Trac and Trac plugins are installed in:


Trac itself is: Trac-0.12.1-py2.6.egg

The Eden Trac "project" is at:



Many settings are available in: /home/sahana/trac/conf/trac.ini
Some interface changes can be made here as well, e.g. icon, order of items in the top menu, labels for same (search for mainnav and metanav).


  • The official Trac means of customizing individual pages is to use Genshi xsl to replace items in the original pages, which are left untouched. The replacement is done in: /home/sahana/trac/templates/site.html
  • One can also put entire replacement templates in /home/sahana/trac/templates but then one will have to merge these when Trac is updated. Putting entire templates here is problematic for plugins, which may define their own local data -- that won't be available outside the plugin context.


Watch this space...

Mail Queues

Check if your IP is blacklisted for Spam:

View queue:


Flush queue (inc Frozen messages):

exim -qff

Remove Frozen messages (remove -r to remove all):

exiqgrep -z -i -r [user]@domain | xargs exim -Mrm



Windows Installer

See if we can upgrade the Windows Installer to Python 2.7 to have Foreign-Key support (#900)

Use Esky to provide an auto-update method:

Infrastructure Virtual Machine Template

  • /home/INSTALL
  • /root/
  • scripts in /usr/local/bin
  • Convert to PostgreSQL/PostGIS
  • Update Eden
  • Update Web2Py (as-required)
  • Update OS
  • Increase swap to 2048Mb (from 750Mb)
    • can we do this in image? Add an emergency swapfile?
    • Add extra disk for those instances which need extra capacity


  • SQL indexes need restoring after DB upgrades
  • Add support for PostgreSQL
    • Add support for PostgreSQL to dbstruct (or have an equivalent file)


We have an instance of Jenkins to automatically run through our Selenium tests: SysAdminJenkins

  • Fix the current builds
  • Trigger builds upon every commit
  • Email notifications: set up a mailing list which people can register/unregister themselves
  • Add timings to the output
  • Add a VPN Server (e.g. PPTPd) to allow NAT'd desktops to contribute tests (e.g. IE7)


  • Have a set of reference data available




/usr/local/lib/python2.6/dist-packages/TracScreenshots-0.8dev-py2.6.egg/tracscreenshots/ DeprecationWarning: the sets module is deprecated
  import sets
Traceback (most recent call last):
  File "./sqlite2pg", line 335, in <module>
  File "./sqlite2pg", line 331, in main
  File "./sqlite2pg", line 250, in Main
    rc = tmigration.migrateTable(tname) or rc
  File "./sqlite2pg", line 72, in migrateTable
    rc = self.default_copy(table)
  File "./sqlite2pg", line 93, in default_copy
    pgcur.execute(insert_into, row)
  File "/usr/local/lib/python2.6/dist-packages/Trac-0.12.1-py2.6.egg/trac/db/", line 65, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
psycopg2.InternalError: current transaction is aborted, commands ignored until end of transaction block
  • Add Timing & Estmation Plugin
  • Investigate a fix or alternative to for allowing Trac users to register bugs anonymously whilst not locking out our testing team.
  • See if we can not send emails out to users for the updates they make themselves (maybe fixed in 0.12.x?)
  • Investigate a fix for the last section edit doubling-up the footers (maybe fixed in 0.12.x?)

Release Process


We could use a MeetBot to log our IRC meetings better:


Note: See TracWiki for help on using the wiki.