And does /var/www/flask_stuff_files/templates/analysis exist? Does it have to 
be a directory or a file? For uploads those directories will need to be 
writable to Apache user.

> On 22 Aug 2016, at 8:52 AM, Tierprot B. <[email protected]> wrote:
> 
> Hmm and now im more confused, i copied server files from 
> /home/user/flask_stuff_files to the new directory /var/www/flask_stuff_files 
> and corrected Apache conf, now it looks like:
> 
> apache-wsgi config:
> ----------------------------
> <VirtualHost *:80>
>       ServerName www.example.com <http://www.example.com/> 
>       DocumentRoot /var/www/flask_stuff_files/templates
>       WSGIDaemonProcess home=/var/www/wsgi-scripts 
> python-path=/var/www/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>
> 
>  </VirtualHost>
>  
> Still main page www.example.com/test <http://www.example.com/test> renders 
> ok, but on files submission i get error File does not exist: 
> /var/www/flask_stuff_files/templates/analysis, referer: 
> http://www.example.com/test <http://www.example.com/test>
> 
> 
> 2016-08-22 1:28 GMT+03:00 Graham Dumpleton <[email protected] 
> <mailto:[email protected]>>:
> 
>> On 22 Aug 2016, at 8:16 AM, Tierprot B. <[email protected] 
>> <mailto:[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 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.

Reply via email to