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. > > > *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/ > python2.7/site-packages/pgadmin4/pgAdmin4.wsgi > > > > <Directory /opt/pgadmin4/virtualenv/lib/ > python2.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