简体   繁体   中英

Django Deployment for Production

I have Django running on my local machine, but I am at the point to where I want to deploy my Django site to my production server. My server is an Ubuntu 14.04 server, with Apache 2.x, python 2.7, and Django 1.8. I have tried using Django's basic configuration for Apache and mod_wsgi link , but I keep getting the following error:

my site

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Here is the error in the Apache Error Log I am receiving:

mod_wsgi (pid=14962): Target WSGI script '/var/www/tmws/tmws/wsgi.py' cannot be loaded as Python module.,  
mod_wsgi (pid=14962): Exception occurred processing WSGI script '/var/www/tmws/tmws/wsgi.py'.,  
Traceback (most recent call last):,  
File "/var/www/tmws/tmws/wsgi.py", line 21, in <module>,  
  application = get_wsgi_application(),  
File "/usr/local/lib/python2.7/dist-packages/django/core/wsgi.py", line 14, in get_wsgi_application,  
  django.setup(),  
File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 18, in setup,  
  apps.populate(settings.INSTALLED_APPS),  
File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 85, in populate,  
  app_config = AppConfig.create(entry),  
File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 86, in create,  
  module = import_module(entry),  
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module,  
  __import__(name),  
File "/var/www/tmws/django_tables2/__init__.py", line 2, in <module>,  
  from .tables import Table,  
File "/var/www/tmws/django_tables2/tables.py", line 15, in <module>,  
  from . import columns,  
File "/var/www/tmws/django_tables2/columns/__init__.py", line 1, in <module>,  
  from .base import library, BoundColumn, BoundColumns, Column,  
File "/var/www/tmws/django_tables2/columns/base.py", line 10, in <module>,  
  from django_tables2.utils import Accessor, AttributeDict, OrderBy, OrderByTuple,  
File "/var/www/tmws/django_tables2/utils.py", line 111, in <module>,  
  @six.python_2_unicode_compatible,  
AttributeError: 'module' object has no attribute 'python_2_unicode_compatible',  

Here is my apache2.conf file:

...

<Directory /var/www/tmws/tmws>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

...

WSGIScriptAlias / /var/www/tmws/tmws/wsgi.py
WSGIPythonPath /var/www/tmws

This is my wsgi.py file:

import os, sys

from django.core.wsgi import get_wsgi_application

sys.path.append('/home/ubuntu/gather/src')
sys.path.append('/usr/local/lib/python2.7/dist-packages')
sys.path.append('/var/www/tmws')
sys.path.append('/var/www/tmws/tmws')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tmws.settings")

application = get_wsgi_application()

This is my websites .conf file:

<VirtualHost *:80>
    ServerAdmin xxxxxxxx
    ServerName xxxxxxxxxxx
    DocumentRoot /var/www/tmws
    WSGIScriptAlias / /var/www/tmws/tmws/wsgi.py

    ErrorLog ${APACHE_LOG_DIR}/TMWSerror.log
    CustomLog ${APACHE_LOG_DIR}/TMWSaccess.log combined

</VirtualHost>

Any help would be greatly appreciated. If there is anything else I can post to help out let me know.

Your system is probably using an older version of the six python package that doesn't contain the python_2_unicode_compatible method. Upgrading six to the latest version should fix it:

pip install --upgrade six

That said, it is strongly advisable to run Django from a virtual environment instead of installing packages at the system level - if there are system packages that for some reason are dependent on the older version of six then you may run into other problems.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM