В тази статия ще Ви покажем как да настроите PostgreSQL сървър за бази данни чрез платформата за Уеб приложения (WebApps).
Важно: Ако нямате раздел "Уеб приложения" във Вашия Контролен панел, тогава инструкциите в тази статия не са валидни за Вашия акаунт и сървър. Можете да ни пишете за повече информация и съдействие.
"SSH достъп" и "Мрежови инструменти" трябва да са активирани за Вашия акаунт през раздел "SSH Достъп" на Контролния панел.
Ако искате бързо да настроите и стартирате PostgreSQL сървър на Вашия акаунт, изтеглете този скрипт за настройка на PostgreSQL на Вашия акаунт и го изпълнете. Скриптът ще създаде и настрои WebApps проект и PostgreSQL сървър на Вашия акаунт, така че да можете да го използвате веднага.
Трябва да добавите права за изпълнение на скрипта след изтеглянето му на Вашия акаунт и след това да го изпълните. Можете да направите това със следните команди:
mv 4166.sh setup_postgresql.sh
chmod 755 setup_postgresql.sh
./setup_postgresql
.sh postgres1
В този случай можете да пропуснете стъпките за "Настройка на PostgreSQL Server" и "Създаване на WebApps проект" от тази статия, а можете да продължите директно към създаването на бази данни и роли.
На сървъра има поддръжка за PostgreSQL. Трябва само да настроите PostgreSQL сървъра да използва Вашите бази данни от WebApps платформата.
За целта трябва първо да създаде директориите за съхранение на данните Ви на сървъра. Можете да използвате "private/" директорията, която е налична във всеки хостинг акаунт:
sureapp_project="postgres1"
pg_app_dir="/home/$USER/private/$sureapp_project"
mkdir -m 0700 "$pg_app_dir"
mkdir -m 0700 "$pg_app_dir/run"
mkdir -m 0700 "$pg_app_dir/sureapp"
touch "$pg_app_dir/.psql_history"
chmod 0600 "$pg_app_dir/.psql_history"
Следващата стъпка е да инициализирате сървъра за бази данни и да добавите основен потребител (superuser). По подразбиране потребителското име на основния потребител ще е същото като потребителското име на Вашия хостинг акаунт (напр. "example"):
superuser_pass="$(pwgen 24 1)"
touch "$pg_app_dir/.superuser-pwfile"
chmod 0600 "$pg_app_dir/.superuser-pwfile"
echo "$superuser_pass" > "$pg_app_dir/.superuser-pwfile"
for pg_install_dir in $(find /usr/lib/postgresql -maxdepth 1 -type d -o -type l 2>/dev/null | sort -Vr)
do
[ -x "$pg_install_dir/bin/initdb" ] && break
done
"$pg_install_dir/bin/initdb" -D "$pg_app_dir/pgdata" --auth=md5 --pwfile="$pg_app_dir/.superuser-pwfile" && rm -f "$pg_app_dir/.superuser-pwfile"
touch "$pg_app_dir/.pgpass"
chmod 0600 "$pg_app_dir/.pgpass"
printf "*:*:*:%s:%s\n" "$USER" "$superuser_pass" > "$pg_app_dir/.pgpass"
Сега трябва да настроите PostgreSQL сървъра да слуша за заявки чрез UNIX сокет на правилното място във Вашия акаунт:
sed -i "s~^#*unix_socket_directories = .*\(\s*#.*\)~unix_socket_directories = '$pg_app_dir/run' \1~g" "$pg_app_dir/pgdata/postgresql.conf"
sed -i "s~^#*unix_socket_permissions = .*\(\s*#.*\)~unix_socket_permissions = 0700 \1~g" "$pg_app_dir/pgdata/postgresql.conf"
sed -i "s~^#*listen_addresses = .*\(\s*#.*\)~listen_addresses = '' \1~g" "$pg_app_dir/pgdata/postgresql.conf"
За да направите стартирането на PostgreSQL услугата по-лесно, можете да използвате следните команди за създаването на стартов скрипт:
printf '#!/bin/sh\nexec %s/bin/postgres -D %s/pgdata\n' "$pg_install_dir" "$pg_app_dir" > "$pg_app_dir/start.sh"
chmod 0700 "$pg_app_dir/start.sh"
За да използвате различни инструменти за управление на PostgreSQL, трябва да направите следните промени във Вашия .bashrc
файл:
grep -q '^PGHOST=' "/home/$USER/.bashrc" || cat <<BASHRC >> "/home/$USER/.bashrc"
# $sureapp_project client configuration
PGHOST="$pg_app_dir/run"
export PGHOST
PGPASSFILE="$pg_app_dir/.pgpass"
export PGPASSFILE
PSQL_HISTORY="$pg_app_dir/.psql_history"
export PSQL_HISTORY
BASHRC
. "/home/$USER/.bashrc"
За да стартирате сървър за бази данни, първо трябва да настроите PostgreSQL услугата. Можете да направите това по два начина:
Ако изберете да създадете приложението чрез хостинг Контролния панел, използвайте следните настройки:
След като създадете и активирате приложението, ще можете да използвате новия сървър за PostgreSQL бази данни.
WebApps проектите могат да се управляват чрез "sureapp" CLI инструмента. За да създадете и стартирате нов PostgreSQL проект, използвайте следните команди:
sureapp project create \
--engine "custom" \
--engine-version "-" \
--release-dir "$pg_app_dir/sureapp" \
--start-cmd "$pg_app_dir/start.sh" \
"$sureapp_project"
sureapp service manage --enable "$sureapp_project"
sureapp service manage --start "$sureapp_project"
PostgreSQL сървърът ще е стартиран и наличен за употреба след изпълнение на горните команди.
След като сървърът е започнал да работи, трябва да добавите нов потребител и база данни за Вашето приложение със следните SSH команди:
. "/home/$USER/.bashrc" # For $PGHOST
createuser -e -DEPRS "pgusername"
createdb -e -O "pgusername" "pgdatabase"
Трябва да заместисте потребителското име и името на базата данни в примера с детайлите, които искате да използвате във Вашето приложение.
На нашите сървъри автоматично се създават резервни копия веднъж на всеки 12 часа, така че не бива да се тревожите за загуба на данни. Тези резервни копия ще Ви позволят да възстановите Вашите данни от системно резервно копие, ако нещо се обърка със Вашия сайт.
Системите за бази данни като PostgreSQL и MySQL съхраняват данните си на сървъра по специален начин, така че трябва да се използва по-специален подход за създаване на резервни копия, така че те да са консистентни и използваеми.
За MySQL бази данни, които са налични по подразбиране за всички хостинг акаунти, създаването на резервни копия е автоматизирано от хостинг Контролния панел. Всички MySQL данни се архивират на определен интервал от нашата система и те могат да се възстановят лесно чрез раздел "Възстановяване" на хостинг Контролния панел.
За PostgreSQL бази данни, работещи чрез WebApps платформата за уеб приложения, трябва да създадете отделна процедура за създаване на резервни копия. Следния блок с код ще създаде два скрипта във Вашия WebApps проект (backup.sh
и restore.sh)
, с които ще можете да създавате и да възстановявате данни от резервни копия, a aко сте използвали метода за бърза настройка, тези файлове вече ще са създадени за Вашия проект:
mkdir -m 0700 "$pg_app_dir/backup"
cat <<BACKUP_SH > "$pg_app_dir/backup.sh"
#!/bin/sh
set -e
die() { printf "%s\n" "\$*" 1>&2 && exit 1; }
PGPASSFILE="$pg_app_dir/.pgpass"
export PGPASSFILE
"$pg_install_dir/bin/pg_dumpall" --clean --host "$pg_app_dir/run" | gzip --stdout -- > "$pg_app_dir/backup/pgdump.sql.gz" || die "PostgreSQL backup failed: $sureapp_project"
BACKUP_SH
chmod 700 "$pg_app_dir/backup.sh"
cat <<RESTORE_SH > "$pg_app_dir/restore.sh"
#!/bin/sh
set -e
die() { printf "%s\n" "\$*" 1>&2 && exit 1; }
PGPASSFILE="$pg_app_dir/.pgpass"
export PGPASSFILE
archive="$pg_app_dir/backup/pgdump.sql.gz"
[ -f "\$archive" ] || die "Backup file does not exist: \$archive"
zgrep -m1 "Dumped" "\$archive" || die "Backup file does not contain PostgreSQL data: \$archive"
gzip --decompress --stdout "\$archive" | "$pg_install_dir/bin/psql" --quiet --host "$pg_app_dir/run" postgres
RESTORE_SH
chmod 700 "$pg_app_dir/restore.sh"
След като са създадени тези скриптове, можете да настроите планирана задача, която изпълнява скрипта "backup.sh
" веднъж на 12 часа чрез раздел "Cron Jobs" на хостинг Контролния панел.
Тази крон задача ще създава резервно копие с име "pgdump.sql.gz
", което ще се презаписва при всяко изпълнение на скрипта. По този начин всяко системно резервно копие ще съдържа най-новото копие на файла.
В най-добрия случай няма да Ви се наложи да използвате restore.sh
скрипта. Ако все пак Ви се наложи, той ще премахне всички данни от Вашата PostgreSQL база данни и ще възстанови в нея данните от архива с име "pgdump.sql.gz
".
Ако желаете да възстановите данни от определено резервно копие, можете да възстановите файла "pgdump.sql.gz
" от автоматично създаден системен архив и след това да изпълните restore.sh
скрипта чрез командата:
./restore.sh
Ако ще използвате PHP приложение с PostgreSQL база данни, трябва да промените конфигурационния файл за PHP (php.ini
). Може да пропуснете тези стъпки, ако няма да използвате PHP.
PHP може да използва две библиотеки за свързване с PostgreSQL бази данни. Те са разширение за PostgreSQL бази данни и по-абстрактния PDO драйвър за PostgreSQL.
Трябва да активирате правилното PHP разширение за Вашето софтуерно приложение чрез раздел "PHP настройки" на хостинг Контролния панел, следвайки тези стъпки:
Разширенията могат да се активират и ръчно чрез добавяне на съотвения ред в PHP конфигурационен файл (php.ini):
Разширение PostgreSQL:
extension = pgsql.so
PDO драйвър за PostgreSQL:
extension = pdo_pgsql.so
Инструкции за промяна на други PHP настройки за Вашия акаунт можете да откриете в статията ни "Промяна на PHP настройките за Вашия акаунт".
По подразбиране PostgreSQL сървърът е настроен да приема само локални връзки. Има начин да активирате външни връзки, ако желаете да се свържете с Вашия PostgreSQL сървър от външен сървър или чрез инструмент за управление на PostgreSQL бази данни като pgAdmin. За да активирате външните връзки, трябва да обновите два конфигурационни файла:
Във файла "pgdata/postgresql.conf" трябва да промените следните редове:
listen_addresses = '' # what IP address(es) to listen on;
port = 5432 # (change requires restart)
като настроите "listen_address" да бъде "*", а "port" да бъде порта на Вашия WebApps проект. Можете да откриете порта в раздел "Уеб приложения" на Вашия хостинг Контролен панел.
В края на файла "pgdata/pg_hba.conf" трябва да добавите следния ред:
hostallall0.0.0.0/0md5
Тези промени ще настроят Вашия PostgreSQL сървър да приема връзки от всички външни локации, ако предоставят правилно потребителско име и парола. Ако желаете да ограничите достъпа само за определен IP адрес (напр. 123.123.123.123), използвайте този ред:
host all all 123.123.123.123/32 md5
След завършване на промените, трябва да рестартирате WebApps проекта чрез раздел "Уеб приложения" на хостинг Контролния панел, за да се приложат.
Бележка: Променяйки порта в конфигурационния файл на PostgreSQL сървъра, определени функционалности/команди ще спрат да работят (напр. psql, createuser и createdb). За да можете да ги използвате, ще трябва да задавате новия порт в командите:
psql -p <WebApp port>
Минималният срок за поръчка на споделен хостинг е 12 месеца. Нужно е пълно предплащане за целия период на договора. 100-дневен период на рекламация. Цената за регистрация на домейн и издаване на SSL сертификат не подлежи на възстановяване в случай на предсрочно прекратяване на договора.
© 1993-2024 ICDSoft.
Условия за ползване
|
Правна информация
|
Поверителност
|
Условия за риселъри