A website detailing up to date package information for the Gentoo Linux main tree.
packages.gentoo.org has 7 components:
- nginx frontend: Handles SSL termination and proxies request to app backend, also handles caching content.
- thin.packages: Thin ruby server that handles users requests. Runs behind nginx.
- Sidekiq: A ruby workqueue, this queue works on re-indexing.
- Elasticsearch: Holds the actual search index; sidekiq keeps the indices updated and the thin.packages server sends elasticsearch queries.
- redis: A small dependency for sidekiq to store its workqueue.
- memcache: In addition to nginx, the rails app also relies on memcache to avoid expensive computations.
- Cron: A cronjob runs every N minutes, grabs the most up to date copy of the rsync tree (w/generated metadata) and inserts items into the sidekiq queue for processing.
The service has a test suite:
bundle install --deployment
bundle exec rake test
The above should be sufficient to run the tests. They should pass before deployment.
The app can be 90% deployed from puppet. There are additional requirements once puppet has installed of the dependencies. Change directory into your checkout of the git source code and run:
su gpackages # if you run it as some other user, change users.
It should do all the things to make the site work.
The code lives at:
- Git: sites/packages.git
- GitWeb: https://gitweb.gentoo.org/sites/packages.git/
This site is not critical to Gentoo Operations.