Install and configure PostgreSQL
I. Install and configure PostgreSQL
II. Install and configure PGadmin
0. Update the system (Для начала обновите индекс пакетов вашего сервера, если вы не делали этого последнее время):
sudo apt update -y
I. Install and configure PostgreSQL
1. Install required packages(postgres) Since this is your first time using apt
in this session, refresh your local package index. Then, install the Postgres package along with a -contrib
package that adds some additional utilities and functionality:
Чтобы добавить в систему официальный PPA от разработчиков PostgreSQL:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Adding PostgreSQL apt repository to System:
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Далее обновите списки пакетов, чтобы получить самую новую доступную версию:
sudo apt update -y
Установка PostgreSQL из PPA или официальных репозиториев выглядит одинаково:
sudo apt -y install postgresql postgresql-contrib
Now that the software is installed, we can go over how it works and how it may be different from similar database management systems you may have used.
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04
После завершения установки вы можете убедиться, что служба PostgreSQL активна. Для чего в командной строке наберите:
sudo systemctl is-active postgresql
Также, посмотрите, включена ли служба:
sudo systemctl is-enabled postgresql
И наконец, вы можете увидеть статус службы PostgreSQL:
sudo systemctl status postgresql
https://ruvds.com/ru/helpcenter/postgresql-pgadmin-ubuntu/
Подключитесь к системе с помощью учётной записи postgres
:
sudo su - postgres или sudo -i -u postgres
Подключившись, выполните команду psql
:
psql
источник: losst.ru/ustanovka-postgresql-ubuntu-16-04
II. Install and configure PGadmin
pgAdmin — это платформа с открытым исходным кодом для администрирования и разработки для PostgreSQL и связанных с ней систем управления базами данных. Платформа написана на Python и jQuery и поддерживает все функции PostgreSQL. Вы можете использовать pgAdmin для любых операций, начиная с записи базовых SQL-запросов и заканчивая осуществлением мониторинга ваших баз данных и настройки продвинутых архитектур баз данных.
1. Установим следующие зависимости. Список зависимостей включает:
•libgmp3-dev
— библиотека арифметических операций с многократно увеличенной точностью;
•libpq-dev
— библиотека с файлами заголовков и статической библиотекой, которая помогает осуществлять коммуникации с бэкэндом PostgreSQL
sudo apt -y install build-essential libgmp3-dev libpq-dev python3-dev libffi-dev uwsgi-core uwsgi-plugin-python3
2. Создадим несколько директорий, где pgAdmin будет хранить данные сессий, данные хранилища и журналы:
sudo mkdir -p /var/lib/pgadmin4/sessions sudo mkdir /var/lib/pgadmin4/storage sudo mkdir /var/log/pgadmin4
2.1 Создадим обычного пользователя "sammy"
sudo useradd -c "not root user sammy" -g sudo -d /home/sammy -m -s /bin/bash sammy&& sudo passwd sammy
3. Изменим владельца этих директорий на пользователя без прав root и группу. Это необходимо, потому что первоначально они принадлежат вашему root-пользователю, но мы будем устанавливать pgAdmin из виртуальной среды, принадлежащей вашему пользователю без прав root, а процесс установки подразумевает создание ряда файлов внутри этих директорий. После завершения установки мы изменим владельца на пользователя www-data и группу, чтобы директорию можно было использовать через сеть:
sudo chown -R sammy:www-data /var/lib/pgadmin4 /var/log/pgadmin4
4. Создадим виртуальную среду и активируем ее:
sudo python3 -m venv /home/pgadmin/venv
source /home/pgadmin/venv/bin/activate
4.1 Обновим pip и пр. (Пользователь sudo)
(venv) sammy@{servername}:$ /home/pgadmin/venv/bin/python -m pip install --upgrade pip setuptools
5. Загрузим исходный код pgAdmin4.
Чтобы получить последнюю версию исходного кода, перейдем на https://www.pgadmin.org/download/pgadmin-4-python и нажмем ссылку для последней версии: https://www.postgresql.org/ftp/pgadmin/pgadmin4/v6.10/pip/
На этой странице вам необходимо скопировать ссылку на файл, которая заканчивается на .whl
, стандартный формат пакетов для дистрибутивов Python.
https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v6.10/pip/pgadmin4-6.10-py3-none-any.whl
Запустим следующую команду wget
, для загрузки файла .whl
на ваш сервер:
(venv) sammy@{servername}:$ wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v6.10/pip/pgadmin4-6.10-py3-none-any.whl
(venv) sammy@{servername}:$ /home/pgadmin/venv/bin/python -m pip install wheel
7. Затем установите пакет pgAdmin 4 с помощью следующей команды*:
(venv) sammy@{servername}:$ /home/pgadmin/venv/bin/python -m pip install pgadmin4-6.10-py3-none-any.whl
*Она отвечает за установку pgAdmin и его зависимостей. Прежде чем подключаться к вашей базе данных, необходимо внести несколько изменений в настройку программы.
8. Хотя pgAdmin был установлен на сервере, осталось несколько шагов, которые нужно выполнить, чтобы гарантировать, что в наличии все разрешения и конфигурации, необходимые для правильной работы с веб-интерфейсом.
Основной файл конфигурации pgAdmin с именем config.py
считывается перед любым другим файлом конфигурации. Его содержание можно использовать в качестве отправной точки для последующих настроек конфигурации, которые можно указать в других файлах конфигурации pgAdmin, но чтобы избежать непредвиденных ошибок, вы не должны редактировать файл config.py
самостоятельно. Мы внесем некоторые изменения конфигурации в новый файл с именем config_local.py
, который будет считываться непосредственно после основного файла.
Создайте этот файл сейчас, используя текстовый редактор. Мы будем использовать nano(заменить python3.x)
:
(venv) sammy@{servername}:$ nano /home/pgadmin/venv/lib/python3.8/site-packages/pgadmin4/config_local.py
В вашем редакторе добавьте следующее содержание:
environments/my_env/lib/python3.8/site-packages/pgadmin4/config_local.py
LOG_FILE = '/var/log/pgadmin4/pgadmin4.log' SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db' SESSION_DB_PATH = '/var/lib/pgadmin4/sessions' STORAGE_DIR = '/var/lib/pgadmin4/storage' SERVER_MODE = True ALLOW_SAVE_PASSWORD = True
Вот что делают эти пять директив*:
LOG_FILE
: данная директива определяет файл, в котором будут храниться журналы pgAdmin.SQLITE_PATH
: pgAdmin хранит данные о пользователях в базе данных SQLite, и эта директива указывает программному обеспечению PgAdmin на базу данных конфигурации. Поскольку этот файл находится в постоянной директории/var/lib/pgadmin4
, ваши пользовательские данные после обновления не будут потеряны.SESSION_DB_PATH
: указывает, какая директория будет использоваться для хранения данных сеанса.STORAGE_DIR
: определяет, где pgAdmin будет хранить другие данные, например резервные копии и сертификаты безопасности.SERVER_MODE
: установка значенияTrue
для этой директивы говорит о том, что pgAdmin должен запускаться в режиме сервера, а не в режиме настольного компьютера.
*Обратите внимание, что каждый из этих путей файла указывает на директории, созданные на шаге 1.
9. После добавления этих строк сохраните и закройте файл (нажмите CTRL + X
, а затем нажмите Y
и ENTER
). После внесения этих изменений запустите скрипт установки pgAdmin, чтобы задать учетные данные для входа (заменить python3.x):
(venv) sammy@{servername}:$ /home/pgadmin/venv/bin/python /home/pgadmin/venv/lib/python3.8/site-packages/pgadmin4/setup.py
10. После запуска этой команды вы увидите запрос на ввод адреса электронной почты и пароля. Они будут служить вашими учетными данными для последующего доступа к pgAdmin, обязательно запомните их или запишите:
Output. . . Enter the email address and password to use for the initial pgAdmin user account: Email address: username@example.com Password: Retype password:
11. После этого необходимо деактивировать вашу виртуальную среду:
(venv) sammy@{servername}:$ deactivate
12. Nginx и uwsgi запускаются под www-data:www-data, поэтому у настроек необходимо изменить владельцев командами:
sudo chown -R www-data:www-data /var/lib/pgadmin4/ /var/log/pgadmin4/ sudo chmod -R 755 /var/lib/pgadmin4/ /var/log/pgadmin4/
Источник: https://www.digitalocean.com/community/tutorials/how-to-install-configure-pgadmin4-server-mode-ru
Установка uwsgi
Для установки uwsgi необходимо выполнить команду:
sudo apt -y install uwsgi-core uwsgi-plugin-python3
(venv) sammy@{servername}:$ pip install uwsgi
[uwsgi] uid = www-data gid = www-data plugins = python3 chdir = /home/pgadmin/venv/lib/python3.8/site-packages/pgadmin4/ wsgi-file = /home/pgadmin/venv/lib/python3.8/site-packages/pgadmin4/pgAdmin4.wsgi master = true processes = 1 threads = 4 socket = /home/pgadmin/pgadmin.sock chmod-socket = 664 vacuum = true mount = /pgadmin=pgAdmin4:app manage-script-name = true
В /etc/systemd/system/ uwsgi@.service
[Unit] Description=uWSGI service unit After=syslog.target [Service] ExecStart=/home/pgadmin/venv/bin/uwsgi --ini /etc/uwsgi/%I.ini ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -INT $MAINPID Restart=always Type=notify StandardError=syslog NotifyAccess=all KillSignal=SIGQUIT [Install] WantedBy=multi-user.target
sudo service uwsgi@pgadmin start
Настройка Nginx
Для установки nginx необходимо выполнить команду:
sudo apt install nginx-full
а в директорию /etc/nginx/sites-available/ добавить настройки:
upstream pgadmin { server unix:///home/pgadmin/pgadmin.sock; } server { #Через субдомен listen 80; server_name pgadmin.site.com; access_log off; error_log off; charset utf-8; location / { include /etc/nginx/uwsgi_params; uwsgi_pass pgadmin; uwsgi_modifier1 30; } } server { #Через подпапку listen 80; server_name site.com; access_log off; error_log off; charset utf-8; location /pgadmin { include /etc/nginx/uwsgi_params; uwsgi_pass pgadmin; uwsgi_param SCRIPT_NAME /pgadmin; uwsgi_modifier1 30; } }
https://gist.github.com/rdnvndr/51ae8692bebcd02325ca7c046fe5ade2 (ответы на проблемы)
sudo chown -R www-data:www-data /home/pgadmin
sudo chown -R root:root /etc/uwsgi
sudo chmod -R 664 /etc/uwsgi
sudo chmod -R 764 /home/pgadmin sudo chmod -R 664 /home/pgadmin/pgadmin.sock
sudo chmod -R 664 /etc/systemd/system/uwsgi@.service
sudo chmod -R 764 /var/lib/pgadmin4
sudo chmod -R 764 /var/log/pgadmin4
chmod 755 /var/log/pgadmin /path/to/working_directory/lib $ chown -R www-data:www-data /var/log/pgadmin /path/to/working_directory/lib
sudo systemctl enable uwsgi@pgadmin
sudo -u postgres psql
CREATE DATABASE {project};
Создание новой роли POSTGRESQL:
CREATE USER {user} WITH PASSWORD '{password}';
ALTER ROLE {user} SET client_encoding TO 'utf8';
ALTER ROLE {user} SET default_transaction_isolation TO 'read committed'; ALTER ROLE {user} SET timezone TO 'UTC'; GRANT ALL PRIVILEGES ON DATABASE {project} TO {user};
DROP USER user_name;
ALTER TABLE table_name ALTER COLUMN column_name TYPE boolean USING column_name::boolean;
DROP TABLE [ IF EXISTS ] имя [, ...] [ CASCADE | RESTRICT ];
Вы можете вывести все таблицы, выполнив команду:
\d
Основные команды PostgreSQL в интерактивном режиме:
\connect db_name – подключиться к базе с именем db_name \du – список пользователей \dp (или \z) – список таблиц, представлений, последовательностей, прав доступа к ним \di – индексы \ds – последовательности \dt – список таблиц \dt+ — список всех таблиц с описанием \dt *s* — список всех таблиц, содержащих s в имени \dv – представления \dS – системные таблицы \d+ – описание таблицы \o – пересылка результатов запроса в файл \l – список баз данных \i – читать входящие данные из файла \e – открывает текущее содержимое буфера запроса в редакторе (если иное не указано в окружении переменной EDITOR, то будет использоваться по умолчанию vi) \d “table_name” – описание таблицы \i запуск команды из внешнего файла, например \i /my/directory/my.sql \pset – команда настройки параметров форматирования \echo – выводит сообщение \set – устанавливает значение переменной среды. Без параметров выводит список текущих переменных (\unset – удаляет)
https://github.com/cmshiang/PgAdmin4-Nginx-uwsgi
https://gist.github.com/rdnvndr/51ae8692bebcd02325ca7c046fe5ade2
https://www.digitalocean.com/community/tutorials/how-to-install-configure-pgadmin4-server-mode-ru
https://askubuntu.com/questions/1230782/postgresql-admin-tool-behind-nginx
https://github.com/rbernardes/nginx-pgadmin
https://www.pgadmin.org/docs/pgadmin4/development/server_deployment.html#standalone-uwsgi-configuration
https://www.digitalocean.com/community/tutorials/how-to-install-configure-pgadmin4-server-mode-ru
https://habr.com/ru/post/340460/
https://postgrespro.ru/docs/postgrespro/13/sql-commands
https://gist.github.com/igorpronin/f25cd61ffb976fbc6854b9c2684e5f01