Django deployement Apache

85 views
Skip to first unread message

sarfaraz ahmed

unread,
Aug 26, 2017, 10:32:47 AM8/26/17
to Django users
Hello Friends,

Please help me with this.

I am new to linux and I am attempting to deploy my trial app on AWS ubuntu server.

my vhost file looks like this
<VirtualHost *:80>
        WSGIScriptAlias / /var/www/firstweb/firstweb/wsgi.py

        WSGIPythonPath /var/www/firstweb
        ServerName firstweb.com

        ServerAlias www.firstweb.com
                <Directory /var/www/django_project/firstweb>
                <Files wsgi.py>
                        Require all granted
                </Files>
                </Directory>
</VirtualHost>

now when I add WSGIPythonPath.. my apache fails to restart.

If I remove that that I get following error when I try to access this from my computer.
ImportError: No module named django.core.wsgi

Now, I searched on the web and found following link
https://www.webforefront.com/django/setupapachewebserverwsgi.html
 
which has some solution which I am not able to understand so far.

after wasting my time in attempting to deploy on windows server. everyone suggested me to deploy on linux.

I M NOT USING virualenv.

Thanks in advance.

Regards,
Sarfaraz Ahmed




sarfaraz ahmed

unread,
Aug 26, 2017, 2:30:15 PM8/26/17
to Django users

i have made following changes in my vhost conf file and now services run. Also, I don't see any error. But instead of default django page I get default apache page.

Here is my new conf file.
-----------------------------------------------------------------
<VirtualHost *:80>
        ServerName firstweb.com
        ServerAlias www.firstweb.com
                <Directory /var/www/firstweb>

                <Files wsgi.py>
                        Require all granted
                </Files>
                </Directory>

</VirtualHost>

------------------------------------------------------------------------------------------------------------------

I checked for error. I don't see any error.

Please help

sarfaraz ahmed

unread,
Aug 26, 2017, 4:31:34 PM8/26/17
to Django users
Hey Team,

Please someone help.
I am still getting error ImportError: No module named django.core.wsgi

mentioned below is my latest vhost file in ubuntu.

<VirtualHost *:80>
        WSGIScriptAlias / /var/www/firstweb/firstweb/wsgi.py
        ServerName firstweb.com

        ServerAlias www.firstweb.com
                <Directory /var/www/firstweb/firstweb/>

                <Files wsgi.py>
                        Require all granted
                </Files>
                </Directory>
        CustomLog /var/log/apache2/firstweb-access.log combined
        ErrorLog /var/log/apache2/firstweb-error.log
</VirtualHost>

Earlier I missed WSGIScriptAlias argument.

Regards,
Sarfaraz Ahmed




On Saturday, 26 August 2017 20:02:47 UTC+5:30, sarfaraz ahmed wrote:

Vernon Swanepoel

unread,
Aug 27, 2017, 1:27:12 AM8/27/17
to Django users
Hello Sarfaraz,

A couple things you could look at:
  1. Are you including both your site-packages (eg python3.6/lib/site-packages) and your django project root (where you actually built the project) in your WSGIPythonPath?  String them together with a clone (/path/to/python3.6/lib/site-packages:/path/to/django/project/myproject)
  2. Your wsgi is within your django app (/path/to/django/project/myproject/myproject/wsgi...).  It sits in the same file as your settings.py.  Make sure it's pointing to the right place, because in your examples above your directory for django and your directory for the wsgi don't match.
  3. Have you set execute permissions all the way down the django app (using chmod +x /all/the/way/up/the/django/project/to/wsgi.py)
Deploying the first time is a frustrating process, and it's hard to get specific help because nobody knows exactly what you've got running, but if you stick with it, you'll get it working.

Regards,
Vernon

sarfaraz ahmed

unread,
Aug 27, 2017, 11:17:20 PM8/27/17
to Django users
Thanks for your help. Yes it was permission issue. However I am not able to find anything under my site-packages. when I point the same to dist-packages it works.

WSGIPythonHome /usr/local/lib/python2.7/dist-packages
WSGIPythonPath /var/www/firsttest

<VirtualHost *:80>
        ServerName firsttest.com
        ServerAlias www.firsttest.com
        ServerAdmin webmaster@localhost

        WSGIScriptAlias / /var/www/firsttest/firsttest/wsgi.py

        ErrorLog   /var/log/apache2/firsttest/first_error.log
        CustomLog   /var/log/apache2/firsttest/first_access.log combined
        Alias /static/admin/ /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/
        Alias /static/ /var/www/firsttest/static
        <Directory /var/www/firsttest/firsttest>

        <Files wsgi.py>
                Require all granted
        </Files>
        </Directory>
</VirtualHost>
---------------------------------------------------------------------------------------------


This is my new conf file and it works. However I am still not able to see my static files in admin. Any help would be appreciated.


Regards
Sarfaraz

Vernon Swanepoel

unread,
Aug 29, 2017, 12:48:57 AM8/29/17
to Django users
You can just copy the static files out of Django and into the static files in your project itself.

Daniel Roseman

unread,
Aug 29, 2017, 6:24:20 PM8/29/17
to Django users
On Tuesday, 29 August 2017 05:48:57 UTC+1, Vernon Swanepoel wrote:
You can just copy the static files out of Django and into the static files in your project itself.

No. You should absolutely not do that. That is what the `collectstatic` command is for.
--
DR. 

Antonis Christofides

unread,
Aug 30, 2017, 4:14:35 AM8/30/17
to django...@googlegroups.com, sarfaraz ahmed

Hello Sarfaraz,

You could try "How Django static files work in production" to get some understanding of the correct way to do it.

Regards,

Antonis

Antonis Christofides
http://djangodeployment.com
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/17bd4194-0ad2-495d-9281-e23383c28fa2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

sarfaraz ahmed

unread,
Aug 30, 2017, 2:58:46 PM8/30/17
to Django users, findsa...@gmail.com
Thanks Antonis,

I reached your website googling undoubtedly this is well explained. I have been able to deploy but here is my problem

STATIC_URL = '/static/'
MEDIA_URL = '/media/'


STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),os.path.join(BASE_DIR,"static","admin")]
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR),'static_root')
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR),'media_root')

This is my settings in settingss.py

Here is my vhost.conf files


WSGIPythonHome /usr/local/lib/python2.7/dist-packages


WSGIPythonPath /var/www/firsttest

<VirtualHost *:80>
        ServerName firsttest.com
        ServerAlias www.firsttest.com
        ServerAdmin webmaster@localhost

        WSGIScriptAlias / /var/www/firsttest/firsttest/wsgi.py

        ErrorLog   /var/log/apache2/firsttest/first_error.log
        CustomLog   /var/log/apache2/firsttest/first_access.log combined
        Alias /static/admin /var/www/firsttest/static/admin
        <Directory  /var/www/firsttest/static/admin>
                Require all granted
        </Directory>

        Alias /static  /var/www/firsttest/static
        <Directory /var/www/firsttest/static>
                Require all granted
        </Directory>


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

Now with this conf file everything works fine. CSS, js all works fine. However, you notice the conf file marked in red. its not actually pointing to my static_root folder which in settings defined as
/var/www/static_root

static root is one which gathers all my static files when I run collect static

if I understand correctly from documentation. Web server should point to static root folder to access css files in production.

Regards,
Sarfaraz Ahmed

Antonis Christofides

unread,
Aug 31, 2017, 5:17:05 AM8/31/17
to django...@googlegroups.com

Did you run collectstatic? After you do so, the files will be copied to /var/www/static_root or whatever your STATIC_ROOT points to.

Some other notes:

  • You normally don't need to touch STATICFILES_DIRS at all.
  • The value os.path.join(os.path.dirname(BASE_DIR), 'static_root') is a bad idea for production. On development it may be OK, but in production you'd better specify the full path, such as '/var/www/static_root'.
  • You don't need to specify both "Alias /static/admin" and "Alias /static". Just the second one will do. "Alias /static /var/www/static_root" and that's it.

Regards,

Antonis

Antonis Christofides
http://djangodeployment.com

sarfaraz ahmed

unread,
Oct 19, 2017, 10:53:45 AM10/19/17
to Django users
Thanks you all you friends.. this is been fixed.
Reply all
Reply to author
Forward
0 new messages