Version 36 (modified by 14 years ago) ( diff ) | ,
---|
Table of Contents
SysAdmins
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-507-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:
- IP Addresses/RAM Allocations for Eden Infrastructure
- Setting up a new VM instance on Eden Infrastructure
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?
- Turn off template VM instance if on
- 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:
3.
#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
- That'll take a while. You can get it to notify progress by doing a kill -USR1 {process id of the dd}
- start your VM after the copy is complete
- Open VNC Console
- read /home/INSTALL in the vm
- Set the IP (using the spreadsheet)
Upgrading an Instance
Need to decide whether the site will be upgraded straight from Trunk, or whether upgrades are staged via a Test server.
Simple upgrades can be done using the aliases:
We manage complex upgrades using Fabric:
- Add the site to fabfile.py
- If no keys generated yet, then generate some:
fab generate_keys
- deploy keys
fab <site> distribute_keys
- Run the upgrade (as/when required)
fab <site> deploy
Trac Maintenance
To reset tickets which have been assigned to nobody:
apache2ctl stop sqlite3 /home/sahana/trac/db/trac.db UPDATE ticket SET status = 'new' WHERE owner = '' and status = 'assigned'; .q apache2ctl start
References
ToDo
Windows Installer
See if we can upgrade to Python 2.7 to have Foreign-Key support (#900)
Infrastructure Virtual Machine Template
/root/ChangeTemplate.sh
apt-get upgrade -y cp /home/web2py/applications/eden/deployment-templates/models/000_config.py /home/web2py/applications/eden/models deployment_settings.base.public_url
/home/INSTALL
mysqladmin -u root create sahana -p vim /home/web2py/applications/eden/models/000_config.py cd /home/web2py sudo -H -u web2py python web2py.py -N -S eden -M -R applications/eden/static/scripts/tools/noop.py cd applications/eden sed -i 's/deployment_settings.base.migrate = True/deployment_settings.base.migrate = False/g' models/000_config.py sed -i 's/deployment_settings.base.prepopulate = True/deployment_settings.base.prepopulate = False/g' models/000_config.py
- Update shell aliases
alias pull="cd ~web2py/applications/eden;sed -i 's/deployment_settings.base.migrate = False/deployment_settings.base.migrate = True/g' models/000_config.py;bzr pull;rm -rf compiled;cd ~web2py;sudo -H -u web2py python web2py.py -S eden -M -R applications/eden/static/scripts/tools/noop.py;/etc/init.d/apache2 force-reload" alias migrateoff="sed -i 's/deployment_settings.base.migrate = True/deployment_settings.base.migrate = False/g' ~web2py/applications/eden/models/000_config.py"
- convert to scripts in
/usr/local/bin
(as per ISO/VM)
- convert to scripts in
- Change permissions on languages files (we don't want these being updated live by the server)
- Add maintenance site & HTML
- Rename site as xxxx.sahanafoundation.org
- To work with fabfile
- Provide a script to manage the MySQL root pw change
- change the password
- edit Eden's
000_config.py
- edit
/root/.my.cnf
- Convert to PostgreSQL? (for PostGIS)
- Update Eden
- Update Web2Py (as-required)
- Update OS (to Squeeze & then maintain patches)
- 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
Fabfile
- SQL indexes need restoring after DB upgrades
Test
- Set up an instance of Hudson to automatically run through our Selenium tests
Demo
- Have a set of reference data available
Pootle
Trac
- http://eden.sahanafoundation.org/wiki/BluePrintTrac
- Old: TracUpgrade
- Convert from sqlite to PostgreSQL (or MySQL) to improve performance
- Install PostgreSQL
su postgres createuser -s -P trac createdb -O trac -E UTF8 trac
- http://trac-hacks.org/wiki/SqliteToPgScript
vim /home/sahana/trac/conf/trac.ini trac.db.postgres_backend.postgresqlconnector = enabled svn co http://trac-hacks.org/svn/sqlitetopgscript/0.10 sqlitetopgscript cd sqlitetopgscript ./sqlite2pg -e /home/sahana/trac -p 'postgres://tracuser:pass@localhost/trac'
- Install PostgreSQL
Errors:
/usr/local/lib/python2.6/dist-packages/TracScreenshots-0.8dev-py2.6.egg/tracscreenshots/core.py:13: DeprecationWarning: the sets module is deprecated import sets Traceback (most recent call last): File "./sqlite2pg", line 335, in <module> sys.exit(main(sys.argv[1:])) File "./sqlite2pg", line 331, in main Main(opts) 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/util.py", 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 http://trac-hacks.org/wiki/MathCaptchaPlugin 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
- DeveloperGuidelinesReleaseProcess
- Bzr start-commit hook to check for existence of 'compiled' folder
- Installation scripts or packages for operating systems and distributions that aren't already available (i.e. other than Windows or Debian/Ubuntu).
Translation Process
- Bzr start-commit hook to update all languages (need a script rather than the current appadmin UI method)
cd web2py python web2py.py -S eden -R applications/eden/static/scripts/tools/languages.py
- Scripts to automate the conversion 2 PO & upload/download to/from Pootle: UserGuidelinesLocalisation