Steps to install pgAdmin4 in any machine
- Make sure you have
python3andpython2.7installed. Otherwise, install then running:
sudo apt-get install python3 python2.7- Check if
~/.local/binis in your$PATHenvironment variable, otherwise, run in your console:
echo "PATH=$PATH:~/.local/bin" >> ~/.bashrc
source ~/.bashrc-
Install apt requirements by running
make install-deps-apt(your user must have sudo privileges) -
Find the latest pgAdmin4 release at https://ftp.postgresql.org/pub/pgadmin/pgadmin4/
- it should be under v3.1/pip/pgadmin4*****.whl
-
Replace the value of the link in Makefile PIP_URL variable with the link to the latest release
-
At this point,
fabricshould have been installed in your machine. Use fabric tasks to install for python2 or 3
fab install_python2or
fab install_python3The above scripts will install pgAdmin4 and its requirements, and copy the config.py file as config_local.py. Make any desired changes in config_local.py to customize the app's behavior.
Since the release 2.x, pgAdmin4 will set SERVER_MODE = True by default in its config file. If you want to run in desktop mode, remember to edit config_local.py setting SERVER_MODE = False. Otherwise, pgAdmin4 will try to create its local database in /var/lib/pgadmin instead of ~/.pgadmin, and it will crash because you lack permissions.
Start pgAdmin4 by running
fab launchThen open your browser at http://127.0.0.1:5050
Running with uWSGI allows you to spawn multiple process exposing pgAdmin4.
Start pgAdmin4 as an uWSGI process by running
fab runwsgihttpThis will spawn four uWSGI processes exposing them at http://127.0.0.1:5050
however uWSGI shines when you run it behing a reverse proxy such as Nginx
Let's say you want to run pgAdmin4 on a production server. You should expose an nginx virtual host at port 80.
Said vhost configuration could be at /etc/nginx/sites-enabled/pgadmin.mydomain.com with the following contents:
upstream pgadmin {
server 127.0.0.1:5050;
}
server {
server_name pgadmin.mydomain.com
listen 80;
charset utf-8;
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass pgadmin;
}
}Then restart the nginx server with
sudo service nginx restartNginx will then forward incoming requests to internal port 5050 which you arent exposing to the internet.
Having done this, you can manually run uWSGI in socket mode *manually by running:
fab runwsgisocketOR you could run uWSGI as a service, so you don't need to keep the manually started process running.
Formerly, this README has some steps detailing how to manually create a uWSGI service. However, I found out it requires a lot of tinkering according to each machine particular configuration and its details are beyond the scope of the current repo.
I'd suggest using supervisord to run the above uWSGI scripts as a service.