Difference between revisions of "Getting started"
(Add FAQ) |
|||
Line 42: | Line 42: | ||
=== Ansible & Vagrant === | === Ansible & Vagrant === | ||
− | + | The following instructions detail how to install and run Archivematica from source on a virtual machine. | |
− | # Install VirtualBox, Vagrant, Ansible | + | # Install VirtualBox, Vagrant, and Ansible with the following commands: |
− | #* <code>sudo apt-get install virtualbox vagrant</code> (Ubuntu) | + | #* <code>sudo apt-get install virtualbox vagrant</code> (this is the command for Ubuntu; if you use Mac or Linux, it may be slightly different). |
− | #* Vagrant must be at least 1.5 (it can also be downloaded from [https://www.vagrantup.com/downloads.html vagrantup.com]) | + | #** Note: Vagrant must be at least 1.5 (it can also be downloaded from [https://www.vagrantup.com/downloads.html vagrantup.com]). Check your version with <code>vagrant --version</code>. |
− | |||
#* <code>sudo pip install -U ansible</code> | #* <code>sudo pip install -U ansible</code> | ||
− | # Checkout deployment repo | + | # Checkout the deployment repo: |
#* <code>git clone https://github.com/artefactual/deploy-pub.git</code> | #* <code>git clone https://github.com/artefactual/deploy-pub.git</code> | ||
− | # Download Ansible roles | + | # Download the Ansible roles: |
#* <code>cd deploy-pub/playbooks/archivematica</code> | #* <code>cd deploy-pub/playbooks/archivematica</code> | ||
#* <code>ansible-galaxy install -f -p roles/ -r requirements.yml</code> | #* <code>ansible-galaxy install -f -p roles/ -r requirements.yml</code> | ||
− | # (Optional) Change the branch by | + | # (Optional) Change the branch by opening the file <code>vars-singlenode.yml</code> and modifying the following: |
#* <code>archivematica_src_am_version: "branch-name"</code> | #* <code>archivematica_src_am_version: "branch-name"</code> | ||
#* <code>archivematica_src_ss_version: "branch-name"</code> | #* <code>archivematica_src_ss_version: "branch-name"</code> | ||
− | # Create virtual machine and provision it | + | # Create the virtual machine and provision it: |
− | #* <code>vagrant up</code> (it takes a while) | + | #* <code>vagrant up</code> (it takes a while!) |
− | # | + | # You can now log in to your virtual machine: |
#* <code>vagrant ssh</code> | #* <code>vagrant ssh</code> | ||
− | # | + | # You can now access the following services in a web browser: |
#* Archivematica - http://192.168.168.192 | #* Archivematica - http://192.168.168.192 | ||
#* Archivematica Storage Service: http://192.168.168.192:8000 (user: test, pass: test) | #* Archivematica Storage Service: http://192.168.168.192:8000 (user: test, pass: test) | ||
− | # Provisioning (via ansible) can be re-run with vagrant to update the code on the server | + | |
+ | You may also wish to do the following. | ||
+ | # Provisioning (via ansible) can be re-run with vagrant to update the code on the server (for example, if new features are added): | ||
#* <code>vagrant provision</code> | #* <code>vagrant provision</code> | ||
− | # To re-deploy a new branch to the same VM, update the branch variables in <code>vars-singlenode.yml</code> | + | # To re-deploy a new branch to the same VM, update the branch variables in <code>vars-singlenode.yml</code>: |
#* <code>archivematica_src_am_version: "branch-name"</code> | #* <code>archivematica_src_am_version: "branch-name"</code> | ||
#* <code>archivematica_src_ss_version: "branch-name"</code> | #* <code>archivematica_src_ss_version: "branch-name"</code> | ||
− | #* This will probably require resetting the Archivematica installation as well. This can be done by adding variables to <code>vars-singlenode.yml</code> | + | #** This will probably require resetting the Archivematica installation as well. This can be done by adding variables to <code>vars-singlenode.yml</code> |
#* <code>archivematica_src_reset_am_all: "true"</code> This will reset the Archivematica database, clear ElasticSearch and clear shared directories | #* <code>archivematica_src_reset_am_all: "true"</code> This will reset the Archivematica database, clear ElasticSearch and clear shared directories | ||
#* <code>archivematica_src_reset_ss_db: "true"</code> This will reset the Storage Service database | #* <code>archivematica_src_reset_ss_db: "true"</code> This will reset the Storage Service database |
Revision as of 23:48, 12 July 2016
Main Page > Development > Getting Started
This wiki page describes getting started with Archivematica as a developer. For user and administrative manuals, please see http://www.archivematica.org.
Vital Stats
- Language: Python (primarily)
- License: AGPL
- VCS: git
- Major libraries: Django, gearman (Python API)
- Contribution guidelines
Projects
Archivematica consists of several projects working together.
- Archivematica: Main repository containing the user-facing dashboard, task manager MCPServer and clients scripts for the MCPClient
- Storage Service: Responsible for moving files to Archivematica for processing, and from Archivematica into storage
- Format Policy Registry: Submodule shared between Archivematica and the Format Policy Registry (FPR) server that displays and updates FPR rules and commands
There are also several smaller repositories that support Archivematica in various ways. In general, you will not need these to develop on Archivematica.
- Development tools: Scripts to help with development. E.g. restarting services, workflow analysis
- FPR tools: All the tools, commands and rules used to populate the FPR database. Changes to the FPR should be submitted here.
- Archivematica Documentation: Documentation found at https://www.archivematica.org/en/docs/ for Archivematica
- Storage Service Documentation: Documentation found at https://www.archivematica.org/en/docs/ for the Storage Service
- Automation Tools: Scripts used to automate processing material through Archivematica
- Deployment: Ansible scripts for deploying and configuring Archivematica
- Deployment-Archivematica: Ansible playbook for Archivematica package install.
- Deployment-Archivematica-dev: Ansible playbook for Archivematica github install.
- Fixity checker: Commandline tool that assists in checking fixity for AIPs stored in Archivematica Storage Service instances.
- METS reader/writer: Library to create and parse METS files.
- agentarchives: Clients to retrieve, add, and modify records from archival management systems.
- Sample data: Data to test and show off Archivematica's processing
- History: Contains the pre-git history of Archivematica. Useful for checking the origins of code.
Installation
The recommended way to install Archivematica for development is with Ansible and Vagrant.
Ansible & Vagrant
The following instructions detail how to install and run Archivematica from source on a virtual machine.
- Install VirtualBox, Vagrant, and Ansible with the following commands:
sudo apt-get install virtualbox vagrant
(this is the command for Ubuntu; if you use Mac or Linux, it may be slightly different).- Note: Vagrant must be at least 1.5 (it can also be downloaded from vagrantup.com). Check your version with
vagrant --version
.
- Note: Vagrant must be at least 1.5 (it can also be downloaded from vagrantup.com). Check your version with
sudo pip install -U ansible
- Checkout the deployment repo:
- Download the Ansible roles:
cd deploy-pub/playbooks/archivematica
ansible-galaxy install -f -p roles/ -r requirements.yml
- (Optional) Change the branch by opening the file
vars-singlenode.yml
and modifying the following:archivematica_src_am_version: "branch-name"
archivematica_src_ss_version: "branch-name"
- Create the virtual machine and provision it:
vagrant up
(it takes a while!)
- You can now log in to your virtual machine:
vagrant ssh
- You can now access the following services in a web browser:
- Archivematica - http://192.168.168.192
- Archivematica Storage Service: http://192.168.168.192:8000 (user: test, pass: test)
You may also wish to do the following.
- Provisioning (via ansible) can be re-run with vagrant to update the code on the server (for example, if new features are added):
vagrant provision
- To re-deploy a new branch to the same VM, update the branch variables in
vars-singlenode.yml
:archivematica_src_am_version: "branch-name"
archivematica_src_ss_version: "branch-name"
- This will probably require resetting the Archivematica installation as well. This can be done by adding variables to
vars-singlenode.yml
- This will probably require resetting the Archivematica installation as well. This can be done by adding variables to
archivematica_src_reset_am_all: "true"
This will reset the Archivematica database, clear ElasticSearch and clear shared directoriesarchivematica_src_reset_ss_db: "true"
This will reset the Storage Service database- For more variables to control deployment, see the README
- See also the FAQ below
Local install (Legacy)
Archivematica can also be installed locally on a development machine using dev-helper. See development environment setup instructions This is considered legacy, and we recommend using Vagrant and Ansible.
Alternative Vagrant projects
Community-provided alternatives have also been developed.
- https://github.com/emltech/eml-archivematica-vagrant
- https://github.com/statsbiblioteket/archivematica-vagrant
Tests
Archivematica and the related projects have a small but growing test suite. We use py.test to run our tests, which should be listed as a requirement in the development/local requirements file.
To run the tests, go to the repository root and run py.test
See below for project-specific setup or changes to running the tests.
Archivematica
Before running Archivematica tests, set the following environment variable.
#!/usr/bin/fish set -xg PYTHONPATH /usr/share/archivematica/dashboard/:/usr/lib/archivematica/archivematicaCommon/
#!/usr/bin/bash export PYTHONPATH=$PYTHONPATH:/usr/share/archivematica/dashboard/:/usr/lib/archivematica/archivematicaCommon/
Storage Service
Before running Storage Service tests, set the following environment variables
#!/usr/bin/fish set -xg PYTHONPATH (pwd)/storage_service # The project root set -xg DJANGO_SETTINGS_MODULE storage_service.settings.test set -xg DJANGO_SECRET_KEY 'ADDKEY'
#!/usr/bin/bash export PYTHONPATH=$(pwd)/storage_service # The project root export DJANGO_SETTINGS_MODULE=storage_service.settings.test export DJANGO_SECRET_KEY='ADDKEY'
FAQ
- How do I restart everything in Archivematica?
A default install using Ansible also installs the devtools. Run am restart-services
to restart all services related to Archivematica and the storage service.
- How do I restart just the dashboard?
sudo /etc/init.d/apache2 start
or sudo service apache2 restart
- How do I restart the storage service?
sudo service uwsgi restart
- How do I restart nginx?
sudo service uwsgi restart
sudo service nginx restart
- How do I update or reset an ansible install?
To update an install, re-run vagrant provision
. If you only want to run part of the ansible tasks, you can use ansible's tags, for example: env ANSIBLE_ARGS="--tags=amsrc-ss-code" vagrant provision
More tags are documented in the ansible repo
To reset an install (delete all existing data like a fresh install) you can use ansible's role variables. For example: env ANSIBLE_ARGS="--extra-vars=archivematica_src_reset_ss_db=true" vagrant provision
will reset the storage service database. More role variables are documented in the ansible repo
The other way to control a deployment is to modify the Vagrantfile and vars-singlenote.yml files directly. Tags can be provided in the Vagrantfile. For example:
# ... more above # Ansible provisioning config.vm.provision :ansible do |ansible| ansible.playbook = "./singlenode.yml" ansible.host_key_checking = false # ansible.verbose = "v" ansible.extra_vars = { "archivematica_src_dir" => "/srv", "archivematica_src_environment_type" => "development", } ansible.raw_arguments = ENV['ANSIBLE_ARGS'] ansible.tags = ['amsrc-pipeline'] end # ... more below
Role variables can be modified in vars-singlenote.yml. Default values are found in the Archivematica role (in roles/archivematica-src/defaults/main.yml
). For example:
--- # archivematica-src role # What to install archivematica_src_install_devtools: "yes" archivematica_src_install_automationtools: "yes" # archivematica_src_install_appraisaltab: "yes" # SS django environment variables archivematica_src_ss_env_django_setings_module: "storage_service.settings.local" # Branches, archivematica_src_am_version: "qa/1.x" archivematica_src_ss_version: "qa/0.x" # archivematica_src_devtools_version: "master" # archivematica_src_automationtools_version: "master" # Reset # archivematica_src_reset_mcpdb: "true" # archivematica_src_reset_shareddir: "true" # archivematica_src_reset_es: "true" archivematica_src_reset_am_all: "true" archivematica_src_reset_ss_db: "true"