Hi

On Sat, Sep 16, 2017 at 1:31 AM, Gabriel Sánchez <gabrielesanc...@gmail.com>
wrote:

>
> On Thu, Sep 14, 2017 at 2:33 PM, Dave Page <dp...@pgadmin.org> wrote:
>
>>
>>
>> On Thu, Sep 14, 2017 at 5:59 PM, Mike Surcouf <mi...@surcouf.co.uk>
>> wrote:
>>
>>> I share your pain.
>>>
>>> I do have it working but as a root app and it took me a while to work
>>> through the docs and fill in the blanks.
>>>
>>> I think Dave was looking at making server install much easier but not
>>> sure if anything was implemented in the next version.
>>>
>>
>> It has been, and the docs are updated on the website and in the test
>> builds.
>>
>
>>
>>> Regarding issue #2 running the app as a subdirectory this was broken in
>>> 1.6
>>>
>>> As you have found the docs won’t give you a working solution.
>>>
>>> You can work around this by running the app in the root of apache but
>>> that’s not a great solution.
>>>
>>> I am waiting on 1.7 to fix this but there is no info on release as of
>>> yet.
>>>
>>
>> https://developer.pgadmin.org/~dpage/2.0-rc1/
>>
>> I'm probably not going to release that as there have been a few fixes
>> since then, but that build includes the "server mode out of the box" config
>> (though, if using the wheel or source, you will need to create
>> /var/log/pgadmin and /var/lib/pgadmin and change the owner to whoever you
>> run the server as), and webpacking of all the code which makes it *much*
>> faster.
>>
>>
>
> Thanks.  I installed RC1 in as before (in a virtual environment and with
> the modification on pgadmin.wsgi to activate the virtual environment (see
> Issue #1 in the original post)), and I'm trying to run it on the web root,
> but I'm getting the following in the apache error log:
>
> [mod_wsgi (pid=12596): Target WSGI script '/opt/pgadmin4_2/virtualenv/
> lib/python2.7/site-packages/pgadmin4/pgAdmin4.wsgi' cannot be loaded as
> Python module.
> mod_wsgi (pid=12596): Exception occurred processing WSGI script
> '/opt/pgadmin4_2/virtualenv/lib/python2.7/site-packages/
> pgadmin4/pgAdmin4.wsgi'.
>  Traceback (most recent call last):
>    File 
> "/opt/pgadmin4_2/virtualenv/lib/python2.7/site-packages/pgadmin4/pgAdmin4.wsgi",
> line 20, in <module>
>      import config
>    File 
> "/opt/pgadmin4_2/virtualenv/lib/python2.7/site-packages/pgadmin4/config.py",
> line 118, in <module>
>      if builtins.SERVER_MODE is None:
>  AttributeError: 'module' object has no attribute 'SERVER_MODE'
>

> Any suggestions on what to try next?
>
That's an issue. To fix just add this snippet at line 117 in config.py

builtins.SERVER_MODE=builtins.SERVER_MODE if hasattr(builtins,
'SERVER_MODE') else None​

​
I will send a patch for this.

>
> I also tried it without the modification to pgadmin.wsgi, but I was
> getting an error similar to before, with "ImportError: No module named
> flask_paranoid", and the activation of the virtual environment seems to
> have addressed that.
>
> Is the modification to pgadmin.wsgi to activate the virtual environment a
> good fix?  Or is there an option I could add in config_local.py with a path
> to the virtual environment?
>
​You don't need to modify pgAdmin4.wsgi, instead set the *python-path* to
virtual env in your *apache.conf* file​

​like:

WSGIDaemonProcess pgadmin processes=1 threads=25 \

python-path=/home/surinder/venv/py27/:/home/surinder/venv/py27/lib/python2.7/site-packages/

>
> And, just to confirm, does v2 RC1 run from a subdirectory as well as on
> web root?
>
​Yes, It runs from subdirectory.

​For example: Sub-directory can be given like:

WSGIScriptAlias */pgadmin*
*​/sub-directory/*​
/opt/pgadmin4/virtualenv/lib/python2.7/site-packages/pgadmin4/pgAdmin4.wsgi
​
If you still having any issue, let us know.


>
>
>>
>>>
>>> *From:* Gabriel Sánchez [mailto:gabrielesanc...@gmail.com]
>>> *Sent:* 14 September 2017 17:32
>>> *To:* pgadmin-supp...@postgresql.org
>>> *Subject:* Hosting pgAdmin4 with Apache/WSGI
>>>
>>>
>>>
>>> Hi team,
>>>
>>>
>>>
>>> Thanks for the hard work you've put in to develop pgAdmin4 and provide
>>> support to the community.  I'm writing to ask for your help to set up
>>> pgAdmin4 in server mode under Apache with WSGI.  I'm running Ubuntu 16.04
>>> Server and installing pgAdmin4 version 1.6 with Python 2.7.12.  A couple of
>>> issues are getting in the way.
>>>
>>>
>>>
>>> *Issue #1  Installation*
>>>
>>>
>>>
>>> I struggled to install pgAdmin4 with the online documentation, being
>>> unfamiliar with Python and WSGI.  I followed the instructions on the
>>> pgAdmin website but I was not getting the pgAdmin page on my browser.
>>>
>>>
>>>
>>> I turned on debug logging in apache and was getting the following
>>> (details redacted):
>>>
>>>
>>>
>>> ####
>>>
>>> mod_wsgi (pid): Target WSGI script '/opt/pgadmin4/virtualenv/lib/
>>> python2.7/site-packages/pgadmin4/pgAdmin4.wsgi' cannot be loaded as
>>> Python module.
>>>
>>> mod_wsgi (pid): Exception occurred processing WSGI script
>>> '/opt/pgadmin4/virtualenv/lib/python2.7/site-packages/pgadmin4/pgAdmin4.wsgi'.
>>>
>>>
>>> Traceback (most recent call last):
>>>
>>> File 
>>> "/opt/pgadmin4/virtualenv/lib/python2.7/site-packages/pgadmin4/pgAdmin4.wsgi",
>>> line 17, in <module>
>>>
>>>      import config
>>>
>>>    File 
>>> "/opt/pgadmin4/virtualenv/lib/python2.7/site-packages/pgadmin4/config.py",
>>> line 24, in <module>
>>>
>>>      from pgadmin.utils import env, IS_PY2, IS_WIN, fs_short_path
>>>
>>>    File 
>>> "/opt/pgadmin4/virtualenv/lib/python2.7/site-packages/pgadmin4/pgadmin/__init__.py",
>>> line 17, in <module>
>>>
>>>      from flask import Flask, abort, request, current_app, session
>>>
>>>  ImportError: No module named flask
>>>
>>> ####
>>>
>>>
>>>
>>> But flask *was* installed in the virtual environment!  I also ran
>>> setup.py within the virtual environment.  After hours of reading forum and
>>> mailing list posts, scanning error logs, and trying things, I was able to
>>> get to the pgAdmin4 landing page.  As best I can tell, the issue was that I
>>> installed pgAdmin4 in a virtual environment, under
>>> /opt/pgadmin4/virtualenv, but apache2 wasn't using that virtual
>>> environment.  The solution was to add the following to pgAdmin4.wsgi right
>>> before "import config":
>>>
>>>
>>>
>>> activate_this = '/opt/pgadmin4/virtualenv/bin/activate_this.py'
>>>
>>> execfile(activate_this, dict(__file__=activate_this))
>>>
>>>
>>>
>>> Is this the right solution, or is there a better fix to this?  Note that
>>> the download instructions of the website recommend installing pgAdmin
>>> inside a virtual environment (I had to learn what that was and how to set
>>> it up), and the Server Setup instructions in the documentation don't
>>> mention the need to add these lines.
>>>
>>>
>>>
>>> If this is the right solution, it would help to clarify in the
>>> documentation, and perhaps to add the hint to the error log.  I'm including
>>> this here hoping that others with the same problem will find this post and
>>> it will save them hours of troubleshooting.   A detailed walk-through in
>>> the documentation would've been super helpful.  If you'd like, I can share
>>> my setup as a walk-through for posting on the website once I get it all
>>> running well.
>>>
>>>
>>>
>>>
>>>
>>> *Issue #2  Hosting within web subdirectory*
>>>
>>>
>>>
>>> I want to host pgAdmin within a web subdirectory, e.g.
>>> example.com/pgadmin, since the server has a website on root, e.g.
>>> example.com.  I have the following apache site configuration (details
>>> redacted):
>>>
>>>
>>>
>>> <IfModule mod_ssl.c>
>>>
>>>         <VirtualHost _default_:443>
>>>
>>>                 ServerName ***
>>>
>>>                 ServerAdmin ***
>>>
>>>                 DocumentRoot /var/www/html
>>>
>>>                 ErrorLog ${APACHE_LOG_DIR}/error.log
>>>
>>>                 CustomLog ${APACHE_LOG_DIR}/access.log combined
>>>
>>>
>>>
>>>                 SSLEngine on
>>>
>>>                 SSLCertificateFile      ***
>>>
>>>                 SSLCertificateKeyFile   ***
>>>
>>>                 SSLCACertificateFile ***
>>>
>>>
>>>
>>>                 WSGIDaemonProcess pgadmin processes=1 threads=25
>>>
>>>                 WSGIScriptAlias /pgadmin /opt/pgadmin4/virtualenv/lib/p
>>> ython2.7/site-packages/pgadmin4/pgAdmin4.wsgi
>>>
>>>
>>>
>>>                 <Directory /opt/pgadmin4/virtualenv/lib/p
>>> ython2.7/site-packages/pgadmin4>
>>>
>>>                         WSGIProcessGroup pgadmin
>>>
>>>                         WSGIApplicationGroup %{GLOBAL}
>>>
>>>                         AllowOverride None
>>>
>>>                         Require all granted
>>>
>>>                 </Directory>
>>>
>>>                 <Location "/pgadmin">
>>>
>>>                         SSLVerifyClient require
>>>
>>>                         SSLVerifyDepth 1
>>>
>>>                 </Location>
>>>
>>>         </VirtualHost>
>>>
>>> </IfModule>
>>>
>>>
>>>
>>> This gets me the pgAdmin landing page, but nothing works.  Clicking on
>>> "Add New Server" does nothing.  Clicking on "Configure pgAdmin" opens up a
>>> dialog that says "Category is not selected."  Nothing shows up in the
>>> Browser.
>>>
>>>
>>>
>>> If I change the apache config to host under / instead of under /pgadmin,
>>> things do work.  I see the "Servers" node in the browser, and the Create
>>> Server dialog pops up when I click on "Add New Server".  I am able to
>>> connect to the database.
>>>
>>>
>>>
>>> What configuration changes are necessary to get pgAdmin to work within a
>>> subdirectory, e.g. /pgadmin?
>>>
>>>
>>>
>>>
>>>
>>> *Issue #3  Using peer authentication*
>>>
>>>
>>>
>>> Is there a way to use peer authentication without passwords?  I had to
>>> setup the connection without SSL and connecting to localhost, with a
>>> password.  I'm already protecting the landing page with client certificate
>>> authentication, and pgAdmin itself requires password authentication, so I
>>> figure another password isn't necessary.  (Right?)  The documentation says
>>> "On Unix based systems, the address field may be left blank to use the
>>> default PostgreSQL Unix Domain Socket on the local machine..." but pgAdmin
>>> is requiring me to enter a host name in the connection tab or a host
>>> address in the advanced tab.
>>>
>>>
>>>
>>> Should I use SSL for traffic within the server (between the database and
>>> the client) if I'm not sharing the server with anyone?
>>>
>>>
>>>
>>> Any other configuration suggestions or tips are welcome.
>>>
>>>
>>>
>>> Thanks in advance for your help.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> Regards,
>>>
>>> Gabriel
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>

Reply via email to