Re: wsgi on RedHat 9

Tonu Mikk via Roundup-users <[email protected]> Thu, 8 Feb 2024 09:25:44 -0600
Newsgroups gmane.comp.bug-tracking.roundup.user
Message-ID <CABDFm8jJRehnBbqJwW1FVbqwaQgnScez+auuw5FJ93h0fbgpvQ@mail.gmail.com>
--===============0024397837304340614==
Content-Type: multipart/alternative; boundary="000000000000f3d27d0610e06ea5"

--000000000000f3d27d0610e06ea5
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I got it to work!

I found the Apache modified wsgi handler in Roundup documentation. I tried
to modify it by using the roundup installation in my home directory
  sys.path.insert(0,
'(home/tmikk/.local/lib/python3.9/site-packages/roundup') but that didn't
work.

I then ran
sudo pip install roundup

I got this message:
Requirement already satisfied: roundup in
/usr/local/lib/python3.9/site-packages (2.3.0)
WARNING: Running pip as the 'root' user can result in broken permissions
and conflicting behaviour with the system package manager. It is
recommended to use a virtual environment instead:
https://pip.pypa.io/warnings/venv

I must have tried this command already as Roundup was already installed
using this method. I then used the Roundup's path
(/usr/local/lib/python3.9/site-packages) in the wsgi handler and also
changed the home directory path which made it work. My wsgi handler now
looks like this.

import sys, os
sys.stdout =3D sys.stderr

enabled =3D True

if enabled:
    # Add the directory with the roundup installation
    # subdirectory to the python path.
    sys.path.insert(0, ' /usr/local/lib/python3.9/site-packages ')

    # obtain the WSGI request dispatcher
    from roundup.cgi.wsgi_handler import RequestDispatcher

    tracker_home =3D '/opt/trackers/classic'
    application =3D RequestDispatcher(tracker_home)
else:
    def application(environ, start_response):
        status =3D '503 Service Unavailable'
        output =3D 'service is down for maintenance'
        response_headers =3D [('Content-type', 'text/plain'),
                            ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
        return [output]

We have a couple of things we would like to track and I thought that
creating a generic url naming (/piano) might be a good way to go. We may
have more than one tracker and I can add another musical instrument /guitar
for example. It is a bit experimental right now and I don't know if it will
come to fruition.

Thanks for all the help!

On Wed, Feb 7, 2024 at 3:47=E2=80=AFPM Tonu Mikk <[email protected]> wrote:

> Thanks for these additional ideas! I am now seeing where the problem is.
>
> The command
> python3 -c 'import sys;print(sys.version); print(sys.prefix);' shows the
> same information as the test_wsgi output:
> 3.9.18 (main, Sep  7 2023, 00:00:00)
> [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)]
> /usr
>
> When running
>    python3 -c 'import roundup; print(roundup)'
> I get:
> <module 'roundup' from
> '/home/tmikk/.local/lib/python3.9/site-packages/roundup/__init__.py'>
> I had started the roundup install by first creating a python virtual
> environment in my home directory and then installing roundup there using
> pip. Looks like this is where my problem is. I don't even see roundup in
> /usr/lib64/python3.9/site-packages.
>
> I hadn't set the PYTHONPATH environment variable.
>
> The command
> python3 -c 'import sys; print("\n".join(sys.path))'
>
> gives me this output.
> /usr/lib64/python39.zip
> /usr/lib64/python3.9
> /usr/lib64/python3.9/lib-dynload
> /home/tmikk/.local/lib/python3.9/site-packages
> /usr/lib64/python3.9/site-packages
> /usr/lib/python3.9/site-packages
>
>
> On Wed, Feb 7, 2024 at 3:30=E2=80=AFPM John P. Rouillard <[email protected]=
du>
> wrote:
>
>> Hi Tonu:
>>
>> In message
>> <CABDFm8jpdukd-rbVbpcKxnFHPEgCuZK7NPTfveSKLZvCMVEbjA@mail.gmail.com> ,
>> Tonu Mikk writes:
>> >The command
>> >   python3 -c 'import roundup'
>> >runs without an error.
>>
>> Stupid idea does:
>>
>>    python3 -c 'import sys;print(sys.version); print(sys.prefix);'
>>
>> print the same as your test_wsgi? I expect it will.
>>
>> Also can you run:
>>
>>    python3 -c 'import roundup; print(roundup)'
>>
>> to see where the library is? It's possible you have it installed in
>> some odd place that the wsgi python invocation isn't looking. Do you
>> have PYTHONPATH set in your environment per chance?
>>
>> Also running:
>>
>>   python3 -c 'import sys; print("\n".join(sys.path))'
>>
>> or printing sys.path from test_wsgi may give us some more info.
>>
>> If that's the case, you can add:
>>
>>   # Add the directory with the roundup installation
>>   # subdirectory to the python path.
>>   sys.path.insert(0, '/home/roundup/install/lib/python')
>>
>> to the wsgi script as mentioned in a couple of places on the
>> installation page (search for sys.path).
>>
>> >I changed the test_wsgi.py to contain this:
>> >import sys
>> >
>> >def application(environ, start_response):
>> >    status =3D '200 OK'
>> >
>> >    output =3D u''
>> >    output +=3D u'sys.version =3D %s\n' % repr(sys.version)
>> >    output +=3D u'sys.prefix =3D %s\n' % repr(sys.prefix)
>> >
>> >    response_headers =3D [('Content-type', 'text/plain'),
>> >                        ('Content-Length', str(len(output)))]
>> >    start_response(status, response_headers)
>> >
>> >    return [output.encode('UTF-8')]
>> >
>> >Now the output in the browser shows:
>> >sys.version =3D '3.9.18 (main, Sep  7 2023, 00:00:00) \n[GCC 11.4.1
>> 20230605
>> >(Red Hat 11.4.1-2)]'
>> >sys.prefix =3D '/usr'
>> >
>> >I will try to use the virtual environment with mod_wsgi. Thanks for
>> >pointing this out!
>>
>> That's the more resiliant way to do it, but I would like to get to the
>> bottom of the issue you had with a os native installation.
>>
>> Have a great day.
>> --
>>                                 -- rouilj
>> John Rouillard
>>
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
>> My employers don't acknowledge my existence much less my opinions.
>>
>
>
> --
> Tonu Mikk
> Developer | Disability Resource Center | disability.umn.edu
> University of Minnesota | umn.edu
> [email protected]
> Pronouns: He/Him
>


--=20
Tonu Mikk
Developer | Disability Resource Center | disability.umn.edu
University of Minnesota | umn.edu
[email protected]
Pronouns: He/Him

--000000000000f3d27d0610e06ea5
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I got it to work!<div><br></div><div>I found the Apache mo=
dified wsgi handler in Roundup documentation. I tried to modify it by using=
 the roundup installation in my home directory</div><div>=C2=A0=C2=A0sys.pa=
th.insert(0, &#39;(home/tmikk/.local/lib/python3.9/site-packages/roundup&#3=
9;) but that didn&#39;t work.</div><div><br></div><div>I then ran=C2=A0</di=
v><div>sudo pip install roundup</div><div><br></div><div>I got this message=
:</div><div>Requirement already satisfied: roundup in /usr/local/lib/python=
3.9/site-packages (2.3.0)<br>WARNING: Running pip as the &#39;root&#39; use=
r can result in broken permissions and conflicting behaviour with the syste=
m package manager. It is recommended to use a virtual environment instead: =
<a href=3D"https://pip.pypa.io/warnings/venv">https://pip.pypa.io/warnings/=
venv</a><br></div><div><br></div><div>I must have tried this command alread=
y as Roundup was already installed using this method. I then used the Round=
up&#39;s path (/usr/local/lib/python3.9/site-packages) in the wsgi handler =
and also changed the home directory path which made it work. My wsgi handle=
r now looks like this.</div><div><div><br></div><div>import sys, os<br>sys.=
stdout =3D sys.stderr<br><br>enabled =3D True<br><br>if enabled:<br>=C2=A0 =
=C2=A0 # Add the directory with the roundup installation<br>=C2=A0 =C2=A0 #=
 subdirectory to the python path.<br>=C2=A0 =C2=A0 sys.path.insert(0, &#39;

/usr/local/lib/python3.9/site-packages &#39;)<br><br>=C2=A0 =C2=A0 # obtain=
 the WSGI request dispatcher<br>=C2=A0 =C2=A0 from roundup.cgi.wsgi_handler=
 import RequestDispatcher<br><br>=C2=A0 =C2=A0 tracker_home =3D &#39;/opt/t=
rackers/classic&#39;<br>=C2=A0 =C2=A0 application =3D RequestDispatcher(tra=
cker_home)<br>else:<br>=C2=A0 =C2=A0 def application(environ, start_respons=
e):<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 status =3D &#39;503 Service Unavailable&=
#39;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 output =3D &#39;service is down for mai=
ntenance&#39;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 response_headers =3D [(&#39;Co=
ntent-type&#39;, &#39;text/plain&#39;),<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (&#39;Co=
ntent-Length&#39;, str(len(output)))]<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 start_=
response(status, response_headers)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 return [o=
utput]<br></div></div><div><br></div><div>We have a couple of things we wou=
ld like to track and I thought that creating a generic url naming (/piano) =
might be a good way to go. We may have more than one tracker and I can add =
another musical instrument /guitar for example. It is a bit experimental ri=
ght now and I don&#39;t know if it will come to fruition.</div><div><br></d=
iv><div>Thanks for all the help!</div></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Wed, Feb 7, 2024 at 3:47=E2=80=AFP=
M Tonu Mikk &lt;<a href=3D"mailto:[email protected]" target=3D"_blank">tmikk@um=
n.edu</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex"><div dir=3D"ltr">Thanks for these additional ideas! I am now seeing wh=
ere the problem is.=C2=A0<div><br></div><div>The command=C2=A0</div><div>py=
thon3 -c &#39;import sys;print(sys.version); print(sys.prefix);&#39; shows =
the same information as the test_wsgi output:<br></div><div>3.9.18 (main, S=
ep =C2=A07 2023, 00:00:00)<br>[GCC 11.4.1 20230605 (Red Hat 11.4.1-2)]<br>/=
usr<br></div><div><br></div><div>When running=C2=A0</div><div>=C2=A0 =C2=A0=
python3 -c &#39;import roundup; print(roundup)&#39;<br></div><div>I get:</d=
iv><div>&lt;module &#39;roundup&#39; from &#39;/home/tmikk/.local/lib/pytho=
n3.9/site-packages/roundup/__init__.py&#39;&gt;<br></div><div>I had started=
 the roundup install by first creating a python virtual environment in my h=
ome directory and then installing roundup there using pip. Looks like this =
is where my problem is.=C2=A0I don&#39;t even see roundup in /usr/lib64/pyt=
hon3.9/site-packages.=C2=A0</div><div><br></div><div>I hadn&#39;t set the P=
YTHONPATH environment variable.=C2=A0</div><div><br></div><div>The command=
=C2=A0</div><div>python3 -c &#39;import sys; print(&quot;\n&quot;.join(sys.=
path))&#39;<br></div><div><br></div><div>gives me this output.</div><div>/u=
sr/lib64/python39.zip<br>/usr/lib64/python3.9<br>/usr/lib64/python3.9/lib-d=
ynload<br>/home/tmikk/.local/lib/python3.9/site-packages<br>/usr/lib64/pyth=
on3.9/site-packages<br>/usr/lib/python3.9/site-packages<br></div><div><br><=
/div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_a=
ttr">On Wed, Feb 7, 2024 at 3:30=E2=80=AFPM John P. Rouillard &lt;<a href=
=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>&gt; w=
rote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Tonu:<b=
r>
<br>
In message<br>
&lt;<a href=3D"mailto:CABDFm8jpdukd-rbVbpcKxnFHPEgCuZK7NPTfveSKLZvCMVEbjA@m=
ail.gmail.com" target=3D"_blank">CABDFm8jpdukd-rbVbpcKxnFHPEgCuZK7NPTfveSKL=
[email protected]</a>&gt; ,<br>
Tonu Mikk writes:<br>
&gt;The command<br>
&gt;=C2=A0 =C2=A0python3 -c &#39;import roundup&#39;<br>
&gt;runs without an error.<br>
<br>
Stupid idea does:<br>
<br>
=C2=A0 =C2=A0python3 -c &#39;import sys;print(sys.version); print(sys.prefi=
x);&#39;<br>
<br>
print the same as your test_wsgi? I expect it will.<br>
<br>
Also can you run:<br>
<br>
=C2=A0 =C2=A0python3 -c &#39;import roundup; print(roundup)&#39;<br>
<br>
to see where the library is? It&#39;s possible you have it installed in<br>
some odd place that the wsgi python invocation isn&#39;t looking. Do you<br=
>
have PYTHONPATH set in your environment per chance?<br>
<br>
Also running:<br>
<br>
=C2=A0 python3 -c &#39;import sys; print(&quot;\n&quot;.join(sys.path))&#39=
;<br>
<br>
or printing sys.path from test_wsgi may give us some more info.<br>
<br>
If that&#39;s the case, you can add:<br>
<br>
=C2=A0 # Add the directory with the roundup installation<br>
=C2=A0 # subdirectory to the python path.<br>
=C2=A0 sys.path.insert(0, &#39;/home/roundup/install/lib/python&#39;)<br>
<br>
to the wsgi script as mentioned in a couple of places on the<br>
installation page (search for sys.path).<br>
<br>
&gt;I changed the test_wsgi.py to contain this:<br>
&gt;import sys<br>
&gt;<br>
&gt;def application(environ, start_response):<br>
&gt;=C2=A0 =C2=A0 status =3D &#39;200 OK&#39;<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 output =3D u&#39;&#39;<br>
&gt;=C2=A0 =C2=A0 output +=3D u&#39;sys.version =3D %s\n&#39; % repr(sys.ve=
rsion)<br>
&gt;=C2=A0 =C2=A0 output +=3D u&#39;sys.prefix =3D %s\n&#39; % repr(sys.pre=
fix)<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 response_headers =3D [(&#39;Content-type&#39;, &#39;text/=
plain&#39;),<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 (&#39;Content-Length&#39;, str(len(output)))]<br>
&gt;=C2=A0 =C2=A0 start_response(status, response_headers)<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 return [output.encode(&#39;UTF-8&#39;)]<br>
&gt;<br>
&gt;Now the output in the browser shows:<br>
&gt;sys.version =3D &#39;3.9.18 (main, Sep=C2=A0 7 2023, 00:00:00) \n[GCC 1=
1.4.1 20230605<br>
&gt;(Red Hat 11.4.1-2)]&#39;<br>
&gt;sys.prefix =3D &#39;/usr&#39;<br>
&gt;<br>
&gt;I will try to use the virtual environment with mod_wsgi. Thanks for<br>
&gt;pointing this out!<br>
<br>
That&#39;s the more resiliant way to do it, but I would like to get to the<=
br>
bottom of the issue you had with a os native installation.<br>
<br>
Have a great day.<br>
--<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -- rouilj<br>
John Rouillard<br>
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
<br>
My employers don&#39;t acknowledge my existence much less my opinions.<br>
</blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><span sty=
le=3D"border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"=
><font color=3D"#666666"><div>Tonu Mikk</div><div>Developer | Disability Re=
source Center | <a href=3D"https://disability.umn.edu" target=3D"_blank">di=
sability.umn.edu</a></div><div>University of Minnesota | <a href=3D"http://=
umn.edu" target=3D"_blank">umn.edu</a>=C2=A0</div><div><a href=3D"mailto:tm=
[email protected]" target=3D"_blank">[email protected]</a>=C2=A0</div><div>Pronouns: =
He/Him</div></font></span></div></div></div></div></div>
</blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><span sty=
le=3D"border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"=
><font color=3D"#666666"><div>Tonu Mikk</div><div>Developer | Disability Re=
source Center | <a href=3D"https://disability.umn.edu" target=3D"_blank">di=
sability.umn.edu</a></div><div>University of Minnesota | <a href=3D"http://=
umn.edu" target=3D"_blank">umn.edu</a>=C2=A0</div><div><a href=3D"mailto:tm=
[email protected]" target=3D"_blank">[email protected]</a>=C2=A0</div><div>Pronouns: =
He/Him</div></font></span></div></div></div></div></div>

--000000000000f3d27d0610e06ea5--


--===============0024397837304340614==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============0024397837304340614==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Roundup-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/roundup-users

--===============0024397837304340614==--