Database for experimental neuroscience laboratories
Documentation: http://alyx.readthedocs.io
Alyx has only been tested on Ubuntu (16.04 and 18.04). It could work on other systems but with no guarantees.
$ sudo apt-get update
$ sudo apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib virtualenv
$ sudo touch /var/log/alyx.log; sudo chmod 776 /var/log/alyx.log;
$ sudo mkdir uploaded
$ sudo chmod 775 -fR uploaded
$ sudo chown www-data:www-data -fR uploaded
$ git clone https://github.com/cortex-lab/alyx.git
$ cd alyx
$ virtualenv alyxvenv --python=python3
$ source ./alyxvenv/bin/activate
$ pip install -r requirements.txt
$ python setup.py
Enter a database name [labdb]:
Enter a postgres username [labdbuser]:
Enter a postgres password:
...
$ python alyx/manage.py check
$ python alyx/manage.py runserver
# An then initialize fixtures (ie. load default objects in the database)
cd scripts
./load-init-fixtures.sh
Then, go to http://localhost:8000/admin
, and log in with admin:admin
. You can change your password and create users and user groups.
The setup.py
script sets up postgres (it creates the database and postgres user), it sets up the alyx/alyx/settings_secret.py
file with the postgres database connection information, it creates the Python virtual environment with the dependencies (including django), and it creates all the required SQL tables.
Note that the postgres username and password are distinct from Alyx (Django) users and password. There is only one postgres user that is only used locally for maintenance task or by Django.
Install apache, and wsgi module, then make sure it's enabled
sudo apt-get install apache2
sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3
sudo a2enmod wsgi
Put the site configuration here: /etc/apache2/sites-available/001-alyx.conf
ServerName alyx.internationalbrainlab.org
ALLOWED_HOSTS
parameterActivate the website
sudo a2ensite
001-alyx-main
Restart the server, 2 commands are provided here for reference. Reload is recommended on a running production server as it should not interreupt current user transactions if any .
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/apache2 reload
Location of error logs if the server fails to start
/var/log/apache2/
./manage.py test -n
test without migrations (faster)./manage.py test
test with migrations (recommended if model changes)$ /manage.py test -n
./manage.py makemigrations
No changes detected
as migrations are provided by the repository./manage.py migrate
./manage.py set_db_permissions
sudo /etc/init.d/apache2 reload