Install¶
The documentation was tested on Amazon AWS t2.micro instance with Ubuntu 18.04 server installed.
Install Python & the required libraries.¶
As the first step you should make sure all that the next libraries are installed in the system.
sudo apt install python3
sudo apt install python3-django
sudo apt install python-django-common
sudo apt install libcairo2
sudo apt install libpango1.0-0
After you should install the CORE modules from pypi.
sudo pip3 install core-common
sudo pip3 install core-permissions
sudo pip3 install core-humanresources
Create the Django project¶
Initialize the django project using the next command.
django-admin startproject core_server
Configure the django project you just created with the next configurations:
Edit the core_server settings.py file with the next configurations:
INSTALLED_APPS = [
'common',
'finance',
'humanresources',
'orquestra',
'pyforms_web.web',
'jfu',
'sorl.thumbnail',
'allauth',
'allauth.account',
'allauth.socialaccount',
...
'django.contrib.sites'
]
MIDDLEWARE = [
'pyforms_web.web.middleware.PyFormsMiddleware',
...
]
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static', "img"),
os.path.join(BASE_DIR,'static', "css"),
)
# ALL AUTH CONFIGURATION
SITE_ID = 1 # Required for allauth module
LOGIN_REDIRECT_URL = '/'
ACCOUNT_SIGNUP_CLOSED = True
ACCOUNT_SESSION_REMEMBER = True
PROFILE_GUEST = 'PROFILE: Guest'
PROFILE_GROUP_RESPONSIBLE = 'PROFILE: Group responsible'
PROFILE_LAB_MANAGER = 'PROFILE: Lab manager'
PROFILE_ADMIN = 'PROFILE: Admin'
PROFILE_HUMAN_RESOURCES = 'PROFILE: Human resources'
PROFILE_EDIT_BUDGET = 'PROFILE: Edit budget'
PROFILE_PUBLICATIONS_AUDITOR = 'PROFILE: Publications auditor'
PROFILE_OSP = 'PROFILE: OSP collaborator'
PROFILE_SCICOM = 'PROFILE: SCICOM'
PROFILE_LAB_ADMIN = ''
APP_PROFILE_ORDERS = ''
APP_PROFILE_ALL_ORDERS = ''
APP_PROFILE_HR_PEOPLE = ''
PROFILE_EXPIRING_CONTRACTS_OF_MY_GROUP = 'PROFILE: 60 Days warning: Expiring contracts of my groups'
PROFILE_EXPIRING_CONTRACTS_AND_PAYOUTS = 'PROFILE: 60 Days warning: Expiring contracts and payouts'
PROFILE_MAINTAINERS = 'PROFILE: Maintainers'
DEFAULT_CURRENCY_NAME = 'Euro'
BASE_URL = 'http://localhost:8000'
ENDING_CONTRACT_FROM = 'no.reply@example.com'
ENDING_CONTRACT_WARNING_N_DAYS_BEFORE = 89
# Because these configuration depend on the BASE_URL variable that can be diferent in production they have to be defined after the
# production settings are loaded
ENDING_CONTRACT_LINK = '{base_url}/app/contracts/#/frontend.humanresources_apps.apps.Contract/?obj='.format(base_url=BASE_URL)
NEW_CONTRACT_PROPOSAL_LINK = '{base_url}/app/proposals/#/frontend.humanresources_apps.apps.Proposal/?obj={{proposal_id}}'.format(base_url=BASE_URL)
Edit the core_server urls.py file with the next configurations:
from django.conf import settings
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('', include('humanresources.urls')),
path('', include('permissions.urls')),
path('accounts/', include('allauth.urls')),
path('pyforms/', include('pyforms_web.web.urls') ),
path('', include('orquestra.urls') ),
path('admin/', admin.site.urls),
]
if settings.DEBUG:
from django.conf.urls.static import static
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Create the file local_settings.py file with the next configurations:
SETTINGS_PRIORITY = 0
ORQUESTRA_REQUIREAUTH = True
PYFORMS_DEBUG = False
Create the static files folder.
sudo mkdir /var/www/core-server/static
sudo mkdir /var/www/core-server/static/js
sudo mkdir /var/www/core-server/static/img
sudo mkdir /var/www/core-server/static/css
sudo python3 manage.py collectstatic
Create the file core.conf
<VirtualHost *:80>
ServerName core.example.com
ServerAlias core.example.com
ServerAdmin ricardo.ribeiro@research.fchampalimaud.org
ErrorLog /var/log/core_error.log
CustomLog /var/log/core_access.log combined
WSGIDaemonProcess corehttp python-path=/usr/lib/python3.6/site-packages:/var/www/core-server
WSGIProcessGroup corehttp
WSGIScriptAlias / /var/www/core-server/configuration/wsgi.py
Alias /static/ /var/www/core-server/static/
<Directory /var/www/research-core-server>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /var/www/research-core-server/static>
Require all granted
</Directory>
</VirtualHost>