Files
postgresql/customer/usr/local/bin/environment.sh
T

120 lines
4.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Ver: 1.3 by Endial Fang (endial@126.com)
#
# 应用环境变量定义及初始化
export ENV_DEBUG=${ENV_DEBUG:-false}
export ALLOW_ANONYMOUS="${ALLOW_ANONYMOUS:-no}"
# 通过读取变量名对应的`*_FILE`文件,获取变量值
# 变量优先级: *_FILE > 传入变量 > 默认值
app_env_file_lists=(
PG_POSTGRES_PASSWORD
PG_PASSWORD
PG_REPLICATION_PASSWORD
)
for env_var in "${app_env_file_lists[@]}"; do
file_env_var="${env_var}_FILE"
if [[ -n "${!file_env_var:-}" ]]; then
export "${env_var}=$(< "${!file_env_var}")"
unset "${file_env_var}"
fi
done
unset app_env_file_lists
# 应用路径参数(Dockerfile 已定义:APP_NAME、APP_VER,可能定义 APP_USER、APP_EXEC
export APP_EXEC="${APP_EXEC:-${APP_NAME}}"
export APP_USER="${APP_USER:-${APP_NAME}}"
export APP_GROUP="${APP_GROUP:-${APP_USER}}"
export APP_HOME="${APP_HOME:-/srv/${APP_NAME}}"
export APP_BASE="${APP_BASE:-/usr/local/${APP_NAME}}"
export APP_DEF_DIR="${APP_BASE}/etc/${APP_NAME}"
export APP_CONF_DIR="/srv/${APP_NAME}/conf"
export APP_DATA_DIR="/srv/${APP_NAME}/data"
export APP_CERT_DIR="/srv/${APP_NAME}/cert"
export APP_LOG_DIR="/srv/${APP_NAME}/log"
export APP_CACHE_DIR="/var/cache/${APP_NAME}"
export APP_RUN_DIR="/var/run/${APP_NAME}"
export PGDATA="${PGDATA:-${APP_DATA_DIR}}"
export TZ=${TZ:-"Asia/Shanghai"}
export PG_CONF_FILE="${PG_CONF_FILE:-${PGDATA}/postgresql.conf}"
export PG_PID_FILE="${PG_PID_FILE:-${PGDATA}/postmaster.pid}"
export PG_INIT_MAX_TIMEOUT=${PG_INIT_MAX_TIMEOUT:-60}
export PG_REPLICATION_MODE="${PG_REPLICATION_MODE:-primary}"
if [[ "${PG_REPLICATION_MODE}" == "primary" ]]; then
export PG_SYNCHRONOUS_REPLICAS_NUM="${PG_SYNCHRONOUS_REPLICAS_NUM:-0}"
export PG_SYNCHRONOUS_REPLICAS_METHOD="${PG_SYNCHRONOUS_REPLICAS_METHOD:-}"
export PG_SYNCHRONOUS_REPLICAS_NAMES="${PG_SYNCHRONOUS_REPLICAS_NAMES:-\*}"
export PG_CFG_MAX_WAL_SENDERS="${PG_CFG_MAX_WAL_SENDERS:-10}"
export PG_CFG_WAL_LEVEL="${PG_CFG_WAL_LEVEL:-logical}"
export PG_CFG_WAL_LOG_HINTS="${PG_CFG_WAL_LOG_HINTS:-on}"
elif [[ "${PG_REPLICATION_MODE}" == "standby" ]]; then
export PG_REPLICATION_APP_NAME=${PG_REPLICATION_APP_NAME:-cvcluster}
export PG_REPLICATION_HOST="${PG_REPLICATION_HOST:-}"
export PG_REPLICATION_PORT="${PG_REPLICATION_PORT:-5432}"
export PG_REPLICATION_USER="${PG_REPLICATION_USER:-}"
export PG_REPLICATION_PASSWORD="${PG_REPLICATION_PASSWORD:-}"
export PG_REPLICATION_CONNECT_TIMEOUT="${PG_REPLICATION_CONNECT_TIMEOUT:-10}"
# 配置允许从备机备份,参考:http://www.postgres.cn/docs/9.4/app-pgbasebackup.html
export PG_CFG_FULL_PAGE_WRITES="${PG_CFG_FULL_PAGE_WRITES:-on}"
export PG_CFG_HOT_STANDBY="${PG_CFG_HOT_STANDBY:-on}"
export PG_CFG_MAX_WAL_SENDERS="${PG_CFG_MAX_WAL_SENDERS:-16}"
fi
# 应用配置参数
export PG_ENABLE_LDAP="${PG_ENABLE_LDAP:-no}"
if [[ ${PG_ENABLE_LDAP} == yes ]]; then
export PG_LDAP_URL="${PG_LDAP_URL:-}"
export PG_LDAP_PREFIX="${PG_LDAP_PREFIX:-}"
export PG_LDAP_SUFFIX="${PG_LDAP_SUFFIX:-}"
export PG_LDAP_SERVER="${PG_LDAP_SERVER:-}"
export PG_LDAP_PORT="${PG_LDAP_PORT:-}"
export PG_LDAP_SCHEME="${PG_LDAP_SCHEME:-}"
export PG_LDAP_TLS="${PG_LDAP_TLS:-}"
export PG_LDAP_BASE_DN="${PG_LDAP_BASE_DN:-}"
export PG_LDAP_BIND_DN="${PG_LDAP_BIND_DN:-}"
export PG_LDAP_BIND_PASSWORD="${PG_LDAP_BIND_PASSWORD:-}"
export PG_LDAP_SEARCH_ATTR="${PG_LDAP_SEARCH_ATTR:-}"
export PG_LDAP_SEARCH_FILTER="${PG_LDAP_SEARCH_FILTER:-}"
fi
export PG_INITDB_ARGS="${PG_INITDB_ARGS:-}"
export PG_INITDB_WAL_DIR="${PG_INITDB_WAL_DIR:-${PGDATA}/pg_wal}"
export PG_USER_CONNECTION_LIMIT="${PG_USER_CONNECTION_LIMIT:-}"
export PG_DB_CONNECTION_LIMIT="${PG_DB_CONNECTION_LIMIT:-}"
export PG_USER_IP4_RANGE="${PG_IP4_RANGE:-0.0.0.0/0}"
export PG_USER_IP6_RANGE="${PG_IP6_RANGE:-::0/0}"
export PG_REPLICATION_IP4_RANGE="${PG_REPLICATION_IP4_RANGE:-${PG_USER_IP4_RANGE}}"
export PG_REPLICATION_IP6_RANGE="${PG_REPLICATION_IP6_RANGE:-${PG_USER_IP6_RANGE}}"
export PG_USERNAME="${PG_USERNAME:-postgres}"
export PG_PASSWORD="${PG_PASSWORD:-}"
export PG_DATABASE="${PG_DATABASE:-postgres}"
export PG_POSTGRES_PASSWORD="${PG_POSTGRES_PASSWORD:-}"
# 使用自定义用户名(非"postgres")时的管理员密码
[[ "${PG_USERNAME}" == "postgres" ]] && export PG_POSTGRES_PASSWORD="${PG_PASSWORD}"
# 用来执行初始化数据库命令的用户名及密码
export PG_INITSCRIPTS_USERNAME="${PG_INITSCRIPTS_USERNAME:-${PG_USERNAME}}"
export PG_INITSCRIPTS_PASSWORD="${PG_INITSCRIPTS_PASSWORD:-${PG_PASSWORD}}"
# 内部变量
# 个性化变量
export PG_CFG_DATA_DIRECTORY="${PGDATA}"
export PG_CFG_HBA_FILE="${PGDATA}/pg_hba.conf"
export PG_CFG_IDENT_FILE="${PGDATA}/pg_ident.conf"
export PG_CFG_EXTERNAL_PID_FILE="${APP_RUN_DIR}/postgresql.pid"
export PG_CFG_LOG_DIRECTORY="${APP_LOG_DIR}"