For the following steps, we imagine that our project is located in C:/tools/SupervisionTool and is structured as shown below:
SupervisionTool/
Analyzers/
migrations/
static/
templates/
...
SupervisionTool
settings.py
urls.py, wsgi.py
manage.py
Before going further, be sure that you have the Administrator rights on the machine.
1. Install Python 3.6 and ensure that it is added to PATH
2. Install the last version of WAMP
3. Install VC15 redistributable tools
4. Create an environment variable named
MOD_WSGI_APACHE_ROOTDIR
and set it to apache install directory (c:/<wamp install dir>/bin/apache/apache<version>)5. If you haven't created a virtual environment for your django application, start with
pip install virtualenvwrapper-win mkvirtualenv SupervisionTool <install all the packages necessary for your application (django,pypiwin32,...)>
Then
workon SupervisionTool pip install mod_wsgi mod_wsgi-express module-config
The last command will print the lines that will be necessary to configure Apache. You will see something like:
LoadFile "c:/python36/python36.dll"
LoadModule wsgi_module "c:/users/administrateur/envs/supervisiontool/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
Copy these lines and add them to c:/<wamp install dir>/bin/apache/apache<version>/conf/httpd.conf
6. Open c:/<wamp install dir>/bin/apache/apache<version>/conf/extra/httpd-chosts.conf and replace the content with the following lines:
# virtual SupervisionTool <VirtualHost *:80> ServerName localhost ServerAlias supervisiontool@lni-swissgas.lni.ads ErrorLog "logs/supervisiontool.error.log" CustomLog "logs/supervisiontool.access.log" combined WSGIScriptAlias / "C:/tools/SupervisionTool/SupervisionTool/wsgi.py" <Directory "C:/tools/SupervisionTool/SupervisionTool"> <Files wsgi.py> Require all granted </Files> </Directory> Alias /Analyzers/static "C:/tools/SupervisionTool/static" <Directory "C:/tools/SupervisionTool/static"> Require all granted </Directory> </VirtualHost> # end virtual SupervisionTool
Note: Replace C:/tools/SupervisionTool with your install directory.
7. Run the following command from the project root dir to serve all of the static file (admin included) from a unique directory (defined by STATIC_ROOT):
python manage.py collectstatic
8. Set
ALLOWED_HOSTS
in SupervisionTool/settings.py to ['*']
(or list the IP adresses or symbols that will give access to the app)9. Open SupervisionTool/wsgi.py and replace its content with :
activate_this = 'C:/Users/administrateur/Envs/SupervisionTool/Scripts/activate_this.py'
# execfile(activate_this, dict(__file__=activate_this))
exec(open(activate_this).read(),dict(__file__=activate_this))
import os
import sys
import site
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('C:/Users/administrateur/Envs/SupervisionTool/Lib/site-packages')
# Add the app's directory to the PYTHONPATH
sys.path.append('C:/tools/SupervisionTool')
sys.path.append('C:/tools/SupervisionTool/SupervisionTool')
os.environ['DJANGO_SETTINGS_MODULE'] = 'SupervisionTool.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "SupervisionTool.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
9. Open Services in Windows and fin Apache (here wampapache) and set the start mode to Automatic. Finally, start apache service.
10. Type localhost in your web browser and verify that your app is accessible.
Troubleshooting
- Compilation error with
mod_wsgi-express module-config
: The most probable reason is that you mixed 32/64 bits architectures when installing the tools. Try a cleanup and reinstall. - Apache fails to start in Services : Potentially a syntax error in configuration files. To get more information about this, right click on Wamp tools in tray icon menu, select Tools->Show Apache loaded Modules
- Still not working ? Ensure that you configured PYTHONPATH correctly on host (here, it should be set to C:/tools/SupervisionTool/Analyzers)