First time here? Check out the FAQ!
1

Static files (css, js and images) not served

I checked out askbot code from github using the following command

git clone git://github.com/ASKBOT/askbot-devel.git

And ran the following command

python setup.py develop

I deployed it on my webserver by following the instructions at http://askbot.org/doc/index.html When I visit my website it looks like the following Image.

http://dl.dropbox.com/u/750152/askbot.png

All the css rendering is gone. Am I missing some step ?

kintali's avatar
141
kintali
asked 2012-04-29 14:06:59 -0500
Evgeny's avatar
13.2k
Evgeny
updated 2012-04-29 14:13:13 -0500

Comments

see more comments

3 Answers

1

If you are using Apache, in the settings.py file, modify STATIC_URL with '/static/' and run python manage.py collectstatic.
Then follow http://askbot.org/doc/deployment.html

tristan's avatar
95
tristan
answered 2012-04-29 14:41:24 -0500
Evgeny's avatar
13.2k
Evgeny
updated 2012-04-29 15:00:27 -0500
link

Comments

STATIC_URL should be '/static/' - with the leading and the trailing slash.

Evgeny's avatar Evgeny (2012-04-29 14:49:21 -0500)

Yes that right... oops...

tristan's avatar tristan (2012-04-29 14:55:35 -0500)

I have the following settings : MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles') MEDIA_URL = '/upfiles/' STATIC_URL = '/m/'#this must be different from MEDIA_URL

PROJECT_ROOT = os.path.dirname(__file__) STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')

kintali's avatar kintali (2012-04-29 14:57:13 -0500)

And the virtualhost ?

tristan's avatar tristan (2012-04-29 15:04:26 -0500)

I don't see virtualhost in settings.py

kintali's avatar kintali (2012-04-29 15:16:59 -0500)

virtual host in part of the webserver configuration, not django.

Evgeny's avatar Evgeny (2012-04-29 15:18:29 -0500)

in /etc/apache2/sites-available/

tristan's avatar tristan (2012-04-29 15:26:06 -0500)

I have <VirtualHost *:80>. When I replace * with my actual IP address, I get a warning saying "[warn] NameVirtualHost *:80 has no VirtualHosts". Is this a problem ?

kintali's avatar kintali (2012-04-29 16:03:59 -0500)

in /etc/apache2/apache2.conf, last line, add : NameVirtualHost your_ip:80

tristan's avatar tristan (2012-04-29 16:07:46 -0500)

in /etc/apache2/apache2.conf, last line, add :<br />

tristan's avatar tristan (2012-04-29 16:07:47 -0500)
see more comments
1

The issue you are seeing is that static files are not served with DEBUG=False, so the site appears unstyled.

With runserver, please use DEBUG=True, as in production mode static files are not served by django.

Please run python manage.py collectstatic - to collect the static files for production and configure your webserver to serve the static resources directly.

Evgeny's avatar
13.2k
Evgeny
answered 2012-04-29 14:12:25 -0500, updated 2012-04-29 14:13:45 -0500
link

Comments

I ran python manage.py collectstatic. How do I configure to serve static resources directly ?

kintali's avatar kintali (2012-04-29 14:38:13 -0500)

Is DEBUG setting True or False?

Evgeny's avatar Evgeny (2012-04-29 14:39:34 -0500)

Oh, you need to add Alias settings (or equivalent) to your webserver configuration. For Apache you need something like Alias /static/ /path/to/django-project/static/, where the second path will be specific to your setup.

Evgeny's avatar Evgeny (2012-04-29 14:40:31 -0500)

DEBUG=False. I am using the same configuration file mentioned at http://askbot.org/doc/deployment.html Is there an issue with permissions ? What permissions are needed for django-project and other directories ?

kintali's avatar kintali (2012-04-29 14:54:02 -0500)

With DEBUG=False you have to serve static files yourself - via the webserver. With DEBUG=True django will serve static files. For production it is very inefficient to serve static files via python (django). It could be that files are inaccessible to the webserver process. It could be for example because one of the directories above the static files being inaccessible to the effective user that runs the webserver process.

Evgeny's avatar Evgeny (2012-04-29 15:04:29 -0500)
see more comments
0

Another solution is a symlink: from the public dir, where you may have your .htaccess and askbot.fcgi, run:

ln -s /path/to/static m

Of course, you need to run python manage.py collectstatic too.

ProfGra's avatar
36
ProfGra
answered 2014-07-11 02:46:28 -0500
link

Comments

see more comments