root / snf-webproject / docs / index.rst @ 693bebea
History | View | Annotate | Download (10.3 kB)
1 | e609b1ba | Vangelis Koukis | .. _snf-webproject: |
---|---|---|---|
2 | e609b1ba | Vangelis Koukis | |
3 | e609b1ba | Vangelis Koukis | Component snf-webproject |
4 | dbe32d94 | Vangelis Koukis | ======================== |
5 | e609b1ba | Vangelis Koukis | |
6 | 25762387 | Kostas Papadimitriou | synnefo component :ref:`snf-webproject <snf-webproject>` defines a Django |
7 | 25762387 | Kostas Papadimitriou | project in which the various other synnefo components |
8 | b1996c81 | Kostas Papadimitriou | (:ref:`snf-cyclades-app <snf-cyclades-app>`, |
9 | 99644884 | Vangelis Koukis | :ref:`snf-pithos-app <snf-pithos-app>`, etc.) may run. |
10 | 99644884 | Vangelis Koukis | |
11 | 99644884 | Vangelis Koukis | It provides a standard mechanism for every synnefo software component to modify |
12 | 99644884 | Vangelis Koukis | the list of Django apps to be executed inside the project (``INSTALLED_APPS``), |
13 | 99644884 | Vangelis Koukis | modify the list of middleware classes (``MIDDLEWARE_CLASSES``) and add its own |
14 | 99644884 | Vangelis Koukis | URL patterns. |
15 | 99644884 | Vangelis Koukis | |
16 | 99644884 | Vangelis Koukis | .. todo:: Document snf-webproject facilities for developers |
17 | 99644884 | Vangelis Koukis | |
18 | 99644884 | Vangelis Koukis | Package installation |
19 | 99644884 | Vangelis Koukis | -------------------- |
20 | 99644884 | Vangelis Koukis | |
21 | 99644884 | Vangelis Koukis | .. todo:: kpap: verify instructions for installation from source. |
22 | 99644884 | Vangelis Koukis | |
23 | 99644884 | Vangelis Koukis | Use ``pip`` to install the latest version of the package from source, |
24 | 99644884 | Vangelis Koukis | or request a specific version as ``snf-webproject==x.y.z``. |
25 | 99644884 | Vangelis Koukis | |
26 | 99644884 | Vangelis Koukis | .. code-block:: console |
27 | 99644884 | Vangelis Koukis | |
28 | 4c099520 | Kostas Papadimitriou | pip install snf-webproject -f https://docs.dev.grnet.gr/pypi |
29 | 99644884 | Vangelis Koukis | |
30 | 99644884 | Vangelis Koukis | On Debian Squeeze, install the ``snf-webproject`` Debian package. |
31 | 99644884 | Vangelis Koukis | |
32 | 99644884 | Vangelis Koukis | Package configuration |
33 | 99644884 | Vangelis Koukis | --------------------- |
34 | 99644884 | Vangelis Koukis | |
35 | dbe32d94 | Vangelis Koukis | Database |
36 | dbe32d94 | Vangelis Koukis | ******** |
37 | dbe32d94 | Vangelis Koukis | |
38 | dbe32d94 | Vangelis Koukis | You need to create a database for use by the Django project, |
39 | dbe32d94 | Vangelis Koukis | then configure your custom :ref:`snf-common <snf-common>` settings, |
40 | dbe32d94 | Vangelis Koukis | according to your choice of DB. |
41 | dbe32d94 | Vangelis Koukis | |
42 | dbe32d94 | Vangelis Koukis | DB creation |
43 | dbe32d94 | Vangelis Koukis | ``````````` |
44 | dbe32d94 | Vangelis Koukis | |
45 | dbe32d94 | Vangelis Koukis | SQLite |
46 | dbe32d94 | Vangelis Koukis | ~~~~~~ |
47 | dbe32d94 | Vangelis Koukis | Most self-respecting systems have ``sqlite`` installed by default. |
48 | dbe32d94 | Vangelis Koukis | |
49 | dbe32d94 | Vangelis Koukis | |
50 | dbe32d94 | Vangelis Koukis | MySQL |
51 | dbe32d94 | Vangelis Koukis | ~~~~~ |
52 | dbe32d94 | Vangelis Koukis | MySQL must be installed first: |
53 | dbe32d94 | Vangelis Koukis | |
54 | dbe32d94 | Vangelis Koukis | .. code-block:: console |
55 | dbe32d94 | Vangelis Koukis | |
56 | dbe32d94 | Vangelis Koukis | # apt-get install libmysqlclient-dev |
57 | dbe32d94 | Vangelis Koukis | |
58 | dbe32d94 | Vangelis Koukis | if you are using MacPorts: |
59 | dbe32d94 | Vangelis Koukis | |
60 | dbe32d94 | Vangelis Koukis | .. code-block:: console |
61 | dbe32d94 | Vangelis Koukis | |
62 | dbe32d94 | Vangelis Koukis | $ sudo port install mysql5 |
63 | dbe32d94 | Vangelis Koukis | |
64 | dbe32d94 | Vangelis Koukis | .. note:: |
65 | dbe32d94 | Vangelis Koukis | |
66 | dbe32d94 | Vangelis Koukis | On MacOSX with Mysql install from MacPorts the above command will |
67 | dbe32d94 | Vangelis Koukis | fail complaining that it cannot find the mysql_config command. Do |
68 | dbe32d94 | Vangelis Koukis | the following and restart the installation: |
69 | dbe32d94 | Vangelis Koukis | |
70 | dbe32d94 | Vangelis Koukis | .. code-block:: console |
71 | dbe32d94 | Vangelis Koukis | |
72 | dbe32d94 | Vangelis Koukis | $ echo "mysql_config = /opt/local/bin/mysql_config5" >> ./build/MySQL-python/site.cfg |
73 | dbe32d94 | Vangelis Koukis | |
74 | dbe32d94 | Vangelis Koukis | Configure a MySQL db/account for the Django project: |
75 | dbe32d94 | Vangelis Koukis | |
76 | dbe32d94 | Vangelis Koukis | .. code-block:: console |
77 | dbe32d94 | Vangelis Koukis | |
78 | dbe32d94 | Vangelis Koukis | $ mysql -u root -p; |
79 | dbe32d94 | Vangelis Koukis | |
80 | dbe32d94 | Vangelis Koukis | .. code-block:: mysql |
81 | dbe32d94 | Vangelis Koukis | |
82 | dbe32d94 | Vangelis Koukis | CREATE DATABASE <database name>; |
83 | dbe32d94 | Vangelis Koukis | SHOW DATABASES; |
84 | dbe32d94 | Vangelis Koukis | GRANT ALL ON <database name>.* TO <db username> IDENTIFIED BY '<db password>'; |
85 | dbe32d94 | Vangelis Koukis | |
86 | dbe32d94 | Vangelis Koukis | .. warning:: |
87 | dbe32d94 | Vangelis Koukis | MySQL *must* be set in ``READ-COMMITED`` mode, e.g. by setting: |
88 | dbe32d94 | Vangelis Koukis | |
89 | dbe32d94 | Vangelis Koukis | .. code-block:: ini |
90 | dbe32d94 | Vangelis Koukis | |
91 | dbe32d94 | Vangelis Koukis | transaction-isolation = READ-COMMITTED |
92 | dbe32d94 | Vangelis Koukis | |
93 | dbe32d94 | Vangelis Koukis | in the ``[mysqld]`` section of :file:`/etc/mysql/my.cnf`. |
94 | dbe32d94 | Vangelis Koukis | |
95 | dbe32d94 | Vangelis Koukis | Alternatively, make sure the following code fragment stays enabled |
96 | dbe32d94 | Vangelis Koukis | in your custom settings, e.g., in :file:`/etc/synnefo/10-database.conf`: |
97 | dbe32d94 | Vangelis Koukis | |
98 | dbe32d94 | Vangelis Koukis | .. code-block:: python |
99 | dbe32d94 | Vangelis Koukis | |
100 | dbe32d94 | Vangelis Koukis | if DATABASES['default']['ENGINE'].endswith('mysql'): |
101 | dbe32d94 | Vangelis Koukis | DATABASES['default']['OPTIONS'] = { |
102 | dbe32d94 | Vangelis Koukis | 'init_command': 'SET storage_engine=INNODB; ' + |
103 | dbe32d94 | Vangelis Koukis | 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', |
104 | dbe32d94 | Vangelis Koukis | } |
105 | dbe32d94 | Vangelis Koukis | |
106 | dbe32d94 | Vangelis Koukis | PostgreSQL |
107 | dbe32d94 | Vangelis Koukis | ~~~~~~~~~~ |
108 | dbe32d94 | Vangelis Koukis | |
109 | dbe32d94 | Vangelis Koukis | You need to install the PostgreSQL binaries, e.g., for Debian: |
110 | dbe32d94 | Vangelis Koukis | |
111 | dbe32d94 | Vangelis Koukis | .. code-block:: console |
112 | dbe32d94 | Vangelis Koukis | |
113 | dbe32d94 | Vangelis Koukis | # apt-get install postgresql-8.4 libpq-dev |
114 | dbe32d94 | Vangelis Koukis | |
115 | dbe32d94 | Vangelis Koukis | or ir you are using MacPorts: |
116 | dbe32d94 | Vangelis Koukis | |
117 | dbe32d94 | Vangelis Koukis | .. code-block:: console |
118 | dbe32d94 | Vangelis Koukis | |
119 | dbe32d94 | Vangelis Koukis | $ sudo port install postgresql84 |
120 | dbe32d94 | Vangelis Koukis | |
121 | dbe32d94 | Vangelis Koukis | To configure a postgres db/account for synnefo, |
122 | dbe32d94 | Vangelis Koukis | |
123 | dbe32d94 | Vangelis Koukis | * Become the postgres user, connect to PostgreSQL: |
124 | dbe32d94 | Vangelis Koukis | |
125 | dbe32d94 | Vangelis Koukis | .. code-block:: console |
126 | dbe32d94 | Vangelis Koukis | |
127 | dbe32d94 | Vangelis Koukis | $ sudo su - postgres |
128 | dbe32d94 | Vangelis Koukis | $ psql |
129 | dbe32d94 | Vangelis Koukis | |
130 | dbe32d94 | Vangelis Koukis | * Run the following commands: |
131 | dbe32d94 | Vangelis Koukis | |
132 | dbe32d94 | Vangelis Koukis | .. code-block:: sql |
133 | dbe32d94 | Vangelis Koukis | |
134 | dbe32d94 | Vangelis Koukis | DROP DATABASE <database name>; |
135 | dbe32d94 | Vangelis Koukis | DROP USER <db username>; |
136 | dbe32d94 | Vangelis Koukis | CREATE USER <db username> WITH PASSWORD '<db password>'; |
137 | dbe32d94 | Vangelis Koukis | CREATE DATABASE <database name>; |
138 | dbe32d94 | Vangelis Koukis | GRANT ALL PRIVILEGES ON DATABASE <database name> TO <db username>; |
139 | dbe32d94 | Vangelis Koukis | ALTER DATABASE <database name> OWNER TO <db username>; |
140 | dbe32d94 | Vangelis Koukis | ALTER USER <db username> CREATEDB; |
141 | dbe32d94 | Vangelis Koukis | |
142 | dbe32d94 | Vangelis Koukis | .. note:: |
143 | dbe32d94 | Vangelis Koukis | The last line enables the newly created user to create own databases. This |
144 | dbe32d94 | Vangelis Koukis | is needed for Django to create and drop the ``test_synnefo`` database for |
145 | dbe32d94 | Vangelis Koukis | unit testing. |
146 | dbe32d94 | Vangelis Koukis | |
147 | dbe32d94 | Vangelis Koukis | DB driver |
148 | dbe32d94 | Vangelis Koukis | ````````` |
149 | dbe32d94 | Vangelis Koukis | |
150 | dbe32d94 | Vangelis Koukis | Depending on your DB of choice, install one of the following: |
151 | dbe32d94 | Vangelis Koukis | |
152 | dbe32d94 | Vangelis Koukis | ========= ======================= =================== ========== |
153 | dbe32d94 | Vangelis Koukis | Database PyPi package name Debian package name version |
154 | dbe32d94 | Vangelis Koukis | ========= ======================= =================== ========== |
155 | dbe32d94 | Vangelis Koukis | mysql MySQL-python python-mysql 1.2.3 |
156 | dbe32d94 | Vangelis Koukis | postgres psycopg2 python-psycopg2 2.4 |
157 | dbe32d94 | Vangelis Koukis | ========= ======================= =================== ========== |
158 | dbe32d94 | Vangelis Koukis | |
159 | dbe32d94 | Vangelis Koukis | .. note:: |
160 | dbe32d94 | Vangelis Koukis | The python sqlite driver is available by default with Python so no |
161 | dbe32d94 | Vangelis Koukis | additional configuration is required. Also, most self-respecting systems |
162 | dbe32d94 | Vangelis Koukis | have the sqlite library installed by default. |
163 | dbe32d94 | Vangelis Koukis | |
164 | dbe32d94 | Vangelis Koukis | DB settings |
165 | dbe32d94 | Vangelis Koukis | ``````````` |
166 | dbe32d94 | Vangelis Koukis | |
167 | dbe32d94 | Vangelis Koukis | Add the following to your custom :ref:`snf-common <snf-common>`, depending on |
168 | dbe32d94 | Vangelis Koukis | your choice of DB: |
169 | dbe32d94 | Vangelis Koukis | |
170 | dbe32d94 | Vangelis Koukis | SQLite |
171 | dbe32d94 | Vangelis Koukis | ~~~~~~ |
172 | dbe32d94 | Vangelis Koukis | .. code-block:: python |
173 | dbe32d94 | Vangelis Koukis | |
174 | dbe32d94 | Vangelis Koukis | DATABASES = { |
175 | dbe32d94 | Vangelis Koukis | 'default': { |
176 | dbe32d94 | Vangelis Koukis | 'ENGINE': 'django.db.backends.sqlite3', |
177 | dbe32d94 | Vangelis Koukis | 'NAME': '/path/to/synnefo.db' |
178 | dbe32d94 | Vangelis Koukis | } |
179 | dbe32d94 | Vangelis Koukis | } |
180 | dbe32d94 | Vangelis Koukis | |
181 | dbe32d94 | Vangelis Koukis | .. warning:: ``NAME`` must be an absolute path to the sqlite3 database file |
182 | dbe32d94 | Vangelis Koukis | |
183 | dbe32d94 | Vangelis Koukis | |
184 | dbe32d94 | Vangelis Koukis | MySQL |
185 | dbe32d94 | Vangelis Koukis | ~~~~~ |
186 | dbe32d94 | Vangelis Koukis | |
187 | dbe32d94 | Vangelis Koukis | .. code-block:: python |
188 | dbe32d94 | Vangelis Koukis | |
189 | dbe32d94 | Vangelis Koukis | DATABASES = { |
190 | dbe32d94 | Vangelis Koukis | 'default': { |
191 | dbe32d94 | Vangelis Koukis | 'ENGINE': 'django.db.backends.mysql', |
192 | dbe32d94 | Vangelis Koukis | 'NAME': 'synnefo', |
193 | dbe32d94 | Vangelis Koukis | 'USER': 'USERNAME', |
194 | dbe32d94 | Vangelis Koukis | 'PASSWORD': 'PASSWORD', |
195 | dbe32d94 | Vangelis Koukis | 'HOST': 'HOST', |
196 | dbe32d94 | Vangelis Koukis | 'PORT': 'PORT', |
197 | dbe32d94 | Vangelis Koukis | 'OPTIONS': { |
198 | dbe32d94 | Vangelis Koukis | 'init_command': 'SET storage_engine=INNODB', |
199 | dbe32d94 | Vangelis Koukis | } |
200 | dbe32d94 | Vangelis Koukis | } |
201 | dbe32d94 | Vangelis Koukis | } |
202 | dbe32d94 | Vangelis Koukis | |
203 | dbe32d94 | Vangelis Koukis | PostgreSQL |
204 | dbe32d94 | Vangelis Koukis | ~~~~~~~~~~ |
205 | dbe32d94 | Vangelis Koukis | |
206 | dbe32d94 | Vangelis Koukis | .. code-block:: python |
207 | dbe32d94 | Vangelis Koukis | |
208 | dbe32d94 | Vangelis Koukis | DATABASES = { |
209 | dbe32d94 | Vangelis Koukis | 'default': { |
210 | dbe32d94 | Vangelis Koukis | 'ENGINE': 'django.db.backends.postgresql_psycopg2', |
211 | dbe32d94 | Vangelis Koukis | 'NAME': 'DATABASE', |
212 | dbe32d94 | Vangelis Koukis | 'USER': 'USERNAME', |
213 | dbe32d94 | Vangelis Koukis | 'PASSWORD': 'PASSWORD', |
214 | dbe32d94 | Vangelis Koukis | 'HOST': 'HOST', |
215 | dbe32d94 | Vangelis Koukis | 'PORT': 'PORT', |
216 | dbe32d94 | Vangelis Koukis | } |
217 | dbe32d94 | Vangelis Koukis | } |
218 | dbe32d94 | Vangelis Koukis | |
219 | dbe32d94 | Vangelis Koukis | Try it out. The following command will attempt to connect to the DB and |
220 | dbe32d94 | Vangelis Koukis | print out DDL statements. It should not fail. |
221 | dbe32d94 | Vangelis Koukis | |
222 | dbe32d94 | Vangelis Koukis | .. code-block:: console |
223 | dbe32d94 | Vangelis Koukis | |
224 | dbe32d94 | Vangelis Koukis | $ snf-manage sql db |
225 | dbe32d94 | Vangelis Koukis | |
226 | dbe32d94 | Vangelis Koukis | Web server |
227 | dbe32d94 | Vangelis Koukis | ********** |
228 | 99644884 | Vangelis Koukis | |
229 | 99644884 | Vangelis Koukis | You need to configure your webserver to serve static files and relay |
230 | 99644884 | Vangelis Koukis | requests to :ref:`snf-webproject <snf-webproject>`. |
231 | 99644884 | Vangelis Koukis | |
232 | 25762387 | Kostas Papadimitriou | |
233 | 25762387 | Kostas Papadimitriou | .. static_files:: |
234 | 99644884 | Vangelis Koukis | Static files |
235 | 99644884 | Vangelis Koukis | ```````````` |
236 | b3ae4dd1 | Kostas Papadimitriou | |
237 | b3ae4dd1 | Kostas Papadimitriou | :ref:`snf-webproject <snf-webproject>` provides a helper mechanism to avoid tedious |
238 | b3ae4dd1 | Kostas Papadimitriou | tasks involving the collection and deployment of installed applications static |
239 | b3ae4dd1 | Kostas Papadimitriou | files (js/css/images etc.). The mechanism tries to mimic the ``staticfiles`` |
240 | b3ae4dd1 | Kostas Papadimitriou | application included in ``Django>=1.3`` but its far less robust and adequate |
241 | b3ae4dd1 | Kostas Papadimitriou | regarding its capabilities. When ``Django>=1.3`` become available as a package |
242 | b3ae4dd1 | Kostas Papadimitriou | for the stable release of ``Debian``, the current mechanism will get wiped off |
243 | b3ae4dd1 | Kostas Papadimitriou | to be replaced by the ``staticfiles`` contrib application. |
244 | b3ae4dd1 | Kostas Papadimitriou | |
245 | b3ae4dd1 | Kostas Papadimitriou | The current mechanism provides a tool to collect the static files of the synnefo |
246 | b3ae4dd1 | Kostas Papadimitriou | components installed and enabled in your system and an automatic way of serving |
247 | b3ae4dd1 | Kostas Papadimitriou | those files directly from your django project. Be concerned that the latter is |
248 | b3ae4dd1 | Kostas Papadimitriou | for debugging pupropses only since serving static files from your django project |
249 | b3ae4dd1 | Kostas Papadimitriou | is considered as a bad practice. |
250 | b3ae4dd1 | Kostas Papadimitriou | |
251 | b3ae4dd1 | Kostas Papadimitriou | Each django based synnefo component informs webproject mechanism for the static |
252 | b3ae4dd1 | Kostas Papadimitriou | files it contains using the ``synnefo.web_static`` entry point which should point |
253 | b3ae4dd1 | Kostas Papadimitriou | to a dict containing a map of a python module and a namespace for the url under |
254 | b3ae4dd1 | Kostas Papadimitriou | which the files will be served from. As an example of use we can see how |
255 | b3ae4dd1 | Kostas Papadimitriou | snf-cyclades-app informs webproject for the static files of ui and admin applications. |
256 | b3ae4dd1 | Kostas Papadimitriou | |
257 | b3ae4dd1 | Kostas Papadimitriou | in ``setup.py``:: |
258 | b3ae4dd1 | Kostas Papadimitriou | |
259 | b3ae4dd1 | Kostas Papadimitriou | ... |
260 | b3ae4dd1 | Kostas Papadimitriou | entry_points = { |
261 | b3ae4dd1 | Kostas Papadimitriou | ... |
262 | b3ae4dd1 | Kostas Papadimitriou | 'synnefo': [ |
263 | b3ae4dd1 | Kostas Papadimitriou | ... |
264 | b3ae4dd1 | Kostas Papadimitriou | 'web_static = synnefo.app_settings:synnefo_static_files', |
265 | b3ae4dd1 | Kostas Papadimitriou | ... |
266 | b3ae4dd1 | Kostas Papadimitriou | ] |
267 | b3ae4dd1 | Kostas Papadimitriou | }, |
268 | b3ae4dd1 | Kostas Papadimitriou | ... |
269 | b3ae4dd1 | Kostas Papadimitriou | |
270 | b3ae4dd1 | Kostas Papadimitriou | and inside ``synnefo/app_settings/__init__.py``:: |
271 | b3ae4dd1 | Kostas Papadimitriou | |
272 | b3ae4dd1 | Kostas Papadimitriou | synnefo_static_files = { |
273 | b3ae4dd1 | Kostas Papadimitriou | 'synnefo.ui': 'ui', |
274 | b3ae4dd1 | Kostas Papadimitriou | 'synnefo.admin': 'admin', |
275 | b3ae4dd1 | Kostas Papadimitriou | } |
276 | b3ae4dd1 | Kostas Papadimitriou | |
277 | b3ae4dd1 | Kostas Papadimitriou | |
278 | b3ae4dd1 | Kostas Papadimitriou | Collecting static files |
279 | b3ae4dd1 | Kostas Papadimitriou | ^^^^^^^^^^^^^^^^^^^^^^^ |
280 | b3ae4dd1 | Kostas Papadimitriou | |
281 | 99644884 | Vangelis Koukis | * Choose an appropriate path (e.g. :file:`/var/lib/synnefo/static/`) from which |
282 | 99644884 | Vangelis Koukis | your web server will serve all static files (js/css) required by the synnefo |
283 | 99644884 | Vangelis Koukis | web frontend to run. |
284 | 99644884 | Vangelis Koukis | * Change the ``MEDIA_ROOT`` value in your settings (see :ref:`snf-common |
285 | 99644884 | Vangelis Koukis | <snf-common>`) to point to that directory. |
286 | 99644884 | Vangelis Koukis | * Create symlinks to the static files of all synnefo webapp components |
287 | 99644884 | Vangelis Koukis | inside the chosen directory, by running: |
288 | 99644884 | Vangelis Koukis | |
289 | 99644884 | Vangelis Koukis | .. code-block:: console |
290 | 99644884 | Vangelis Koukis | |
291 | 99644884 | Vangelis Koukis | $ snf-manage link_static |
292 | 99644884 | Vangelis Koukis | |
293 | b3ae4dd1 | Kostas Papadimitriou | |
294 | b3ae4dd1 | Kostas Papadimitriou | Serving static files |
295 | b3ae4dd1 | Kostas Papadimitriou | ^^^^^^^^^^^^^^^^^^^^ |
296 | b3ae4dd1 | Kostas Papadimitriou | |
297 | b3ae4dd1 | Kostas Papadimitriou | By default will serve the static files if ``DEBUG`` setting is set to True. |
298 | 25762387 | Kostas Papadimitriou | You can override this behaviour by explicitly setting the |
299 | 25762387 | Kostas Papadimitriou | ``WEBPROJECT_SERVE_STATIC`` to True or False in your settings files. |
300 | b3ae4dd1 | Kostas Papadimitriou | |
301 | b3ae4dd1 | Kostas Papadimitriou | |
302 | 99644884 | Vangelis Koukis | Apache |
303 | 99644884 | Vangelis Koukis | `````` |
304 | 99644884 | Vangelis Koukis | |
305 | 99644884 | Vangelis Koukis | .. todo:: document Apache configuration |
306 | 99644884 | Vangelis Koukis | |
307 | 99644884 | Vangelis Koukis | nginx |
308 | 99644884 | Vangelis Koukis | ````` |
309 | 99644884 | Vangelis Koukis | This section describes a sample nginx configuration which uses FastCGI |
310 | 99644884 | Vangelis Koukis | to relay requests to synnefo. |
311 | 99644884 | Vangelis Koukis | |
312 | 99644884 | Vangelis Koukis | First, use a distribution-specific mechanism (e.g., APT) to install nginx: |
313 | 99644884 | Vangelis Koukis | |
314 | 99644884 | Vangelis Koukis | .. code-block:: console |
315 | 99644884 | Vangelis Koukis | |
316 | 99644884 | Vangelis Koukis | # apt-get install nginx |
317 | 99644884 | Vangelis Koukis | |
318 | 99644884 | Vangelis Koukis | Then activate the following nginx configuration file by placing it under |
319 | 99644884 | Vangelis Koukis | :file:`/etc/nginx/sites-available` and symlinking under |
320 | 99644884 | Vangelis Koukis | :file:`/etc/nginx/sites-enabled`: |
321 | 99644884 | Vangelis Koukis | |
322 | 99644884 | Vangelis Koukis | .. literalinclude:: ../_static/synnefo.nginx.conf |
323 | 99644884 | Vangelis Koukis | |
324 | 99644884 | Vangelis Koukis | .. todo:: fix the location of the configuration file |
325 | 99644884 | Vangelis Koukis | |
326 | 99644884 | Vangelis Koukis | `download <../_static/synnefo.nginx.conf>`_ |
327 | 99644884 | Vangelis Koukis | |
328 | 99644884 | Vangelis Koukis | Once nginx is configured, run the FastCGI server to receive incoming requests |
329 | 99644884 | Vangelis Koukis | from nginx. This requires installation of package ``flup``: |
330 | 99644884 | Vangelis Koukis | |
331 | 99644884 | Vangelis Koukis | .. code-block:: console |
332 | 99644884 | Vangelis Koukis | |
333 | 99644884 | Vangelis Koukis | # apt-get install flup |
334 | 99644884 | Vangelis Koukis | $ snf-manage runfcgi host=127.0.0.1 port=8015 |
335 | 99644884 | Vangelis Koukis | |
336 | 25762387 | Kostas Papadimitriou | |
337 | 99644884 | Vangelis Koukis | For developers |
338 | 99644884 | Vangelis Koukis | -------------- |
339 | 99644884 | Vangelis Koukis | |
340 | 25762387 | Kostas Papadimitriou | Available entry points |
341 | 25762387 | Kostas Papadimitriou | ^^^^^^^^^^^^^^^^^^^^^^ |
342 | 25762387 | Kostas Papadimitriou | |
343 | 25762387 | Kostas Papadimitriou | web_apps |
344 | 25762387 | Kostas Papadimitriou | ```````` |
345 | 25762387 | Kostas Papadimitriou | Extends INSTALLED_APPS django project setting. |
346 | 25762387 | Kostas Papadimitriou | |
347 | 25762387 | Kostas Papadimitriou | Example:: |
348 | 25762387 | Kostas Papadimitriou | |
349 | 25762387 | Kostas Papadimitriou | # myapp/synnefo_settings.py |
350 | 25762387 | Kostas Papadimitriou | # synnefo_settings and variable name is arbitary |
351 | 25762387 | Kostas Papadimitriou | my_app_web_apps = ['myapp', 'south', 'django.contrib.sessions'] |
352 | 25762387 | Kostas Papadimitriou | |
353 | 25762387 | Kostas Papadimitriou | # another more complex configuration where we need our app to be placed |
354 | 25762387 | Kostas Papadimitriou | # before django.contrib.admin app because it overrides some of the admin |
355 | 25762387 | Kostas Papadimitriou | # templates used by admin app views |
356 | 25762387 | Kostas Papadimitriou | my_app_web_apps = [{'before':'django.contrib.admin', 'insert':'myapp'}, 'south'] |
357 | 25762387 | Kostas Papadimitriou | |
358 | 25762387 | Kostas Papadimitriou | # setup.py |
359 | 25762387 | Kostas Papadimitriou | entry_points = { |
360 | 25762387 | Kostas Papadimitriou | 'synnefo': ['web_apps = myapp.synnefo_settings:my_app_web_apps'] |
361 | 25762387 | Kostas Papadimitriou | } |
362 | 25762387 | Kostas Papadimitriou | |
363 | 25762387 | Kostas Papadimitriou | |
364 | 25762387 | Kostas Papadimitriou | web_middleware |
365 | 25762387 | Kostas Papadimitriou | `````````````` |
366 | 25762387 | Kostas Papadimitriou | Extends MIDDLEWARE_CLASSES django setting. |
367 | 25762387 | Kostas Papadimitriou | |
368 | 25762387 | Kostas Papadimitriou | |
369 | 25762387 | Kostas Papadimitriou | web_static |
370 | 25762387 | Kostas Papadimitriou | `````````` |
371 | 25762387 | Kostas Papadimitriou | Extends STATIC_FILES setting (see `static_files`_). |
372 | 25762387 | Kostas Papadimitriou | |
373 | 25762387 | Kostas Papadimitriou | |
374 | 25762387 | Kostas Papadimitriou | web_context_processors |
375 | 25762387 | Kostas Papadimitriou | `````````````````````` |
376 | 25762387 | Kostas Papadimitriou | Extends TEMPLATE_CONTEXT_PROCESSORS django setting. |
377 | 25762387 | Kostas Papadimitriou | |
378 | 25762387 | Kostas Papadimitriou | |
379 | 25762387 | Kostas Papadimitriou | loggers |
380 | 25762387 | Kostas Papadimitriou | ``````` |
381 | 25762387 | Kostas Papadimitriou | Extends `snf-common`_ LOGGING_SETUP['loggers'] setting. |
382 | 25762387 | Kostas Papadimitriou | |
383 | 25762387 | Kostas Papadimitriou | |
384 | 25762387 | Kostas Papadimitriou | urls |
385 | 25762387 | Kostas Papadimitriou | ```` |
386 | 25762387 | Kostas Papadimitriou | Extends django project urls. Accepts a urlpatterns variable. The urls defined |
387 | 25762387 | Kostas Papadimitriou | in this variable will be used to extend the django project urls. |
388 | e609b1ba | Vangelis Koukis | |
389 | e17a08fe | Kostas Papadimitriou | |
390 | e17a08fe | Kostas Papadimitriou | .. include:: ../Changelog |