Additional info: the secrets.json file is encoded as follows: $file -i secrets.json secrets.json: text/plain; charset=us-ascii
Regards, Tanuka On Thu, Mar 3, 2016 at 11:36 AM, Tanuka Dutta <[email protected]> wrote: > Thanks for the tip, Graham. > > I debugged the problem further by creating a standalone file that reads > the secrets.json content and I am getting some strange results when I try > to execute it using the python interpreter (2.7.8) in my virtualenv. > > The secrets.json file is located correctly in the filesystem and its > contents are read correctly, but then json.loads() seems to truncate each > of the fields. > > *test_secrets.py* > > SECRETS_FILE = root("secrets.json") > print "Path to secrets file %s" %SECRETS_FILE > > with open(root("secrets.json")) as f: > file_contents = f.read() > print "File contents" > print file_contents > secrets = json.loads(file_contents) > > print "secrets" > print secrets > > > *Contents of secrets.json (with details obfuscated):* > { > "FILENAME": "secrets.json", > "SECRET_KEY": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", > "DATABASES_PASSWORD": "xxxxxxx" > } > > > *The output of test_secrets.py is:* > Path to secrets file > /home/syt_admin/projects/vishwaas/vishwaas_django/secrets.json > File contents > { > "FILENAME": "secrets.json", > "SECRET_KEY": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", > "DATABASES_PASSWORD": "xxxxxx" > } > secrets > {u'D\x00A\x00T\x00A\x00B\x00A\x00S\x00E\x00S\x00': > u'J\x00a\x00J\x00i\x00', u'F\x00I\x00L\x00E\x00': > u's\x00e\x00c\x00r\x00e\x00t\x00', u'S\x00E\x00C\x00R\x00E\x00': > u'%\x000\x00t\x005\x00u\x00v\x00_\x00p\x00r\x00$\x00f\x00v\x004\x00g\x00k\x00p\x000\x00n\x00s\x00q\x00b\x005\x004\x00c\x00&\x00'} > > > As you can see, json.loads(file_contents) seems to be reading only partial > contents of each key - DATABASES, FILE, SECRE, and also partial values for > each. > > What could be going wrong here? I thought the JSON size limit for a key is > 255 characters... > > I also realized that this is the first time I have tried to execute any > "python manage.py xxx" after implementing the secrets.json method of > reading values into my settings file. It is entirely coincidental that I > upgraded mod-wsgi around the same time! > > But why does "sudo ./apachectl start" work fine with the same settings > file? The output that I see in my Apache error_log (printed from my > settings file) has the entire contents of secrets.json correctly: > > [Thu Mar 03 11:28:28 2016] [error] {u'DATABASES_PASSWORD': u'xxxxx', > u'SECRET_KEY': u'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', > u'FILENAME': u'secrets.json'} > > What is the difference? > > I will need to run various python manage.py commands on the Linux server > so I do need to fix this! > > Regards, > Tanuka > > > > > On Wed, Mar 2, 2016 at 3:42 PM, Graham Dumpleton < > [email protected]> wrote: > >> >> On 2 Mar 2016, at 9:04 PM, Tanuka Dutta <[email protected]> wrote: >> >> Hi Graham, >> >> > The log file from Apache would always be in the server root directory >> unless you had used the --log-directory option to indicate a different >> directory that it should be written to >> >> I don't mean the Apache error_log. It is the Django LOGGING feature that >> I'm using and the associated log file used to be written in the Django >> project directory before this. Now it is written inside my server-root. Is >> that expected ? >> >> >> That indicates that when setting Django logging you are likely using a >> relative path and not an absolute path. >> >> In other words, the current working directory is not located where your >> project is. You should use the --working-directory option to specify the >> project directory as current working directory. Ensure the location of the >> log file uses an absolute path calculated relative to your code. >> >> Better still, when running under mod_wsgi-express, don’t use a log file >> for Django logging. Set it up to write to the console. That way it ends up >> in the Apache error log. This is detailed in: >> >> >> http://blog.dscpl.com.au/2015/04/integrating-modwsgi-express-as-django.html >> >> See section 'Logging of Python exceptions’. >> >> > So this suggests your secrets.json file doesn’t contain a SECRET_KEY. >> Is it definitely in there? >> >> Yes, it is :-) I haven't touched the contents of that file. >> >> > Have you tried logging the path for the secrets.json file calculated by >> root("secrets.json”)? Have you logged what the file contents were when >> read? Is the format of the file correct? >> >> I added a print statement inside production.py to display this. The path >> computed by root("secrets.json") is correct. >> However, one clue is that this line is printed twice. What would cause >> the settings file production.py to be loaded twice?? >> >> $python manage.py collectstatic >> >> *Path to secrets file >> /home/syt_admin/projects/vishwaas/vishwaas_django/secrets.json* >> *Path to secrets file >> /home/syt_admin/projects/vishwaas/vishwaas_django/secrets.json* >> >> >> This is due to the odd way that Django loads settings. I actually thought >> they had eliminated the double loading. >> >> If is same issue, you can see an explanation of why it occurs in: >> >> >> http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html >> >> Ignore everything else in that blog post and is quite out of date now. >> >> Traceback (most recent call last): >> File "manage.py", line 10, in <module> >> execute_from_command_line(sys.argv) >> File >> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/core/management/__init__.py", >> line 354, in execute_from_command_line >> utility.execute() >> File >> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/core/management/__init__.py", >> line 346, in execute >> self.fetch_command(subcommand).run_from_argv(self.argv) >> File >> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/core/management/__init__.py", >> line 182, in fetch_command >> settings.INSTALLED_APPS >> File >> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/conf/__init__.py", >> line 48, in __getattr__ >> self._setup(name) >> File >> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/conf/__init__.py", >> line 44, in _setup >> self._wrapped = Settings(settings_module) >> File >> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/conf/__init__.py", >> line 92, in __init__ >> mod = importlib.import_module(self.SETTINGS_MODULE) >> File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in >> import_module >> __import__(name) >> File >> "/home/syt_admin/projects/vishwaas/vishwaas_django/vishwaas_django/settings/production.py", >> line 22, in <module> >> SECRET_KEY = get_secret("SECRET_KEY") >> File >> "/home/syt_admin/projects/vishwaas/vishwaas_django/vishwaas_django/settings/production.py", >> line 20, in get_secret >> raise ImproperlyConfigured(error_msg) >> django.core.exceptions.ImproperlyConfigured: Set the SECRET_KEY >> environment variable >> >> >> I would suggest replicated the code that loads that file and looks up >> entries in a standalone small script and validate that it works as you >> expect. That is, take how you are hosting things and Django out of the >> picture. >> >> Graham >> >> Regards, >> Tanuka >> >> >> On Wed, Mar 2, 2016 at 3:18 PM, Graham Dumpleton < >> [email protected]> wrote: >> >>> >>> On 2 Mar 2016, at 7:56 PM, Tanuka Dutta <[email protected]> wrote: >>> >>> Hi Graham, >>> >>> It has been a few days since I installed your modwsgi update with the >>> knob for —ssl-certificate-chain-file some/path/file.crt. >>> >>> Today, I needed to run "python manage.py collectstatic" and I >>> encountered this error that I hadn't encountered earlier. I get the same >>> error with any python manage.py xxx command. >>> >>> I've looked at similar issues reported on StackOverflow but those >>> answers did not work/apply in my case. >>> >>> (vishwaas_env)[syt_admin@VM1 vishwaas_django]$ python manage.py >>> collectstatic >>> >>> Traceback (most recent call last): >>> File "manage.py", line 12, in <module> >>> execute_from_command_line(sys.argv) >>> File >>> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/core/management/__init__.py", >>> line 354, in execute_from_command_line >>> utility.execute() >>> File >>> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/core/management/__init__.py", >>> line 346, in execute >>> self.fetch_command(subcommand).run_from_argv(self.argv) >>> File >>> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/core/management/__init__.py", >>> line 182, in fetch_command >>> settings.INSTALLED_APPS >>> File >>> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/conf/__init__.py", >>> line 48, in __getattr__ >>> self._setup(name) >>> File >>> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/conf/__init__.py", >>> line 44, in _setup >>> self._wrapped = Settings(settings_module) >>> File >>> "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/django/conf/__init__.py", >>> line 92, in __init__ >>> mod = importlib.import_module(self.SETTINGS_MODULE) >>> File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in >>> import_module >>> __import__(name) >>> File >>> "/home/syt_admin/projects/vishwaas/vishwaas_django/vishwaas_django/settings/production.py", >>> line 19, in <module> >>> SECRET_KEY = get_secret('SECRET_KEY') >>> File >>> "/home/syt_admin/projects/vishwaas/vishwaas_django/vishwaas_django/settings/production.py", >>> line 17, in get_secret >>> raise ImproperlyConfigured(error_msg) >>> django.core.exceptions.ImproperlyConfigured: Set the SECRET_KEY >>> environment variable >>> >>> >>> Note that launching Django using the Apache script generated by modwsgi >>> works fine and I am able launch and connect to the website. >>> *However, I do notice that my Django logging file is now written in the >>> server-root directory instead of in the django project directory as it was >>> earlier. *They are different directories at the same level of nesting. >>> >>> >>> The log file from Apache would always be in the server root directory >>> unless you had used the --log-directory option to indicate a different >>> directory that it should be written to. >>> >>> Here's what I had used to generate the httpd.conf: >>> >>> (vishwaas_env)[syt_admin@VM1 www-https]$ mod_wsgi-express setup-server >>> ../vishwaas_django/vishwaas_django/wsgi.py --user apache --group apache >>> --server-root=/home/syt_admin/projects/vishwaas/www-https --https-port 443 >>> --port 80 --server-name www.xyz.in --ssl-certificate-file >>> startssl-certs/2_www.xyz.in.crt --ssl-certificate-key-file >>> startssl-certs/server.key *--ssl-certificate-chain-file >>> startssl-certs/1_root_bundle.crt* --url-alias >>> /static/home/syt_admin/projects/vishwaas/vishwaas_django/collected_static >>> >>> *wsgi.py has the following contents:* >>> >>> import os, sys >>> sys.path.append('/home/syt_admin/projects/vishwaas/vishwaas_django') >>> os.environ['DJANGO_SETTINGS_MODULE'] = >>> "vishwaas_django.settings.production" >>> >>> >>> *manage.py has the following contents:* >>> >>> import os >>> import sys >>> >>> if __name__ == "__main__": >>> os.environ.setdefault("DJANGO_SETTINGS_MODULE", >>> "vishwaas_django.settings.production") >>> >>> from django.core.management import execute_from_command_line >>> >>> execute_from_command_line(sys.argv) >>> >>> >>> *production.py has the following contents (relevant snippet):* >>> from .base import * >>> >>> import json >>> from django.core.exceptions import ImproperlyConfigured >>> >>> # JSON-based secrets module located at same level as manage.py >>> with open(root("secrets.json")) as f: >>> secrets = json.loads(f.read()) >>> >>> def get_secret(setting, secrets=secrets): >>> """Get the secret variable or return explicit exception.""" >>> try: >>> return secrets[setting] >>> except KeyError: >>> error_msg = "Set the {0} environment variable".format(setting) >>> raise ImproperlyConfigured(error_msg) >>> >>> SECRET_KEY = get_secret('SECRET_KEY') >>> >>> *where root is defined in settings/base.py as:* >>> here = lambda *dirs: join(abspath(dirname(__file__)), *dirs) >>> BASE_DIR = here("..", "..") >>> root = lambda *dirs: join(abspath(BASE_DIR), *dirs) >>> >>> >>> Any idea what could have gone wrong? >>> >>> >>> So this suggests your secrets.json file doesn’t contain a SECRET_KEY. Is >>> it definitely in there? >>> >>> Have you tried logging the path for the secrets.json file calculated by >>> root("secrets.json”)? Have you logged what the file contents were when >>> read? Is the format of the file correct? >>> >>> Graham >>> >>> Regards, >>> Tanuka >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> On Mon, Feb 22, 2016 at 4:27 PM, Graham Dumpleton < >>> [email protected]> wrote: >>> >>>> >>>> On 22 Feb 2016, at 9:55 PM, Tanuka Dutta <[email protected]> >>>> wrote: >>>> >>>> Hi Graham, >>>> >>>> It works fine! >>>> >>>> The generated http.conf has sections like this that repeat for >>>> different VirtualHosts: >>>> >>>> <VirtualHost _default_:443> >>>> <Location /> >>>> Order deny,allow >>>> Deny from all >>>> <IfDefine MOD_WSGI_ALLOW_LOCALHOST> >>>> Allow from localhost >>>> </IfDefine> >>>> </Location> >>>> SSLEngine On >>>> SSLCertificateFile >>>> /home/syt_admin/projects/vishwaas/www-https/startssl-certs/server.crt >>>> SSLCertificateKeyFile >>>> /home/syt_admin/projects/vishwaas/www-https/startssl-certs/server.key >>>> <IfDefine MOD_WSGI_VERIFY_CLIENT> >>>> SSLCACertificateFile None >>>> SSLVerifyClient none >>>> </IfDefine> >>>> <IfDefine MOD_WSGI_CERTIFICATE_CHAIN> >>>> *SSLCertificateChainFile >>>> /home/syt_admin/projects/vishwaas/www-https/startssl-certs/1_root_bundle.crt* >>>> </IfDefine> >>>> </VirtualHost> >>>> >>>> >>>> I am able to connect to the website using Chrome or IE on my Windows 8 >>>> laptop and also using Chrome on Android 5.1.1 - all browsers show the >>>> secure padlock icon. >>>> >>>> I can also connect to the server using my Android app for the >>>> application. >>>> >>>> Thanks so much! Will this become part of an official release that I can >>>> download later? >>>> >>>> >>>> Yes, it will be in the next release. >>>> >>>> Right now the only change in that develop version I had you install >>>> relative to last released version is this specific change, so there should >>>> be no unexpected issues and should be safe to use for now. >>>> >>>> Graham >>>> >>>> Regards, >>>> Tanuka >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Mon, Feb 22, 2016 at 4:10 PM, Graham Dumpleton < >>>> [email protected]> wrote: >>>> >>>>> Quickly hacked it in while listening in to meeting. :-) >>>>> >>>>> Can you try: >>>>> >>>>> pip install -U >>>>> https://github.com/GrahamDumpleton/mod_wsgi/archive/develop.zip >>>>> >>>>> Then add the extra option: >>>>> >>>>> —ssl-certificate-chain-file some/path/file.crt >>>>> >>>>> Tell me if that works and if does will add change note. Otherwise tell >>>>> me how it fails with further clues for how generated httpd.conf should be >>>>> set up. >>>>> >>>>> Thanks. >>>>> >>>>> Graham >>>>> >>>>> On 22 Feb 2016, at 9:26 PM, Tanuka Dutta <[email protected]> >>>>> wrote: >>>>> >>>>> > Is it replacing the SSLCertificateFile line or adding to it? >>>>> >>>>> Adding to it. >>>>> >>>>> - Tanuka >>>>> >>>>> On Mon, Feb 22, 2016 at 3:43 PM, Graham Dumpleton < >>>>> [email protected]> wrote: >>>>> >>>>>> Is it replacing the SSLCertificateFile line or adding to it? >>>>>> >>>>>> On 22 Feb 2016, at 9:11 PM, Tanuka Dutta <[email protected]> >>>>>> wrote: >>>>>> >>>>>> A follow-on question: >>>>>> >>>>>> I was encountering issues with Chrome browser on Android 5.1.1 trying >>>>>> to connect to my website. The browser was flagging it as not secure. It >>>>>> turned out that my certificate chain was not properly installed on >>>>>> Apache. >>>>>> (My certificate was obtained from https://www.startssl.com/) >>>>>> >>>>>> If I explicitly add this line in the httpd.conf where ever >>>>>> SSLCertificateFile is configured: >>>>>> >>>>>> SSLCertificateChainFile >>>>>> /home/syt_admin/projects/vishwaas/www-https/startssl-certs/1_root_bundle.crt >>>>>> >>>>>> (I am using Apache version 2.2.15) >>>>>> >>>>>> then Android does not flag any issue and the browser shows the secure >>>>>> padlock icon. >>>>>> >>>>>> But how do I provide this option via mod_wsgi-express setup-server ? >>>>>> I didn't see anything under mod_wsgi-express --help. >>>>>> >>>>>> Regards, >>>>>> Tanuka >>>>>> >>>>>> >>>>>> On Mon, Feb 22, 2016 at 9:37 AM, Tanuka Dutta <[email protected] >>>>>> > wrote: >>>>>> >>>>>>> Thanks, Graham! >>>>>>> >>>>>>> Adding the --url-alias option worked perfectly. >>>>>>> >>>>>>> Also, I went over my old notes and realized that I had in fact >>>>>>> executed "python manage.py runmodwsgi --setup-only" after having played >>>>>>> around with the "mod_wsgi-express setup-server" command. So that >>>>>>> explains >>>>>>> the mystery of why it had worked in the past. >>>>>>> >>>>>>> Is there a recommendation of which command to use? >>>>>>> >>>>>>> Thanks for this great piece of infrastructure!! >>>>>>> >>>>>>> Regards, >>>>>>> Tanuka >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Saturday, 20 February 2016 06:11:21 UTC+5:30, Graham Dumpleton >>>>>>> wrote: >>>>>>>> >>>>>>>> >>>>>>>> On 19 Feb 2016, at 9:31 PM, Tanuka Dutta <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>> Hello, >>>>>>>> >>>>>>>> I have a CentOS 6.7 installation on a VM, and am running Django >>>>>>>> 1.8.8 over Apache 2.2.15 using mod_wsgi version 4.4.21 (that I had >>>>>>>> compiled >>>>>>>> from source using Python 2.7.8 in a virtualenv). >>>>>>>> >>>>>>>> I've used mod_wsgi-express to generate the Apache scripts (it's >>>>>>>> extremely helpful!) and it works fine for http. I am able to connect >>>>>>>> to the >>>>>>>> website over http and view all the images on the site. >>>>>>>> >>>>>>>> The commands used were: >>>>>>>> >>>>>>>> (vishwaas_env)[syt_admin@VM1 www]$ mod_wsgi-express setup-server >>>>>>>> /home/syt_admin/projects/vishwaas/vishwaas_django/vishwaas_django/wsgi.py >>>>>>>> --host=0.0.0.0 --port=80 --user apache --group apache >>>>>>>> --server-root=/home/syt_admin/projects/vishwaas/www >>>>>>>> >>>>>>>> (vishwaas_env)[syt_admin@VM1 www]$ sudo ./apachectl start >>>>>>>> >>>>>>>> However, when I try to do the same for https (I followed >>>>>>>> instructions at >>>>>>>> https://gist.github.com/GrahamDumpleton/b79d336569054882679e, but >>>>>>>> left out the client authentication bit). >>>>>>>> >>>>>>>> (vishwaas_env)[syt_admin@VM1 www-https]$ mod_wsgi-express >>>>>>>> setup-server ../vishwaas_django/vishwaas_django/wsgi.py --user apache >>>>>>>> --group apache >>>>>>>> --server-root=/home/syt_admin/projects/vishwaas/www-https >>>>>>>> --https-port 443 --port 80 --https-only --server-name www.xyz.in >>>>>>>> --ssl-certificate-file >>>>>>>> ssl-certs/server.crt --ssl-certificate-key-file ssl-certs/server.key >>>>>>>> >>>>>>>> the http.conf file that is generated does not have the Alias >>>>>>>> 'static' directive. As I result, I can connect to the website but not >>>>>>>> view >>>>>>>> any images. >>>>>>>> >>>>>>>> If I insert the missing lines (copied over from the http.conf >>>>>>>> generated earlier): >>>>>>>> >>>>>>>> Alias '/static' >>>>>>>> '/home/syt_admin/projects/vishwaas/vishwaas_django/collected_static' >>>>>>>> >>>>>>>> <Directory >>>>>>>> '/home/syt_admin/projects/vishwaas/vishwaas_django/collected_static'> >>>>>>>> Order allow,deny >>>>>>>> Allow from all >>>>>>>> </Directory> >>>>>>>> >>>>>>>> then I can see the static files on the website. >>>>>>>> >>>>>>>> Is this a bug in mod_wsgi-express or am I doing something wrong? >>>>>>>> >>>>>>>> >>>>>>>> You would only get a Alias directive for /static if you had used >>>>>>>> the option: >>>>>>>> >>>>>>>> —url-alias >>>>>>>> /static >>>>>>>> /home/syt_admin/projects/vishwaas/vishwaas_django/collected_static >>>>>>>> >>>>>>>> I can’t see that you have used that in what you ran. >>>>>>>> >>>>>>>> The /static Alias would only be generated automatically if you were >>>>>>>> using the Django management command integration so you could run >>>>>>>> ‘python >>>>>>>> manage.py runmodwsgi', which you aren’t. >>>>>>>> >>>>>>>> Graham >>>>>>>> >>>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to a topic in >>>>>>> the Google Groups "modwsgi" group. >>>>>>> To unsubscribe from this topic, visit >>>>>>> https://groups.google.com/d/topic/modwsgi/1Aad8DeGUjo/unsubscribe. >>>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>>> [email protected]. >>>>>>> To post to this group, send email to [email protected]. >>>>>>> Visit this group at https://groups.google.com/group/modwsgi. >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "modwsgi" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> To post to this group, send email to [email protected]. >>>>>> Visit this group at https://groups.google.com/group/modwsgi. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to a topic in >>>>>> the Google Groups "modwsgi" group. >>>>>> To unsubscribe from this topic, visit >>>>>> https://groups.google.com/d/topic/modwsgi/1Aad8DeGUjo/unsubscribe. >>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>> [email protected]. >>>>>> To post to this group, send email to [email protected]. >>>>>> Visit this group at https://groups.google.com/group/modwsgi. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "modwsgi" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To post to this group, send email to [email protected]. >>>>> Visit this group at https://groups.google.com/group/modwsgi. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "modwsgi" group. >>>>> To unsubscribe from this topic, visit >>>>> https://groups.google.com/d/topic/modwsgi/1Aad8DeGUjo/unsubscribe. >>>>> To unsubscribe from this group and all its topics, send an email to >>>>> [email protected]. >>>>> To post to this group, send email to [email protected]. >>>>> Visit this group at https://groups.google.com/group/modwsgi. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "modwsgi" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at https://groups.google.com/group/modwsgi. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>>> >>>> >>>> -- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "modwsgi" group. >>>> To unsubscribe from this topic, visit >>>> https://groups.google.com/d/topic/modwsgi/1Aad8DeGUjo/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at https://groups.google.com/group/modwsgi. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "modwsgi" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at https://groups.google.com/group/modwsgi. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "modwsgi" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/modwsgi/1Aad8DeGUjo/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at https://groups.google.com/group/modwsgi. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "modwsgi" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/modwsgi. >> For more options, visit https://groups.google.com/d/optout. >> >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "modwsgi" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/modwsgi/1Aad8DeGUjo/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/modwsgi. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.
