I used the pip install mod_wsgi. I was unable to download the develop version from GitHub.
In any case, thank you very much for your help. You were quick to respond and very effective. I appreciate that a lot. Thanks man! Have a great day! Sent from my iPhone > On Sep 15, 2020, at 9:24 PM, Graham Dumpleton <[email protected]> > wrote: > > That is one way of solving the problem, although technically the other way > should have worked except for that restriction about third party Python > modules. > > Have one question. Is that using mod_wsgi installed with 'pip install > mod_wsgi', or were you using the develop version from GitHub? > > The develop version on GitHub was broken in last few days for Windows and > wouldn't compile. So if you were using that one, it must have been picking up > an older build of it from Python cache on your local system, corresponding to > before the point I broke it. > > Reason I ask as the WSGIPythonHome shouldn't work with the version installed > from PyPi. > >> On 16 Sep 2020, at 8:19 am, Daniel Gutiérrez <[email protected]> wrote: >> >> I solved my problem in a different way.. I downloaded Apache for a 2nd time, >> hence creating two instances of Apache24. The second instance I named it >> Apache24_2 >> >> So what I did is: >> >> 1) Download Apache24 from https://www.apachelounge.com/download/ >> >> 2) Rename the downloaded folder to Apache24_2. Extract that folder to the >> same directory where Apache24 (original instance of Apache) is. In my case, >> both Apache instances would be in "C:/". >> >> 3) Open Apache24_2's httpd.conf and httpd-vhosts.conf files. In httpd.conf I >> modified the following: >> >> Define SRVROOT "c:/Apache24_2" >> >> #ServerRoot "${SRVROOT}" >> ServerRoot "c:/Apache24_2" >> >> # Modified the port. I left Apache24 (original Apache instance) with port >> 80. I set Apache24_2's port to port 5000. >> # Listen 80 >> Listen 5000 >> >> 4) In Apache24_2's httpd.conf file, include virtual host and paste my >> mod_wsgi configuration: >> >> Include conf/extra/httpd-vhosts.conf >> >> LoadFile >> "c:/users/administrator/appdata/local/programs/python/python37/python37.dll" >> LoadModule wsgi_module >> "c:/app2/venv/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd" >> WSGIPythonHome "c:/app2/venv" >> >> 5) Set Apach24 (original instance) httpd.conf with app1's corresponding >> mod_wsgi installation: >> >> Listen 80 >> >> Include conf/extra/httpd-vhosts.conf >> >> LoadFile >> "c:/users/administrator/appdata/local/programs/python/python37/python37.dll" >> LoadModule wsgi_module >> "c:/app1/venv/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd" >> WSGIPythonHome "c:/app1/venv" >> >> 6) Set the following virtual host for Apache24 (original): >> >> <VirtualHost *:80> >> >> ServerName ip:80 >> ServerAlias ip:80 >> ServerAdmin [email protected] >> >> DocumentRoot c:/app1 >> >> <Directory c:/app1> >> Require all granted >> </Directory> >> >> WSGIScriptAlias / c:/app1/run.wsgi >> WSGIApplicationGroup %{GLOBAL} >> >> <Directory c:/app1> >> Options +FollowSymLinks >> Require all granted >> </Directory> >> >> ErrorLog "logs/app1-error.log" >> CustomLog "logs/app1-access.log" common >> >> </VirtualHost> >> >> 7) Set the following virtual host for Apache24_2 (second instance): >> >> <VirtualHost *:5000> >> >> ServerName ip:5000 >> ServerAlias ip:5000 >> ServerAdmin [email protected] >> >> DocumentRoot c:/app2 >> >> <Directory c:/app2> >> Require all granted >> </Directory> >> >> WSGIScriptAlias / c:/app2/run.wsgi >> WSGIApplicationGroup %{GLOBAL} >> >> <Directory c:/app2> >> Options +FollowSymLinks >> Require all granted >> </Directory> >> >> ErrorLog "logs/app2-error.log" >> CustomLog "logs/app2-access.log" common >> >> </VirtualHost> >> 6) Once both Apaches are configured respectively, stop Apache24's service >> (if running). >> >> 7) In CMD go to C:/Apache24_2/bin. In CMD enter httpd.exe -k install -n >> "Apache24_2" -f "C:/Apache24_2/conf/httpd.conf" >> >> 8) Go to Windows Services. Verify both Apaches are listed >> >> 9) Start both services >> >> 10) Process Ready. Go to: >> >> ip:80 --> app1 should be displayed >> >> ip:5000 --> app2 should be displayed >> >> >> What are your thoughts on this? >> >> >> >> >> On Tue, Sep 15, 2020 at 3:04 PM Graham Dumpleton >> <[email protected]> wrote: >>> >>> >>>>> On 15 Sep 2020, at 10:56 pm, Daniel Gutiérrez >>>>> <[email protected]> wrote: >>>>> >>>>> Hi Graham, >>>>> >>>>> Thank you for your quick response. >>>>> >>>>> Ok, so I did a couple things: >>>>> >>>>> >>>>> 1) Set WSGIPythonHome = >>>>> "c:/users/administrator/appdata/local/programs/python/python37" in >>>>> httpd.conf >>>>> >>>>> 2) Removed WSGIApplicationGroup %{GLOBAL} from VirtualHost configuration >>>>> >>>>> Once I did that, I actually did not get the "encodings" error I was >>>>> getting before. However, I got an Internal Server Error. I assumed this >>>>> happened because the main Python interpreter didn't have the necessary >>>>> modules that the virtualenv did have (thus, I pip installed them). >>>> >>>> You should not need to install the modules in the system Python >>>> installation so long as the activate_this code was in the correct spot >>>> within the WSGI script file, and that it actually works on Windows (I >>>> can't remember if it does or not). >>>> >>>> Make sure that the activate_this code is before all other imports except >>>> for 'import sys'. >>>> >>>> After the activate_this code and before doing anything else, add: >>>> >>>> print(sys.path) >>>> >>>> and check Apache logs to see what it was set to for each application. What >>>> do you see? >>>> >>>> What Python distribution are you trying to use? The standard one from >>>> Python software foundation, or the Anaconda distribution? >>>> >>>> Graham >>>> >>>> Now I am getting the following error: >>>> >>>> File "C:\\CRM4_Flask\\venv\\Lib\\site-packages\\uuid.py", line 138\r, >>>> referer: http://172.16.3.120/ >>>> [Tue Sep 15 06:54:38.538334 2020] [wsgi:error] [pid 6244:tid 1228] [client >>>> ] if not 0 <= time_low < 1<<32L: >>>> SyntaxError: invalid syntax\r, referer: http://ip/ >>>> >>>> This is apparently happening in uuid module, which in theory has nothing >>>> to do with my app. I guess it is a built in module or something. What can >>>> i do? >>> >>> This sorts of suggests that the mod_wsgi might be compiled for a different >>> Python version. Can't think what else could cause it. >>> >>> When you install mod_wsgi, make sure you are using: >>> >>> pip install -U --no-cache-dir mod_wsgi >>> >>> so that any prior build of the package is installed. >>> >>>>> On Tuesday, September 15, 2020 at 6:31:10 AM UTC-6 Graham Dumpleton wrote: >>>>> >>>>> >>>>> > On 15 Sep 2020, at 10:17 pm, Daniel Gutiérrez >>>>> > <[email protected]> wrote: >>>>> > >>>>> > >>>>> > Hi, I want to host multiple Flask apps through Apache in the same >>>>> > Windows 10 server. I want each app to be running on different ports. I >>>>> > figured that each app must have its own Python configuration, otherwise >>>>> > Apache will only run one of the two web apps. I have seen that in Linux >>>>> > you are supposed to use WSGIDaemonProcess command in the VirtualHost >>>>> > file, but this does not work on Windows. >>>>> > >>>>> > I tried using >>>>> > >>>>> > import sys >>>>> > activate_this = 'C:/CRM4_Flask/venv/Scripts/activate_this.py' >>>>> > with open(activate_this) as file_: >>>>> > exec(file_.read(), dict(__file__=activate_this)) >>>>> > >>>>> > #Expand Python classes path with your app’s path >>>>> > # The string inputted as the parameter corresponds to the web app's >>>>> > path in C >>>>> > sys.path.insert(0, "C:/CRM4_Flask") >>>>> > >>>>> > from run import app as application >>>>> > >>>>> > in my run.wsgi file for each app. However, I always get the following >>>>> > error: >>>>> > >>>>> > Fatal Python error: initfsencoding: unable to load the file system >>>>> > codec >>>>> > ModuleNotFoundError: No module named 'encodings' >>>>> >>>>> This error has nothing to do with use of activate_this files and >>>>> indicates that the Python libraries can't find your Python installation >>>>> for some reason. >>>>> >>>>> Still set WSGIPythonHome, but set it to where the main Python >>>>> installation is located (not the virtual environment). >>>>> >>>>> This should be the value of sys.prefix, or at least I hope so as I can't >>>>> remember what Windows uses for the main Python installation. >>>>> >>>>> > What alternative do I have instead of using WSGIDaemonProcess, given >>>>> > that it does not work on Windows? Im using Apache 2.4, Python 3.7.7, >>>>> > Windows 10 and mod_wsgi 4.7.1 >>>>> > >>>>> > My VirtualHost configuration for one of the web apps I want to host is: >>>>> > >>>>> > >>>>> > <VirtualHost *:80> >>>>> > >>>>> > ServerName localhost:80 >>>>> > ServerAlias localhost:80 >>>>> > ServerAdmin [email protected] >>>>> > >>>>> > DocumentRoot c:/CRM4_Flask >>>>> > >>>>> > <Directory c:/CRM4_Flask> >>>>> > Require all granted >>>>> > </Directory> >>>>> > >>>>> > WSGIScriptAlias / c:/CRM4_Flask/run.wsgi >>>>> > WSGIApplicationGroup %{GLOBAL} >>>>> >>>>> Provided that both your WSGI applications only use third party modules >>>>> that work fine in sub interpreters, all you need to do is NOT set >>>>> WSGIApplicationGroup. >>>>> >>>>> So long as you don't set it, each WSGI application will run in a separate >>>>> Python sub interpreter of the same process and in the main shouldn't >>>>> interfere with each other, or at least to the extent that sub >>>>> interpreters separate things. >>>>> >>>>> This is because sub interpreters are used by default, where the name of >>>>> the sub interpreter is based on the name of the virtual host, the port, >>>>> and the mount point of the WSGI application. So long as your two virtual >>>>> hosts are on different ports (except for 80/443 which are still treated >>>>> as one), they should be separate. >>>>> >>>>> If you are using Python packages such as numpy then you will have a >>>>> problem though. This is because numpy and thus a lot of the scientific >>>>> packages for Python don't work in sub interpreters. Usually with those >>>>> you would force the use of the main Python interpreter context. This is >>>>> fine on Linux where have multiple apps which all need that to be done, as >>>>> you can delegate each to separate daemon process groups. On Windows >>>>> though you would be out of luck, as only one could be delegated to the >>>>> main Python interpreter. >>>>> >>>>> The directive which delegates the WGSI application to the main >>>>> interpreter is: >>>>> >>>>> WSGIApplicationGroup %{GLOBAL} >>>>> >>>>> which is why I am asking you not to set it, cause right now you are >>>>> telling both to run in the main interpreter, so they will conflict. >>>>> >>>>> Graham >>>>> >>>>> >>>>> > <Directory c:/CRM4_Flask> >>>>> > Options +FollowSymLinks >>>>> > Require all granted >>>>> > </Directory> >>>>> > >>>>> > ErrorLog "logs/crm4-error.log" >>>>> > CustomLog "logs/crm4-access.log" common >>>>> > >>>>> > </VirtualHost> >>>>> > >>>>> > In the httpd.conf I added the following lines: >>>>> > >>>>> > LoadFile >>>>> > "c:/users/administrator/appdata/local/programs/python/python37/python37.dll" >>>>> > >>>>> > LoadModule wsgi_module >>>>> > "c:/crm4_flask/venv/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd" >>>>> > >>>>> > #WSGIPythonHome "c:/crm4_flask/venv" >>>>> > >>>>> > I commented WSGIPythonHome because in theory I need Apache to load two >>>>> > versions of Python, not only one. >>>>> > >>>>> > Please let me know if I am doing something wrong or if I should try >>>>> > something else. >>>>> >>>> >>>> >>>> -- >>>> 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/bc1efda6-62b0-444c-8981-a9eb47ff7bd2n%40googlegroups.com. >>> >>> >>> -- >>> 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/382A9A76-5E51-40F2-BCA4-98A508EA65E2%40gmail.com. >> >> >> -- >> 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/CAOgXKo8nWxqbkdnR34NG1yk2%2BkAai%2BoQfm29fXJUqN0GdhRrFQ%40mail.gmail.com. > > -- > 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/70DB17AB-A42C-4689-A50E-5F3D62EED8F2%40gmail.com. -- 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/37527CAB-36A2-4FA8-98EE-9D36969537EF%40artaviaconsultoria.com.
