Installing Postgres
sudo pacman -S postgresqlSetting up data directory within my /home partition:
mkdir -p /home/myuser/postgresdb_data/data
sudo chown -R postgres:postgres /home/myuser/postgresdb_dataInitializing data:
sudo -iu postgres
initdb -D /home/myuser/postgresdb_data/dataEdit the systemd service file:
sudo systemctl edit postgresqlAdd the following:
[Service]
Environment=PGROOT=/home/myuser/postgresdb_data
PIDFile=/home/myuser/postgresdb_data/data/postmaster.pid
ProtectHome=falseEdit /home/myuser/postgresdb_data/data/postgresql.conf to listen exclusively through UNIX sockets and we'll also set password encryption to scram-sha-256:
...
listen_addresses = ''
...
password_encryption = scram-sha-256
...Edit /home/myuser/postgresdb_data/data/pg_hba.conf to restrict access rights to the database superuser and configure access for our django user:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all postgres peer
local geodjango db_user scram-sha-256Installing PostGIS
sudo pacman -S postgisCreate the spatial database:
sudo -iu postgres
createdb geodjango
psql geodjango
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;Create The Database User
CREATE USER db_user WITH PASSWORD 'secret-password';
ALTER ROLE db_user SET client_encoding TO 'utf8';
ALTER ROLE db_user SET default_transaction_isolation TO 'read committed';
ALTER ROLE db_user SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE geodjango TO db_user;Errors
At this point if I try to interact with the database, I get an error about a missing pgrouting file so apparently I'm still missing that part.
ERROR: could not open extension control file "/usr/share/postgresql/extension/pgrouting.control": No such file or directoryInstalling pgRouting
git clone git://github.com/pgRouting/pgrouting.git
cd pgrouting
git checkout v3.1.3
mkdir build
cd build
cmake ..Ah shit, another error:
CMake Error at /usr/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Boost (missing: Boost_INCLUDE_DIR) (Required is at least
version "1.53.0")
Call Stack (most recent call first):
/usr/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.20/Modules/FindBoost.cmake:2345 (find_package_handle_standard_args)
CMakeLists.txt:76 (find_package)Install boost
sudo pacman -S boostBack to installing pgRouting:
cd pgrouting/build
cmake ..
make
sudo make installOk sweet, now to create the extension:
sudo -iu postgres
psql geodjango
CREATE EXTENSION pgrouting;Done!