Python 2.7 miljø

Beskrivelse av Cerebrum-oppsett i nytt produksjonsmiljø. Miljøet er RHEL7, med Python 2.7 og virtualenv.

1   Forberedelser

1.1   Installasjon av avhengigheter

Cerebrum er avhengig av en del tredjepartsprogrammer og biblioteker. Når vi benytter virtualenv og PIP med Cerebrum, vil vi også være avhengig av å bygge en del moduler lokalt på maskinen. Følgende pakker må installeres fra EPEL.

  • python
  • python-virtualenv
  • postgresql92
  • postgresql92-postgresql-devel
  • cyrus-sasl-devel (for python 'sasl')
  • openssl
  • openssl-devel
  • openldap
  • libxml2-devel (for python 'lxml')
  • libxslt-devel (for python 'lxml')
  • libffi (for python 'pyOpenSSL')
  • libffi-devel (for python 'pyOpenSSL')
  • gcc
  • gcc-c++
  • swig
  • uio-oracle-client12.1
  • oracle-instantclient12.1-devel
  • git

1.2   Cerebrum-verktøy

Cerebrum benytter seg også av noen programvarepakker for en del funksjonalitet:

  • texlive-latex
  • texlive-dvips
  • barcode
  • gnupg2
  • uio-reguser

1.3   Installasjon av PIP-pakker som ligger utenfor pypi.python.org

Produksjonsmiljøet ligger i nedsperret nett, og kan ikke hente programvare uten å gå gjennom en proxy. Dette skaper problemer for enkelte python-moduler. Dette er bl.a. et kjent problem ved installasjon av egenix-mx-base gjennom PIP.

For å installere slike pakker må man:

  1. Hente ned komplett, ferdigbygget pakke. For mx-base vil dette være egenix-mx-base-3.2.8-py2.7_ucs4-linux-x86_64-prebuilt.zip fra egenix.com
  2. Legg filen inn på et passende område (f.eks. ~/pypi-local/). Filen må her ha et standardnavn som PIP kjenner igjen. Formatet er <pakkenavn>-<versjon>. For egenix-mx-base versjon 3.2.8 må filnavnet være egenix-mx-base-3.2.8.zip.
  3. Ved installasjon av pakker med PIP, bruk opsjonen --find-links ~/pypi-local/ for å instruere PIP om å hente pakker fra dette området, dersom de finnes der.

2   Filstruktur og oppsett

2.1   Repos

Cerebrum-konfigurasjonen forventer i enkelte tilfeller å finne cerebrum-relaterte repos sjekket ut på hjemmeområdet til brukeren som kjører scripts.

Benytt derfor følgende områder til utsjekket kode i test- og produksjonsmiljø:

  • ~/src/cerebrum
  • ~/src/cerebrum_config
  • ~/src/cerebrum_hacks

2.2   Installasjon av Cerebrum

# Lag et rotområde for cerebrum, eid av cerebrum-brukeren (evt.
# instansbruker dersom vi skal benytte en egen bruker per instans).
sudo mkdir /cerebrum
sudo chown cerebrum:cerebrum /cerebrum

# Opprett et virtualenv på området
virtualenv /cerebrum

# Aktiver virtualenv i shellet
source /cerebrum/bin/activate

# Konfigurasjon for bygging av M2Crypto
export SWIG_FEATURES="-cpperraswarn -includeall -I/usr/include/openssl"

# Installere dependencies
pip install -r ~/src/cerebrum/requirements.txt \
            --find-links ~/pypi-local \
            --proxy updateproxy.uio.no:3128

# Installere cerebrum
pip install /path/to/cerebrum/
touch /cerebrum/etc/cerebrum/cerebrum_path.py

2.3   Konfigurasjon av shellet

Cerebrum/instansbrukeren bør få satt enkelte ting i sitt shell:

# Virtualenv
source /cerebrum/bin/activate

# Legg til config-mappe i PYTHONPATH
export PYTHONPATH=/cerebrum/etc/cerebrum:$PYTHONPATH

# Oppsett for Oracle-klient
source /etc/oracle-client12.1/oraprofile.sh

2.4   Filstruktur

Gitt et virtualenv $venv, vil følgende steder benyttes for Cerebrum:

$venv/var/cache
Importfiler, eksportfiler og annen tilstandsinformasjon plasseres her. De fleste får egne underkataloger.
$venv/var/log
Logger. cronjobs ligger under $venv/var/log/cerebrum, mens spesielle logger, som f.eks. job_runner og autoadmin legges direkte under $venv/var/log.
$venv/var/lock
Låsefiler og PID-filer ligger her. Dette er det stort sett bare job_runner som benytter seg av.
$venv/etc/cerebrum
Inneholder config-filer. Dette vil være filer fra ~/src/cerebrum_config/etc/<instans>
$venv/etc/templates
Inneholder templates. Dette er filer fra ~/src/cerebrum_config/templates/<instans>
$venv/etc/passwords
Inneholder beskyttede filer (passordfiler, sertifikater, nøkler, etc...).
$venv/etc/dictionaries
Inneholder ordbøker som benyttes i generering og kontroll av brukernavn, og passord.
Publisert 4. sep. 2015 11:32