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.
