2 sudo adduser php_
"$pool" www-
"$site"
3 sudo adduser www-
"$site"-tls www-
"$site"
4 sudo adduser php_
"$pool" postgres-data
6 sudo
install -m 640 -o root
-g postgres
/dev
/stdin \
7 /etc
/davical
/administration.yml
<<-EOF
8 admin_db_host: /run/postgresql
10 admin_db_user: davical_dba
11 app_db_user: davical_app
14 sudo sv start postgres
15 while ! sudo
-u postgres psql
</dev
/null
18 # FROM: /usr/share/davical/dba/create-database.sh
19 IFS
= read -r ADMINPW
<<-EOF
20 $(sudo cat /root/.davical_pass)
22 AWLDIR
="/usr/share/awl"
23 DBADIR
="/usr/share/davical/dba"
26 export AWL_APPUSER
=${pool}_app
27 export AWL_DBAUSER
=${pool}_dba
28 export DBA
="-U ${AWL_DBAUSER}"
30 # Get the major version for PostgreSQL
31 export DBVERSION
="`sudo -u postgres psql -qXAt -c "SELECT version
();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
33 # Hide all the annoying NOTICE... messages
34 export PGOPTIONS
='--client-min-messages=warning'
36 "$tool"/local
/postgresql-role-create
"$pool"
37 "$tool"/local
/postgresql-user-create
"${AWL_APPUSER}"
38 "$tool"/local
/postgresql-user-create
"${AWL_DBAUSER}"
40 if test ! "$pool" = "$(sudo -u postgres psql -AqtX -c \
42 FROM pg_catalog.pg_database
43 WHERE datname
= '$pool'
46 "$tool"/local
/postgresql-database-create
"$pool" "${AWL_DBAUSER}"
47 # Load the AWL base tables and schema management tables
48 sudo
-u postgres psql
-qXAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1
49 sudo -u postgres psql -qXAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1
50 # Load the DAViCal tables
51 sudo
-u postgres psql
-qXAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1
54 sudo -u postgres psql -AqtX "$pool" <<-EOF
56 GRANT $pool TO $AWL_DBAUSER;
57 GRANT USAGE ON SCHEMA pg_catalog TO $AWL_DBAUSER;
58 GRANT $pool TO $AWL_APPUSER;
59 GRANT CONNECT ON DATABASE $pool TO $AWL_APPUSER;
60 GRANT USAGE ON SCHEMA pg_catalog TO $AWL_APPUSER;
61 GRANT SELECT ON pg_catalog.pg_attribute TO $AWL_APPUSER;
62 GRANT SELECT ON pg_catalog.pg_class TO $AWL_APPUSER;
63 GRANT SELECT ON pg_catalog.pg_type TO $AWL_APPUSER;
66 # Set permissions for the application DB user on the database
67 sudo -u postgres ${DBADIR}/update-davical-database \
68 --appuser "${AWL_APPUSER}" \
69 --dbname "${DBNAME}" \
71 --owner "${AWL_DBAUSER}"
73 # Load the required base data
74 test 1 = "$
(sudo
-u postgres psql
-AqtX -U davical_dba davical \
75 -c "SELECT role_no FROM roles WHERE role_no = 1;")" ||
76 sudo -u postgres psql -qXAt ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}"
77 sudo
-u postgres psql
-qX ${DBA} -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
79 eval home="~www-
$pool"
80 sudo install -m 640 -o root -g php_"$pool" \
81 "$tool"/etc/davical/davical."$local_domainname"-conf.php \
82 /etc/davical/davical."$local_domainname"-conf.php