Crème[ok]_apache2_WSGI_Erreur 500 [résolu] - Karon_Shell - 19-03-2013
L'objet de mon message : Problème pour servir crème avec Apache2
Bonjour,
Je ne réussi pas à servir crème avec Apache2 et le module WSGI.
Le serveur de dev de django me prouve que crème est bien installé, mais pas moyen de le faire servir par Apache.
Ci dessous mes fichiers :
- local_settings.py sous /creme_crm-1.2/creme/
Code : (creme)creme@************$:~/creme_crm-1.2/creme$ more local_settings.py
from os.path import dirname, join, abspath
CREME_ROOT = dirname(abspath(__file__))
DEBUG = True
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bdcremecrm',
'USER': 'cremeuser',
'PASSWORD': 'cremepasswd',
'HOST': '',
'PORT': '',
'OPTIONS': {'init_command': 'SET storage_engine=INNODB' },
}
}
MEDIA_URL = 'http://127.0.0.1/site_media/'
- Apache 2 : Ci dessous mon virtualhost :
J'ai conservé mon fichier d'origine pour les logs. Un probleme ?
Nous avons un user dédié pour apache qui est wwwroot. J'ai donc rajouté wwwroot dans le groupe creme, afin que le data user ai les droits de lectures et écritures necessaires en modifiant /etc/group
Rien de plus à signaler pour moi ici. Et vous ?
Code : <VirtualHost *>
DocumentRoot /home/creme/creme_crm-1.2
ServerName MyServerName************* # grisé pour les besoins du topic
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/creme/creme_crm-1.2>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error-karon.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
# Custom log pour karon classique
CustomLog /var/log/apache2/access-karon.log combined
# Custom log pour creme
# CustomeLog ${APACHE_LOG_DIR}/acces.log combined
# ci dessous les infos specifiques pour wsgi creme
WSGIScriptAlias / /home/creme/creme_crm-1.2/creme/django.wsgi
<Directory /home/creme/creme_crm-1.2>
Order deny,allow
Allow from all
</Directory>
# Fin de infos pour wsgi creme
#ci dessous : alias pour creme
Alias /site_media/ /home/creme/creme_crm/creme/media
Alias /static_media/ /home/creme/creme_crm/creme/media/static
#fin alias pour creme
</VirtualHost>
- Mon django.wsgi :
Code : import os
import sys
import site
from os.path import dirname, join, abspath
osys = sys.path
new_sys = [ '/home/creme/Envs/creme/lib/python2.7/site-packages/', ]
new_sys.extend (sys.path)
sys.path = new_sys
site.addsitedir('/home/creme/Envs/creme/lib/python2.7/site-packages')
site.addsitedir('/home/creme/creme_crm-1.2')
from os.path import dirname, join, abspath
CREME_ROOT = dirname(abspath(__file__))
sys.path.append(CREME_ROOT)
os.environ['DJANGO_SETTINGS_MODULE'] = 'creme.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
- Le fichier urls.py :
Code : # -*- coding: utf-8 -*-
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()
import creme_core
creme_core.autodiscover()
handler500 = 'creme_core.views.exceptions.server_error'
urlpatterns = patterns('',
url(r'^creme_login/$', 'django.contrib.auth.views.login', {'template_name': 'authent/c
reme_login.html'} , name="creme_login"),
url(r'^creme_logout/$', 'django.contrib.auth.views.logout_then_login' , name="creme_log
out"),
(r'^', include('creme_core.urls')),
#(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.
MEDIA_ROOT}),
#NB: in production, configure your web server to statically serve the files in the 'med
ia/static/' dir (and so comment the following line)
#(r'^static_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': setting
s.GENERATED_MEDIA_DIR}),
(r'^creme_config/', include('creme_config.urls')),
(r'^media_managers/', include('media_managers.urls')),
(r'^documents/', include('documents.urls')),
(r'^assistants/', include('assistants.urls')),
(r'^activities/', include('activities.urls')),
(r'^persons/', include('persons.urls')),
(r'^graphs/', include('graphs.urls')),
(r'^reports/', include('reports.urls')),
(r'^products/', include('products.urls')),
(r'^recurrents/', include('recurrents.urls')),
(r'^billing/', include('billing.urls')),
(r'^opportunities/', include('opportunities.urls')),
(r'^commercial/', include('commercial.urls')),
(r'^events/', include('events.urls')),
(r'^crudity/', include('crudity.urls')),
(r'^emails/', include('emails.urls')),
(r'^sms/', include('sms.urls')),
(r'^projects/', include('projects.urls')),
(r'^tickets/', include('tickets.urls')),
(r'^activesync/', include('activesync.urls')),
(r'^cti/', include('cti.urls')),
(r'^vcfs/', include('vcfs.urls')),
(r'^admin/(.*)', include(admin.site.urls)),
)
- Pour finir, les infos résultant de l'option DEBUG=True dans local_settings.py :
Code : Environment:
Request Method: GET
Request URL: http://karon.territoireweb.com/creme_login/?next=/
Django Version: 1.3.7
Python Version: 2.7.3
Installed Applications:
['django.contrib.contenttypes',
'django.contrib.auth',
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.admindocs',
'mediagenerator',
'south',
'creme_core',
'creme_config',
'media_managers',
'documents',
'assistants',
'activities',
'persons',
'graphs',
'reports',
'products',
'recurrents',
'billing',
'opportunities',
'commercial',
'events',
'crudity',
'emails',
'projects',
'tickets',
'activesync',
'vcfs']
Installed Middleware:
('mediagenerator.middleware.MediaMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'creme_core.middleware.global_info.GlobalInfoMiddleware',
'creme_core.middleware.exceptions.Beautiful403Middleware')
Traceback:
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
89. response = middleware_method(request)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/middleware/locale.py" in process_request
16. language = translation.get_language_from_request(request)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/utils/translation/__init__.py" in get_language_from_request
124. return _trans.get_language_from_request(request)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/utils/translation/trans_real.py" in get_language_from_request
372. lang_code = request.session.get('django_language', None)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py" in get
64. return self._session.get(key, default)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py" in _get_session
195. self._session_cache = self.load()
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py" in load
20. expire_date__gt=datetime.datetime.now()
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/db/models/manager.py" in get
132. return self.get_query_set().get(*args, **kwargs)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/db/models/query.py" in get
344. num = len(clone)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/db/models/query.py" in __len__
82. self._result_cache = list(self.iterator())
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/db/models/query.py" in iterator
273. for row in compiler.results_iter():
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in results_iter
680. for rows in self.execute_sql(MULTI):
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
735. cursor.execute(sql, params)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/db/backends/util.py" in execute
34. return self.cursor.execute(sql, params)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/django/db/backends/mysql/base.py" in execute
86. return self.cursor.execute(query, args)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/MySQLdb/cursors.py" in execute
174. self.errorhandler(self, exc, value)
File "/home/creme/Envs/creme/lib/python2.7/site-packages/MySQLdb/connections.py" in defaulterrorhandler
36. raise errorclass, errorvalue
Exception Type: InvalidOperation at /creme_login/
Exception Value: Invalid literal for Decimal: '2013-04-02 10:50:49'
J'ai entendu (lu) que ca pouvait venir soit d'un conflit avec le module php5, ou alors du module wsgi que je devrai compiler depuis les sources plutot que de passer par le paquet apt.... mouais
Ben je continu les tests.
Antoine
Re: Crème[ok]_apache2_WSGI_Erreur 500[résolu]_Pas de media[N - Karon_Shell - 21-03-2013
Re,
Bon, je n'ai plus l'erreur 500.
Je n'ai pas touché au module wsgi. j'ai juste a2dismod le php5 histoire de cloisonner les pistes.
j'accède bien à Crème, mais pas de média_static...
Je continu mes test
Re: Crème[ok]_apache2_WSGI_Erreur 500 [RESOLU] - Karon_Shell - 21-03-2013
Bien !
5 minutes de plus et tout fonctionne parfaitement.
(j'ai pas encore tester l'upload...A voir)
Pour ceux qui n'y connaissent rien avec les virtualhosts de apache (comme moi)
En mode serveur distant, je conseille de tester le crème avec le serveur django en lui passant la commande d'écouter sur toutes les ip publiques, juste histoire de lever les doutes sur des éventuelles erreurs d'install de creme.
Pour ma part, je ne pense pas que creme fut mal installé, ne serai-ce qu'une seule fois. J'ai juste mis longtemps (et c'est peu dire) à m'en rendre compte.
donc un petit python runserver 0.0.0.0:8000 et on peut se connecter direct sur l'ip du serveur.
-Prenez vraiment le temps de relire votre conf apache :
N'oubliez pas les "/" à la fin des chemins des Alias.
Au final la lecture du error.log de apache m'a donné la solution au problème.
-La gestion des droits est un domaine majeur pour que creme fonctionne avec Apache.
un petit $ sudo adduser wwwdata creme est indispensable, ainsi qu'un $ sudo chmod -R ug+rwx sur la racine de crème. m'a permis de résoudre mon soucis de droit
Voilà, au final, c'étais pas grand chose ^^
Je suis un noob en niveau unix finalement, et là j'ai appris et révisé plein de chose.
C'est parti pour l'utilisation.
Re: Crème[ok]_apache2_WSGI_Erreur 500 [RESOLU] - jmarmand - 23-03-2013
Bonjour,
Merci de l’intérêt porté à Crème et du temps que vous avez pris pour indiquer que votre problème était résolu (et comment vous l'avez résolu).
Concernant tout ce qui est tutoriel Virtualhost/Apache et autre, je vais tenter de prendre le temps, le plus rapidement possible, de bien formaliser cela sur le forum pour que cela soit plus simple pour les futurs utilisateurs.
Encore merci de vos retours (et je suis très heureux que Crème soit un logiciel qui vous convienne).
|