5472
Comment:
|
← Revision 41 as of 2018-02-14 16:54:47
94
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
= App Store Code Structure = == Terminology == * ''Django app'': Django organizes websites into separate modules called apps. Each app has its own directory at the top level typically containing files like {{{__init__.py}}}, {{{model.py}}}, and {{{views.py}}}. * ''templates'': HTML files with placeholders, which Django processes by filling in Python code. * ''static files'': general website files (images, Java Script, CSS) that are served as is without any processing from Django. * ''media files'': general website files referenced by the database backend. == Explanation of important files == * {{{settings.py}}}: Django settings file for configuring things like the database, location of templates, static files, and so on. * {{{urls.py}}}: the general URL layout of the entire site. Each URL entry in this file delegates URL paths to each Django app. * {{{django.wsgi}}}: the configuration file used when the App Store is deployed to an Apache server using mod_wsgi. * {{{apps}}}: navigation of Cytoscape apps and app pages. * {{{users}}}: user login/logout. * {{{search}}}: free text searching. * {{{backend}}}: programs can obtain details of apps from the backend; used by the Cytoscape App Manager * {{{help}}}: about, contact us, getting started pages * {{{submit_app}}}: Cytoscape 3.0 app submission pages and jar verification * {{{templates}}}: Templates in this directory are used throughout the App Store. * {{{static}}}: Each subdirectory has static files for a Django app. The {{{common}}} subdirectory has static files that belong to the entire site. When deploying the site to Apache, Apache should directly serve these files instead of through Django. * {{{util}}}: small utility functions used throughout the site's code = How requests are handled = 1. HTTP request is made to the Apache server. 1. Apache looks in {{{/etc/apache2/sites-enabled}}} to see how to handle the request. The {{{appstore}}} configuration file is set to handle requests made to {{{http://apps.cytoscape.org}}}. 1. {{{/etc/apache2/sites-enabled/appstore}}} tells Apache to use mod_wsgi. mod_wsgi runs a Python interpreter within Apache. {{{appstore}}} tells mod_wsgi to start Python with {{{/var/www/CyAppStore/django.wsgi}}}. 1. {{{django.wsgi}}} starts the Django library. It also specifies the location of {{{settings.py}}}, which is needed by Django to start the site. 1. {{{settings.py}}} specifies the location of {{{urls.py}}}, a list of URLs and the Python functions that handle them 1. {{{urls.py}}} dispatches the request to the appropriate function. Functions are always located in {{{views.py}}} files. 1. The handler function returns with a processed HTML page. = Debugging = 1. {{{/etc/apache2/sites-enabled/appstore}}} This file tells Apache and mod_wsgi where to find the site. The most important line is this: {{{ WSGIScriptAlias / /var/www/CyAppStore/django.wsgi }}} This tells Apache and mod_wsgi where to locate the site code. Make sure the path to {{{django.wsgi}}} is correct. 1. {{{/var/www/CyAppStore/django.wsgi}}} This file invokes Django's WSGI handler. It needs to correctly reference {{{settings.py}}} to start the site. Make sure these two lines are correct: {{{ SITE_PARENT_DIR = '/var/www' SITE_DIR = filejoin(SITE_PARENT_DIR, 'CyAppStore') }}} To check if these variables are being defined correctly, you can launch a separate Python interpreter and enter these lines: {{{ from os.path import join as filejoin SITE_PARENT_DIR = '/var/www' SITE_DIR = filejoin(SITE_PARENT_DIR, 'CyAppStore') }}} Then check if the variables {{{SITE_PARENT_DIR}}} and {{{SITE_DIR}}} are correct. 1. {{{/var/www/CyAppStore/settings.py}}} This file is pretty complicated. But if you've checked everything at this point, here's some ways to pinpoint problems in {{{settings.py}}}. a. If you're getting an HTTP 500 error, you can get the stack trace by turning on debug mode then reloading the page. Note that debug mode exposes sensitive information about the site to the public. Make sure to keep debug mode off as much as possible. Change to following line to {{{True}}}: {{{ DEBUG = False }}} a. You can poke at the code by running a Python shell. Enter this command at the shell prompt in the same directory as {{{settings.py}}}: {{{ python manage.py shell }}} You can check to see if the site's code is working correctly without having debug mode on. For example, to see if the list of all apps is working, enter this into the Python interpreter: {{{ from apps.models import App App.objects.all() }}} a. If you're getting database errors, enter this command at the shell prompt in the same directory as {{{settings.py}}}: {{{ python manage.py dbshell }}} If you're able to get a SQL prompt, that means the log in settings into the SQL database are correct. a. If you make changes to a Python file but you're not seeing the changes taking effect, you may have to delete all the {{{.pyc}}} files, which are compiled Python code. To do so, type this: {{{ make svnclean }}} = Tips = * You can reindex the text search engine with this command: {{{ make index }}} * If you want to remove unused tags, authors, and media files, type this command: {{{ python manage.py garbage_dump }}} If any tags or authors were removed, you will have to reindex the text search engine. |
Moved to https://github.com/cytoscape/cytoscape/wiki/Cytoscape-App-Store#site-administration |