rfrankel's profile - activity

9 years ago received badge Notable Question (source)
9 years ago received badge Popular Question (source)
12 years ago received badge Nice Answer ( source )
12 years ago received badge Self-Learner ( source )
12 years ago received badge Nice Question (source)
12 years ago received badge Famous Question (source)
13 years ago received badge Famous Question (source)
13 years ago received badge Nice Question (source)
13 years ago received badge Notable Question (source)
13 years ago received badge Taxonomist
14 years ago received badge Popular Question (source)
14 years ago received badge Teacher ( source )
14 years ago received badge Student (source)
14 years ago received badge Supporter
14 years ago received badge Scholar ( source )
14 years ago received badge Editor (source)
14 years ago answered a question Serving from a subdirectory

I got this working by using nginx as a front-end proxy. Here's my nginx config:

upstream askbot {
        server  localhost:9000;
}

upstream wiki {
        server  localhost:9001;
}

server {
        listen 80;
        server_name xxxxx.members.linode.com;

        proxy_redirect  off;
        proxy_set_header        Host    $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        location ~ ^/ask {
                access_log      /var/log/nginx/askbot_log;
                root /opt/webapps/ask/;
                proxy_pass  http://askbot;
        }


        location / {
                access_log      /var/log/nginx/wiki_log;
                root /opt/webapps/wiki/;
                rewrite ^/wiki/(.*) /$1;
                proxy_pass  http://wiki;
        }
}

The other thing I had to do was update urls.py:

urlpatterns = patterns('',
    (r'%s' % settings.ASKBOT_URL, include('askbot.urls')),
    (r'^ask/admin/', include(admin.site.urls)),
    #(r'^cache/', include('keyedcache.urls')), - broken views disable for now
    (r'^ask/settings/', include('askbot.deps.livesettings.urls')),
    (r'^ask/robots.txt$', include('robots.urls')),
)

And, as you suggested, I removed the ASKBOT_MEDIA_URL setting.

For completeness, here's my apache config:

<VirtualHost localhost:9000>
     ServerAdmin xxxxxxxxx
     DocumentRoot /opt/webapps/ask/
     ServerName xxxxxxxx

     #aliases to serve static media directly
     #will probably need adjustment
     Alias /ask/m/ /usr/local/lib/python2.6/dist-packages/askbot-0.6.11-py2.6.egg/askbot/skins/
     Alias /ask/upfiles/ /opt/webapps/ask/askbot/upfiles/
     Alias /ask/admin/media/ /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/

     <DirectoryMatch "/opt/webapps/ask/askbot/skins/([^/]+)/media">
        Order deny,allow
        Allow from all
     </DirectoryMatch>
     <Directory "/opt/webapps/ask/askbot/upfiles">
        Order deny,allow
        Allow from all
     </Directory>

     #must be a distinct name within your apache configuration
     WSGIDaemonProcess askbot2
     WSGIProcessGroup askbot2
     WSGIScriptAlias / /opt/webapps/ask/django.wsgi
     #make all admin stuff except media go through secure connection
     #<LocationMatch "/admin(?!/media)">
     #    RewriteEngine on
     #    RewriteRule /admin(.*)$ https://example.com/admin$1 [L,R=301]
     #</LocationMatch>
     CustomLog /var/log/apache2/askbot/access_log common
     ErrorLog /var/log/apache2/askbot/error_log
     LogLevel debug

</VirtualHost>

Thanks again for the support. :)

14 years ago commented question Serving from a subdirectory
I was using WikkaWiki, though I may switch to MediaWiki.
14 years ago commented question Serving from a subdirectory
No rush. :) Like I said, if I change ASKBOT_URL and make the WSGIScriptAlias for / then all other directories, e.g. /wiki/, get handled by Django. I'm trying to avoid that. The complicated solution is nginx as a reverse proxy...if you can't think of another solution, I'll try that. Thanks!
14 years ago commented question Serving from a subdirectory
I should clarify that logging in and out does work, people just get taken to the wrong URL once they've done it.
14 years ago commented answer Can't moderate more than 16 bits of karma?
Got it - I'll make sure to put (potential) bugs there and restrict this to things like installation and documentation issues. Thanks again for the help.
14 years ago marked best answer Can't moderate more than 16 bits of karma?

Repute model uses SmallInteger field which in MySQL is in range –32768 to 32767. The user reputation is UnsignedInteger with a much larger range and apparently there is no check on the limits in the code, I've saved this issue in the bug tracker. Thanks.

edit: btw bug tracker is at http://bugs.askbot.org

14 years ago asked a question Serving from a subdirectory

Okay, I'm making a lot of progress. I want to serve Askbot from mysite.com/ask/, and furthermore, I don't want mysite.com/ being handled by WSGI/Django. As far as I can tell, that means I need to have e.g. WSGIScriptAlias /ask ..., as opposed to WSGIScriptAlias / .... Specifically, when I had ASKBOT_URL = 'ask/' and WSGIScriptAlias / ..., mysite.com/wiki/ was getting handled by Django.

I pretty much have it working how I want, after doing the following:

  • Leave ASKBOT_URL as ''
  • In settings.py, set ASKBOT_MEDIA_URL = 'ask/'
  • In askbot/skins/utils.py, in get_media_url, have it use ASKBOT_MEDIA_URL instead of ASKBOT_URL
  • In the apache config, change the aliases given from e.g. /upfiles/ to /ask/upfiles/

Everything seems to work, except that logging in and logging out takes people to /, not /ask/.

The question: What's the right way to fix this? Am I going about the subdirectory thing all wrong?

Here's the relevant part of my apache config:

#replace with 127.0.0.1 with real IP address
<VirtualHost 123.345.567.789:80>
     ServerAdmin admin@mysite.com
     DocumentURL /opt/webapps/
     ServerName mysite.com

     #aliases to serve static media directly
     #will probably need adjustment
     Alias /ask/m/ /usr/local/lib/python2.6/dist-packages/askbot-0.6.11-py2.6.egg/askbot/skins/
     Alias /ask/upfiles/ /opt/webapps/ask/askbot/upfiles/
     Alias /ask/admin/media/ /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/


     <DirectoryMatch "/opt/webapps/ask/askbot/skins/([^/]+)/media">
        Order deny,allow
        Allow from all
     </DirectoryMatch>
     <Directory "/opt/webapps/ask/askbot/upfiles">
        Order deny,allow
        Allow from all
     </Directory>

     #must be a distinct name within your apache configuration
     WSGIDaemonProcess askbot2
     WSGIProcessGroup askbot2
     WSGIScriptAlias /ask /opt/webapps/ask/django.wsgi
     #make all admin stuff except media go through secure connection
     #<LocationMatch "/admin(?!/media)">
     #    RewriteEngine on
     #    RewriteRule /admin(.*)$ https://example.com/admin$1 [L,R=301]
     #</LocationMatch>
     CustomLog /var/log/apache2/askbot/access_log common
     ErrorLog /var/log/apache2/askbot/error_log
     LogLevel debug

</VirtualHost>
14 years ago asked a question Can't moderate more than 16 bits of karma?

I tried giving myself a million karma and got a warning - adding the actual karma worked, but the moderation record complained; the repute object got stored with 32767 for positive and 1000001 for karma.

Does this mean the model field should be changed (assuming you agree this is a bug)?

14 years ago commented answer New install, exception when registering
Thanks, updating settings.py fixed the problem!
14 years ago marked best answer New install, exception when registering

I'm guessing that your django_authopenid has not been migrated - my fault - have not updated the instructions.

Try (in addition):

python manage.py migrate django_authopenid

edit: this solves the problem, please make AUTHENTICATION_BACKENDS in settings.py look this way:

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'askbot.deps.django_authopenid.backends.AuthBackend',
)

I forgot to update that in the settings.py template. You get 50 rep bonus for reporting this annoying issue :).

14 years ago commented answer New install, exception when registering
Don't mind at all - thanks for your time!
14 years ago commented answer New install, exception when registering
I don't understand the difference between your answer and your comment, but I had already done `python manage.py migrate django_authopenid` before having the problem. I just ran it again, to make sure, and yep - didn't help.
14 years ago asked a question New install, exception when registering

I deployed the site, it shows up as expected on a development server (i.e. manage.py runserver), but when I try to register with Google or Yahoo! I get the following traceback. I do have python-openid installed, I did not create a Django superuser on the first syncdb, I ran the necessary South migrations, and (I believe) I followed all the other instructions.

Environment:

Request Method: POST
Request URL: http://li234-101.members.linode.com/account/register/
Django Version: 1.1.2
Python Version: 2.6.5
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.admin',
 'django.contrib.humanize',
 'django.contrib.sitemaps',
 'askbot',
 'askbot.deps.django_authopenid',
 'south',
 'askbot.deps.livesettings',
 'keyedcache',
 'robots']
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'askbot.middleware.anon_user.ConnectToSessionMessagesMiddleware',
 'askbot.middleware.pagesize.QuestionsPageSizeMiddleware',
 'askbot.middleware.cancel.CancelActionMiddleware',
 'askbot.deps.recaptcha_django.middleware.ReCaptchaMiddleware',
 'django.middleware.transaction.TransactionMiddleware',
 'askbot.middleware.view_log.ViewLogMiddleware',
 'askbot.middleware.spaceless.SpacelessMiddleware')


Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
  99.                     response = callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.6/dist-packages/askbot-0.6.11-py2.6.egg/askbot/deps/django_authopenid/views.py" in decorated
  218.         return func(request, *args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/askbot-0.6.11-py2.6.egg/askbot/deps/django_authopenid/views.py" in register
  772.                 raise Exception('this does not make any sense')

Exception Type: Exception at /account/register/
Exception Value: this does not make any sense