Hi Graham, thank-you for your reply. 1) wsgi.load cat /etc/apache2/mods-available/wsgi.load LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
rajeev@cubi-ubuntu:~$ ldd /usr/lib/apache2/modules/mod_wsgi.so linux-vdso.so.1 => (0x00007fffdf7af000) libpython3.6m.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0 (0x00007f494f3a6000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f494f189000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f494edbf000) libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f494eb96000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f494e97c000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f494e778000) libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f494e575000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f494e26c000) /lib64/ld-linux-x86-64.so.2 (0x00007f494fca7000) 2) wsgi.conf cat /etc/apache2/mods-available/wsgi.conf <IfModule mod_wsgi.c> #WSGIRestrictEmbedded on WSGIPythonHome "/usr" #This config file is provided to give an overview of the directives, #which are only allowed in the 'server config' context. #For a detailed description of all avaiable directives please read #http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives #WSGISocketPrefix: Configure directory to use for daemon sockets. # #Apache's DEFAULT_REL_RUNTIMEDIR should be the proper place for WSGI's #Socket. In case you want to mess with the permissions of the directory, #you need to define WSGISocketPrefix to an alternative directory. #See http://code.google.com/p/modwsgi/wiki/ConfigurationIssues for more #information #WSGISocketPrefix /var/run/apache2/wsgi #WSGIPythonOptimize: Enables basic Python optimisation features. # #Sets the level of Python compiler optimisations. The default is '0' #which means no optimisations are applied. #Setting the optimisation level to '1' or above will have the effect #of enabling basic Python optimisations and changes the filename #extension for compiled (bytecode) files from .pyc to .pyo. #When the optimisation level is set to '2', doc strings will not be #generated and retained. This will result in a smaller memory footprint, #but may cause some Python packages which interrogate doc strings in some #way to fail. #WSGIPythonOptimize 0 #WSGIPythonPath: Additional directories to search for Python modules, # overriding the PYTHONPATH environment variable. # #Used to specify additional directories to search for Python modules. #If multiple directories are specified they should be separated by a ':'. #WSGIPythonPath directory|directory-1:directory-2:... #WSGIPythonEggs: Directory to use for Python eggs cache. # #Used to specify the directory to be used as the Python eggs cache #directory for all sub interpreters created within embedded mode. #This directive achieves the same affect as having set the #PYTHON_EGG_CACHE environment variable. #Note that the directory specified must exist and be writable by the user #that the Apache child processes run as. The directive only applies to #mod_wsgi embedded mode. To set the Python eggs cache directory for #mod_wsgi daemon processes, use the 'python-eggs' option to the #WSGIDaemonProcess directive instead. #WSGIPythonEggs directory #WSGIRestrictEmbedded: Enable restrictions on use of embedded mode. # #The WSGIRestrictEmbedded directive determines whether mod_wsgi embedded #mode is enabled or not. If set to 'On' and the restriction on embedded #mode is therefore enabled, any attempt to make a request against a #WSGI application which hasn't been properly configured so as to be #delegated to a daemon mode process will fail with a HTTP internal server #error response. #WSGIRestrictEmbedded On|Off #WSGIRestrictStdin: Enable restrictions on use of STDIN. #WSGIRestrictStdout: Enable restrictions on use of STDOUT. #WSGIRestrictSignal: Enable restrictions on use of signal(). # #Well behaved WSGI applications neither should try to read/write from/to #STDIN/STDOUT, nor should they try to register signal handlers. If your #application needs an exception from this rule, you can disable the #restrictions here. #WSGIRestrictStdin On #WSGIRestrictStdout On #WSGIRestrictSignal On #WSGIAcceptMutex: Specify type of accept mutex used by daemon processes. # #The WSGIAcceptMutex directive sets the method that mod_wsgi will use to #serialize multiple daemon processes in a process group accepting requests #on a socket connection from the Apache child processes. If this directive #is not defined then the same type of mutex mechanism as used by Apache for #the main Apache child processes when accepting connections from a client #will be used. If set the method types are the same as for the Apache #AcceptMutex directive. #WSGIAcceptMutex default #WSGIImportScript: Specify a script file to be loaded on process start. # #The WSGIImportScript directive can be used to specify a script file to be #loaded when a process starts. Options must be provided to indicate the #name of the process group and the application group into which the script #will be loaded. #WSGIImportScript process-group=name application-group=name #WSGILazyInitialization: Enable/disable lazy initialisation of Python. # #The WSGILazyInitialization directives sets whether or not the Python #interpreter is preinitialised within the Apache parent process or whether #lazy initialisation is performed, and the Python interpreter only #initialised in the Apache server processes or mod_wsgi daemon processes #after they have forked from the Apache parent process. #WSGILazyInitialization On|Off </IfModule> 3) FlaskApp.conf cat /etc/apache2/sites-available/FlaskApp.conf <VirtualHost *:83> ServerName flaskapp.com ServerAdmin ad...@flaskapp.com WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi <Directory /var/www/FlaskApp/FlaskApp/> Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> I change change anything you advise and re-run/test…. —Rajeev On Jun 23, 2018, at 3:00 PM, Graham Dumpleton <graham.dumple...@gmail.com> wrote: Would need to see the VirtualHost definition including what is in it. Also, was that VirtualHost in its own file in the sites-available directory and was it enabled so that it is linked into the sites-enabled directory and would be found. Graham > On 24 Jun 2018, at 7:55 am, 'Rajeev Jain' via modwsgi > <modwsgi@googlegroups.com <mailto:modwsgi@googlegroups.com>> wrote: > > background: my system is Ubuntu16.04 LTS running on a home network behind a > firewall. Apache2 server is installed and successfully hosting 3 virtual > hosts using ports 80, 81, 82. These 3 sites are working 100% fine. My > objective is to setup a 4th virtual host using mod_wsgi for serving a > python3.6 based Flask Application. > > After many trials and tribulations the 4th virtual host is now partially > working...the site is successfully served when using the curl command but the > site is not accessible when using a browser. > > Here is the tutorial I used: > https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps > > <https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps> > > > Here are my test results: > > Using curl: > curl http://192.168.1.14:83 <http://192.168.1.14:83/> > Hello, this is running from flasK! > > > Using a browser: > > <PastedGraphic-1.png> > > > > I just rebooted my server and now the 4th virtual host is not even working > with curl. Are there any out who have this desired configuration working? > > I relatively confident the python3.6 and the mod_wsgi modules are correctly > installed and some configuration settings are not correct. > > Any guidance or trouble-shooting steps would be greatly appreciated. I’m > happy to provide any kind of details required to get this working. > > TIA, > —Rajeev > > > > -- > 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 modwsgi+unsubscr...@googlegroups.com > <mailto:modwsgi+unsubscr...@googlegroups.com>. > To post to this group, send email to modwsgi@googlegroups.com > <mailto:modwsgi@googlegroups.com>. > Visit this group at https://groups.google.com/group/modwsgi > <https://groups.google.com/group/modwsgi>. > For more options, visit https://groups.google.com/d/optout > <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 modwsgi+unsubscr...@googlegroups.com <mailto:modwsgi+unsubscr...@googlegroups.com>. To post to this group, send email to modwsgi@googlegroups.com <mailto:modwsgi@googlegroups.com>. Visit this group at https://groups.google.com/group/modwsgi <https://groups.google.com/group/modwsgi>. For more options, visit https://groups.google.com/d/optout <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 modwsgi+unsubscr...@googlegroups.com. To post to this group, send email to modwsgi@googlegroups.com. Visit this group at https://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.