> On 22 Aug 2016, at 8:16 AM, Tierprot B. <[email protected]> wrote:
>
> Aha! Thanks! Addition of proper user and group options to WSGIDaemonProcess
> solved the ImportError! The last question i have might be not related to
> mod_wsgi directly, but still.
> I have a Flask app, purpose of which to be able to upload files provided by
> user, do some math and return result on a new page. Simplified code looks
> like this:
>
> ...
>
> @app.route('/'):
> def index()
> return render_template('index.html')
>
> @app.route('/analysis', methods=['POST'])
> def upload():
> uploaded_files = request.files.getlist('files')
> ...
> for file in uploaded_files:
> ...
> return render_template('analysis.html')
>
> ...
>
> The folder with static files which Flask renders is:
>
> home/user/flask_stuff_files/templates
>
>
> in Apache ive corrected document root folder and added directory with static
> files:
>
> apache-wsgi config:
> ----------------------------
> <VirtualHost *:80>
> ServerName www.example.com <http://www.example.com/>
> DocumentRoot /home/user/flask_stuff_files/templates
What are you trying to have happen by adding this?
The Apache user would need access to that directory and once agains the
permissions on the directories are such that that can’t happen. Changing user
for mod_wsgi daemon process group only affects access to Python code, not
static files Apache tries to serve up.
In general this is why is better not to have anything for your application
under your home directory. Better under separate directory for project under
/var/www.
> WSGIDaemonProcess home=/var/www/wsgi-scripts
> python-path=/home/user/flask_stuff_files user=user group=user
> WSGIScriptAlias /test /var/www/wsgi-scripts/simple_app.wsgi
> process-group=app application-group=%{GLOBAL}
>
> <Directory /var/www/wsgi-scripts>
> Require all granted
> </Directory>
>
> <Directory /home/user/flask_stuff_files>
> WSGIProcessGroup app
> WSGIApplicationGroup %{GLOBAL}
> Require all granted
> </Directory>
May not need this entry for /home/user/flask_stuff_files.
> <Directory /home/user/flask_stuff_files/templates>
> WSGIProcessGroup app
> WSGIApplicationGroup %{GLOBAL}
> Require all granted
> </Directory>
May not need this entry for /home/user/flask_stuff_files/templates. Depends on
answer about DocumentRoot.
The Directory block and access grants is only needed for where the WSGI script
file is located.
The WSGIScriptAlias already specifies process-group and application-group so
the WSGIProcessGroup and WSGIApplicationGroup not needed either.
> </VirtualHost>
>
> So, www.example.com/test <http://www.example.com/test> - it renders main page
> as intended, but when i select files and submit them via POST request ive got
> a forbidden access with error_log : Permission denied [...] : acces to
> /analysis denied (filesystempath '/home/user/flask_stuff_files') because
> search permissions are missing on a component of the path, referer:
> www.example.com/test <http://www.example.com/test>.
>
> For the test, i set permissions of the folder /home/user/flask_stuff_files to
> the drwxrwxrwx, it belongs to user user.
>
> So, could you share your thoughts on what is wrong here?
Graham
> 2016-08-21 23:28 GMT+03:00 Graham Dumpleton <[email protected]
> <mailto:[email protected]>>:
> Your code will be running as the Apache user. Your home directory would have
> restrictive permissions on it such that not everyone can access files out of
> it.
>
> The quickest solution would be to set the process/group that the mod_wsgi
> daemon process runs as.
>
> WSGIDaemonProcess home=/var/www/wsgi-scripts
> python-path=/home/user/flask_stuff_files user=xxx group=yyy
>
> Replace xxx with your user name and yyy with the group name, likely same as
> xxx.
>
> Thi presumes the issue isn’t as simple as you having left off the leading
> slash on the path to the python-path option as your snippet showed.
>
> Graham
>
>> On 21 Aug 2016, at 11:41 PM, Tierprot B. <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>
>> That is what WSGIScriptAlias is doing in giving it the path to the WSGI
>> script file. If you mean something different you need to be clearer.
>>
>>> b) that it should include python files from outside directory, for example
>>> home/user/flask_stuff_files ?
>>
>> If you are talking about other places to look for Python modules to import,
>> that is what the python-path option for WSGIDaemonProcess that I mentioned
>> is for.
>>
>> Graham
>>
>>
>> Ok, ive got python modules which i try to import located at
>> home/user/flask_stuff_files, mine wsgi file is in /var/www/wsgi-scripts, now
>> to the code:
>>
>> apache-wsgi config:
>> ----------------------------
>> <VirtualHost *:80>
>> ServerName www.example.com <http://www.example.com/>
>> DocumentRoot /var/www/html
>>
>> WSGIDaemonProcess home=/var/www/wsgi-scripts
>> python-path=home/user/flask_stuff_files
>> WSGIScriptAlias /test /var/www/wsgi-scripts/simple_app.wsgi
>>
>> <Directory /var/www/wsgi-scripts>
>> Require all granted
>> </Directory>
>> </VirtualHost>
>> -------------------------
>>
>> simple_app.wsgi:
>> ----------------------------------
>> import server_handle
>>
>> def application(environ, start_response):
>> status = '200 OK'
>> output = b'Hello, World!'
>>
>> response_headers = [('Content-type', 'text/plain'),
>> ('Content-Length', str(len(output)))]
>> start_response(status, response_headers)
>> return [output]
>> ------------------------------------
>>
>> server_handle.py module is located at /home/user/flask_stuff_files
>>
>> on trying www.example.com/test <http://www.example.com/test> Apache spits
>> with error ImportError: no module named 'server_handle'
>>
>> adding of code like:
>>
>> import sys
>> sys.path.insert(0,'/home/user/flask_stuff_files')
>>
>> dont solve the problem too (do you know why, btw?)
>>
>> Theres something i didn`t properly understood, so sorry for annoying and
>> dumb questions :)
>>
>> --
>> 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]
>> <mailto:[email protected]>.
>> To post to this group, send email to [email protected]
>> <mailto:[email protected]>.
>> 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 a topic in the Google
> Groups "modwsgi" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/modwsgi/mDhEH4ChXgE/unsubscribe
> <https://groups.google.com/d/topic/modwsgi/mDhEH4ChXgE/unsubscribe>.
> To unsubscribe from this group and all its topics, send an email to
> [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> 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 [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.