Graham, After you stated the expected behavior in this thread, I did spend the time to read through the Apache documentation on RewriteCond and RewriteRule (in particular the flags); however, even if I had read the Apache documentation and interpreted it correctly prior to following the post I would have doubted my own interpretation based upon the language in your post - deferring to expert. Thanks again for all the help.
Cheers, Gordon On Saturday, September 19, 2020 at 7:59:57 PM UTC-7 Gordon Charles wrote: > Graham, > > A gracious thank you for your help and all the effort you have put into > mod_wsgi. Removing the zones subdirectory resulted in the launching of > main.py and the site is now working as expected. While not in this space > and predominantly in IC development, my organization and myself have had to > support customer facing products and as a result support those who do not > read the documentation throughly. In the spirit of understanding how > guilty I was of not reading throughly I went back and re-read your post and > reading it a second time I still come away with the impression that an > empty directory should result in the correct behavior, which clearly it > does not. The line which convinces me of this is "If however the URL could > not be mapped to an actual physical file in the document directory, the > request will be rewritten such that the request will be redirected to the > resource 'main.py'." While I may not fully appreciate this line in the > context of the article, I'm bringing it to your attention so you are aware > of at least where one reader became lost. > > Cheers, > > Gordon > On Saturday, September 12, 2020 at 10:41:02 PM UTC-7 Graham Dumpleton > wrote: > >> What is the 'zones' sub directory under the document root for? >> >> A request will only be redirected to use main.py in document root as >> handler if the URL path doesn't match either a directory or any file (not >> just .php files). >> >> So if you have a 'zones' sub directory, and use a URL with path of >> /zones, then it matches the directory and tries to serve up a directory >> listing of it if index generation is enabled, or otherwise will fail. It >> will not redirect to 'main.py' in that case. >> >> So for any URL path you want handled by the Python `main.py`, there >> cannot be a directory or file which would be matched by it. >> >> Graham >> >> On 12 Sep 2020, at 7:34 am, Gordon Charles <[email protected]> wrote: >> >> Same result. If the browser is directed to http://thegacway.com/zones/ >> the same error is generated. Unfortunately, I don't believe I have a >> handle on the mechanisms / behaviors of this solution. My understanding >> was that if a directory under the root directory did not have a .php file >> in that directory, apache would route the url request matching that >> directory to a python file in that directory, if it existed which is >> apparently not the case. My understanding is now if there is a >> subdirectory which does not have a .php file then the request will be >> routed to main.py in the root directory, regardless of which directory was >> included in the URL. >> On Friday, September 11, 2020 at 1:55:13 PM UTC-7 Graham Dumpleton wrote: >> >>> If you are still using: >>> >>> RewriteRule ^(.*)$ /main.py/$1 [QSA,PT,L] >>> >>> the file 'main.py' must be in the document root directory for Apache, >>> presumably next to 'index.php'. >>> >>> Try that first. >>> >>> Graham >>> >>> On 12 Sep 2020, at 6:52 am, Gordon Charles <[email protected]> wrote: >>> >>> Graham, >>> >>> I have not been successful in launching a python application. My >>> understanding is the configuration should launch the php handler if it >>> finds a .php file in a directory and if not a .php file, but a ,py file >>> exists it should launch that. The rules in the configuration file and the >>> code you have supplied for the python file want that file to be named >>> main.py. So I created a subdirectory, zones, off of the root directory >>> with only main.py in that directory. File permissions are read for all on >>> main.py and executable for all for the subdirectory. group and owner are >>> the same for the root directory, the subdirectory and main.py. >>> >>> I get the following: >>> >>> [Fri Sep 11 20:48:22.125318 2020] [autoindex:error] [pid 63687] [client >>> 99.46.143.132:59742] AH01276: Cannot serve directory >>> /var/www/html/zones/: No matching DirectoryIndex (index.php) found, and >>> server-generated directory index forbidden by Options directive >>> >>> If I add Indexes to the Options directive, I get the directory listing >>> of http://thegacway.com/zones/. >>> >>> Any assistance would be appreciated. >>> >>> Regards, >>> >>> Gordon >>> On Friday, September 11, 2020 at 8:51:31 AM UTC-7 Gordon Charles wrote: >>> >>>> Setting FollowSymLinks and SymLinksIfOwnerMatch worked. Thank you. >>>> I'm including the working .conf files for reference: >>>> >>>> >>>> <Directory /var/www/html> >>>> Require all granted >>>> </Directory> >>>> WSGIRestrictEmbedded On >>>> <VirtualHost *:80> >>>> ServerName thegacway.com >>>> ServerAlias www.thegacway.com >>>> >>>> ServerAdmin webmaster@localhost >>>> DocumentRoot /var/www/html >>>> >>>> # Define a mod_wsgi daemon process group. >>>> WSGIDaemonProcess www.thegacway.com display-name=%{GROUP} >>>> # Force the Python web application to run in the mod_wsgi >>>> daemon process group. >>>> WSGIProcessGroup www.thegacway.com >>>> WSGIApplicationGroup %{GLOBAL} >>>> # Disable embedded mode of mod_wsgi. >>>> # Set document root and rules for access. >>>> #DocumentRoot /var/www/html >>>> <Directory /var/www/html> >>>> >>>> Options ExecCGI SymLinksIfOwnerMatch FollowSymLinks >>>> >>>> >>>> DirectoryIndex index.php >>>> AddHandler application/x-httpd-php .php >>>> AddHandler wsgi-script .py >>>> RewriteEngine On >>>> RewriteCond %{REQUEST_FILENAME} !-f >>>> RewriteCond %{REQUEST_FILENAME} !-d >>>> RewriteRule ^(.*)$ /main.py/$1 [QSA,PT,L] >>>> </Directory> >>>> >>>> #LogLevel info ssl:warn >>>> >>>> ErrorLog ${APACHE_LOG_DIR}/error.log >>>> CustomLog ${APACHE_LOG_DIR}/access.log combined >>>> >>>> </VirtualHost> >>>> On Thursday, September 10, 2020 at 9:24:07 PM UTC-7 Graham Dumpleton >>>> wrote: >>>> >>>>> Is there is a reason why use of mod_rewrite is disabled by not >>>>> setting FollowSymLinks and SymLinksIfOwnerMatch. Can only presume then >>>>> that >>>>> is due to that. >>>>> >>>>> On 11 Sep 2020, at 1:29 pm, Gordon Charles <[email protected]> wrote: >>>>> >>>>> Graham, >>>>> >>>>> I genuinely appreciate your help and patience; however, I believe we >>>>> may be struggling to communicate. To be clear the .conf file I provided >>>>> is >>>>> the one, only and the complete contents of the .conf file. To be clear, >>>>> yes I would like the site(s) to be under the same address/port and the >>>>> configuration file I've sent you is my attempt to do so with the end goal >>>>> of being able to support either php generated by wordpress or python >>>>> supported by flask. >>>>> >>>>> Regards, >>>>> >>>>> Gordon >>>>> >>>>> On Thursday, September 10, 2020 at 7:00:25 PM UTC-7 Graham Dumpleton >>>>> wrote: >>>>> >>>>>> You can't have two VirtualHosts for same port with same ServerName. >>>>>> Apache will always use the first matching one it finds when doing named >>>>>> based virtual hosting. >>>>>> >>>>>> If you want both sites to be under the same host name, the >>>>>> configuration for each must be combined under the one VirtualHost >>>>>> definition. >>>>>> >>>>>> Graham >>>>>> >>>>>> On 11 Sep 2020, at 11:17 am, Gordon Charles <[email protected]> wrote: >>>>>> >>>>>> Graham, >>>>>> >>>>>> No it is not different. My understanding having read your post Graham >>>>>> Dumpleton Post >>>>>> <http://blog.dscpl.com.au/2014/09/hosting-php-web-applications-in.html>, >>>>>> was that when configured Apache would dynamically route requests to >>>>>> either >>>>>> the .php or through wsgi based upon the file extensions of the files >>>>>> located in the particular directory. My assumption is the >>>>>> ServerName/ServerAlias would be the same for both and Apache is >>>>>> "routing" >>>>>> the requests responses. Based upon your response, I'm missing >>>>>> something; >>>>>> and as such, If it is not too much trouble I would appreciate any >>>>>> clarification you provide on the mechanics of how this would work when >>>>>> implemented correctly. >>>>>> >>>>>> On Thursday, September 10, 2020 at 5:29:45 PM UTC-7 Graham Dumpleton >>>>>> wrote: >>>>>> >>>>>>> What is the ServerName/ServerAlias for the wordpress VirtualHost? It >>>>>>> is different right? >>>>>>> >>>>>>> On 11 Sep 2020, at 10:00 am, Gordon Charles <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>> Graham, >>>>>>> >>>>>>> Thanks for the quick reply. I am striving to work independently >>>>>>> here. I've made the modification, wordpress, is still not loading and >>>>>>> have >>>>>>> the following in the error.log file: >>>>>>> >>>>>>> [Thu Sep 10 23:53:15.963956 2020] [mpm_prefork:notice] [pid 40224] >>>>>>> AH00163: Apache/2.4.41 (Ubuntu) mod_wsgi/4.6.8 Python/3.8 configured -- >>>>>>> resuming normal operations >>>>>>> [Thu Sep 10 23:53:15.964004 2020] [core:notice] [pid 40224] AH00094: >>>>>>> Command line: '/usr/sbin/apache2' >>>>>>> [Thu Sep 10 23:53:27.097927 2020] [rewrite:error] [pid 43290] [client >>>>>>> 99.46.143.132:55785] AH00670: Options FollowSymLinks and >>>>>>> SymLinksIfOwnerMatch are both off, so the RewriteRule directive is also >>>>>>> forbidden due to its similar ability to circumvent directory >>>>>>> restrictions : >>>>>>> /var/www/html/wp-admin/, referer: http://thegacway.com/wp-login.php >>>>>>> >>>>>>> My assumption is that the configuration you have outlined should >>>>>>> work for wordpress in absence of any wsgi files and am trying to setup >>>>>>> the >>>>>>> .conf file so that it first works with wordpress and then add the >>>>>>> python >>>>>>> and get that working. >>>>>>> >>>>>>> Here's the configuration file: >>>>>>> >>>>>>> <Directory /var/www/html> >>>>>>> Require all granted >>>>>>> </Directory> >>>>>>> WSGIRestrictEmbedded On >>>>>>> <VirtualHost *:80> >>>>>>> ServerName thegacway.com >>>>>>> ServerAlias www.thegacway.com >>>>>>> >>>>>>> ServerAdmin webmaster@localhost >>>>>>> DocumentRoot /var/www/html >>>>>>> >>>>>>> # Define a mod_wsgi daemon process group. >>>>>>> WSGIDaemonProcess www.thegacway.com display-name=%{GROUP} >>>>>>> # Force the Python web application to run in the mod_wsgi >>>>>>> daemon process group. >>>>>>> WSGIProcessGroup www.thegacway.com >>>>>>> WSGIApplicationGroup %{GLOBAL} >>>>>>> # Disable embedded mode of mod_wsgi. >>>>>>> # Set document root and rules for access. >>>>>>> #DocumentRoot /var/www/html >>>>>>> <Directory /var/www/html> >>>>>>> Options ExecCGI >>>>>>> DirectoryIndex index.php >>>>>>> AddHandler application/x-httpd-php .php >>>>>>> AddHandler wsgi-script .py >>>>>>> RewriteEngine On >>>>>>> RewriteCond %{REQUEST_FILENAME} !-f >>>>>>> RewriteCond %{REQUEST_FILENAME} !-d >>>>>>> RewriteRule ^(.*)$ /main.py/$1 [QSA,PT,L] >>>>>>> </Directory> >>>>>>> >>>>>>> #LogLevel info ssl:warn >>>>>>> >>>>>>> ErrorLog ${APACHE_LOG_DIR}/error.log >>>>>>> CustomLog ${APACHE_LOG_DIR}/access.log combined >>>>>>> >>>>>>> </VirtualHost> >>>>>>> On Thursday, September 10, 2020 at 4:12:58 PM UTC-7 Graham Dumpleton >>>>>>> wrote: >>>>>>> >>>>>>>> Only WSGIRestrictEmbedded needs to be outside of the VirtualHost. >>>>>>>> Leave everything else you may have inside of the VirtualHost. >>>>>>>> >>>>>>>> On 11 Sep 2020, at 8:17 am, Gordon Charles <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>> I've been trying to create a .conf file which would simultaneously >>>>>>>> support Wordpress and Flask (I have some flask apps which run as part >>>>>>>> of an >>>>>>>> embedded solution and would like for others to be able to drive the >>>>>>>> application in a simulation mode and like the idea of having a site >>>>>>>> wide >>>>>>>> implementation via flask for consistency. >>>>>>>> >>>>>>>> I've been following the guidance found here: >>>>>>>> Graham Dumpleton Post >>>>>>>> <http://blog.dscpl.com.au/2014/09/hosting-php-web-applications-in.html> >>>>>>>> and here: >>>>>>>> mod_wsgi docs >>>>>>>> <https://modwsgi.readthedocs.io/en/develop/index.html> >>>>>>>> >>>>>>>> I'm running on Ubuntu 20.04.1 LTS >>>>>>>> Apache/2.4.41 >>>>>>>> Python 3.8.2 >>>>>>>> >>>>>>>> When I include the suggested configuration described in the Graham >>>>>>>> Dumpleton Post >>>>>>>> <http://blog.dscpl.com.au/2014/09/hosting-php-web-applications-in.html> >>>>>>>> inside >>>>>>>> of the VirtualHost definition I get the following: >>>>>>>> WSGIRestrictEmbedded cannot occur within <VirtualHost> section >>>>>>>> Action 'restart' failed. >>>>>>>> >>>>>>>> When I include the suggested configuration outside of the >>>>>>>> VirtualHost definition it breaks wordpress. >>>>>>>> >>>>>>>> Any guidance here would be appriciated. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> 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 view this discussion on the web visit >>>>>>>> https://groups.google.com/d/msgid/modwsgi/ded196fd-0b21-44ba-b6d5-b91b194e196dn%40googlegroups.com >>>>>>>> >>>>>>>> <https://groups.google.com/d/msgid/modwsgi/ded196fd-0b21-44ba-b6d5-b91b194e196dn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>> . >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> -- >>>>>>> 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 view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/modwsgi/6b61b8c9-4a3b-4c1c-bfc7-6f732542f975n%40googlegroups.com >>>>>>> >>>>>>> <https://groups.google.com/d/msgid/modwsgi/6b61b8c9-4a3b-4c1c-bfc7-6f732542f975n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>>> >>>>>>> >>>>>> -- >>>>>> 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 view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/modwsgi/a75ae12f-3f82-44c1-9deb-6dde36c844a2n%40googlegroups.com >>>>>> >>>>>> <https://groups.google.com/d/msgid/modwsgi/a75ae12f-3f82-44c1-9deb-6dde36c844a2n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>>> >>>>>> >>>>> -- >>>>> 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 view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/modwsgi/7576c999-0314-4c54-9287-229bed83abc2n%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/modwsgi/7576c999-0314-4c54-9287-229bed83abc2n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>>> >>>>> >>> -- >>> 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 view this discussion on the web visit >>> https://groups.google.com/d/msgid/modwsgi/be184d21-d018-4068-b331-891939041d0bn%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/modwsgi/be184d21-d018-4068-b331-891939041d0bn%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> >>> >> -- >> 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 view this discussion on the web visit >> https://groups.google.com/d/msgid/modwsgi/5629a354-04e7-48ee-b2b5-3f02742d23a3n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/modwsgi/5629a354-04e7-48ee-b2b5-3f02742d23a3n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> >> -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/modwsgi/be04382c-d3a2-4cf9-a150-2ef51224009bn%40googlegroups.com.
