Hi Dave, Regarding User management related issue RM2641 <https://redmine.postgresql.org/issues/2641> is already logged and also I have sent patch for the same.
-- *Harshal Dhumal* *Sr. Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Mon, Sep 18, 2017 at 1:34 PM, Dave Page <dp...@pgadmin.org> wrote: > > > On Sat, Sep 16, 2017 at 3:14 PM, Gabriel Sánchez < > gabrielesanc...@gmail.com> wrote: > >> >> >> On Sat, Sep 16, 2017 at 6:47 AM, Surinder Kumar < >> surinder.ku...@enterprisedb.com> wrote: >> >>> 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/li >>>> b/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/pgad >>>> min4/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/py >>> 27/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/pgadmin >>> 4/pgAdmin4.wsgi >>> >> >> Got it working with your help! Thanks very much! It looks great! >> >> >> >>> >>> If you still having any issue, let us know. >>> >> >> Three things: >> >> 1. I am unable to add another pgAdmin user. The dialog opens, and I can >> type in the e-mail, password, and confirm-password, but the role drop-down >> is empty and disabled, and there is no way to save a new user. >> >> 2. Playing around with this, I set myself to user instead of >> administrator, and now I can't switch myself back to administrator. Is >> there a recommended way to modify the user database with shell access? I'd >> use this to switch myself back to administrator and/or get around not being >> able to add a user with the GUI. (For now I'll clear the DB file and rerun >> setup.py, but I'd like to have a way that doesn't erase the server >> definitions or other users that are working well.) >> >> 3. I'm still wondering about issue #3 in my original post. The >> documentation says that on the dialog to add a server "On Unix based >> systems, the address field may be left blank to use the default PostgreSQL >> Unix Domain Socket on the local machine", but the dialog forces me to enter >> either a host name/address on the Connection tab or a host address on the >> Advanced tab. These seem to trigger host rules for authentication in >> pg_hba. Since I have peer authentication enabled for localhost, with psql >> I don't need to enter a password. Is there a way to use the unix socket >> (local rules for authentication in pg_hba)? >> > > Surinder, please look into these issues ASAP: on 1 & 2, obviously it > should be possible to add users, and it should be impossible to change the > role of the current user to a non-administrator. > > Thanks. > > >> >> >> >> >> >>> >>>> >>>> >>>>> >>>>>> >>>>>> *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/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 >>>>> >>>> >>>> >>> >> > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >