zlukfo@gmail.com
  • Публикации
  • Темы
  • Ключевые слова
  • Архив

VDS: создаем сервер базы данных на основе postgresql

Итак, у нас есть чистый VDS. Задача - создать на его базе сервер базы данных. В качестве БД используем postgresql

1. Настройка VDS

Провайдеры VDS на чистом контейнере как правило предоставляют доступ по ssh под пользователем root. Изменим эти пастройки по умолчанию

ssh root@__host__
apt-get update
apt-get install language-pack-ru-base
apt-get install mc
useradd __adminName__
mkdir /home/__adminName__
chown __adminName__:__adminName__ /home/__adminName__
passwd __adminName__
apt-get install sudo
visudo

меняем "root ALL=(ALL:ALL)" ALL на "adminName ALL=(root:root) ALL"

Команды для работы в редакторе:

  • o - Создать текст с начала новой строки, расположенной под текущей строкой),
  • ESC - закончить редактирование,
  • :w - созранить изменения
  • :q - выйти из редактора

(все команды редактора vi здесь)

Проверяем, можем ли мы подключиться через __adminName__

ssh __adminName__@__host__

Закрываем пользователя для root

Заходим под __adminName__, выполняем

sudo passwd -l root

Правим /etc/ssh/sshd_config: "PermitRootLogin no"

Перезапускаем sshd.

sudo service ssh restart

Меняем командную оболочку по умолчанию

sudo chsh __adminName__

В диалоге указываем путь к нужной оболочке. Доступные оболочки можно посмотреть в файле /etc/shells

Установка последней версии postgresql

sudo nano /etc/apt/sources.list.d/postgresql.list

Добавляем строку "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main"

Выполняем команды

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.6

Настройка postgresql

sudo passwd postgres
su postgres
mkdir /var/lib/postgresql/data
sudo nano  /etc/environment

Если на данном этапе будет выдавать такую ошибку "в postgres отсутствует в файле sudoers", сделать следующее

su __adminName__
sudo visudo
postgres ALL=(ALL) ALL
su postgres
sudo nano  /etc/environment

Внутри файла дополняем значение переменной PATH, дописав в него через двоеточие путь "/usr/lib/postgresql/9.6/bin". И, затем, в конце этого файла дописываем следующую строчку '"PGDATA="/var/lib/postgresql/data"'

Завершаем сеанс (exit) и заходим заново

su postgres
initdb

Редактируем файл sudo nano '/etc/postgresql/9.6/main/postgresql.conf'. В нем находим строчки (значения переменных не обязательно именно такие)

data_directory = '/var/lib/postgresql/9.1/main'
hba_file = '/etc/postgresql/9.1/main/pg_hba.conf'
ident_file = '/etc/postgresql/9.1/main/pg_ident.conf'
external_pid_file = '/var/run/postgresql/9.1-main.pid'

и комментируем их, поставив вначале каждой строки знак "#". Теперь после перезагрузки системы PostgreSQL не будет автоматически стартовать.

Для автозапуска PostgreSQL в Ubuntu нужно открыть файл sudo nano '/etc/rc.local' и в нем вписать строчку "su -c 'pg_ctl start' postgres" (до команды exit в файле).

Перезапускаем VDS

sudo reboot

Удаленный доступ к бд

По умолчанию postgres настроен для доступа только с локальной машины. Поэтому прежде всего огранизуем доступ к БД через ssh туннель

ssh -L 63333:localhost:5432 zlukfo@188.120.236.2

Терминал не закзывать!

Теперь мы можем подключиться к бд. Открываем новый терминал и подключаемся

psql -h localhost -p 63333 -U postgres

Для поклонников Sublime Text

Можно настроить выполнение sql запросов из редактора. В нем же просматривать ответы. Для этого заходим Tools - > Build System -> New Build system . И пишем примерно такой код

{
        "cmd": ["/usr/bin/psql", "-U", "postgres", "-h", "localhost", "-p", "63333", "-o", "/home/zlukfo/result_sql.txt", "-a", "-E", "-f", "$file"]
}

и сохранаяем в предложенный по умолчанию каталог

Создаем файл .sql и пишем туда один или несколько sql запросов. Сохраняем файл. Нажимаем ctl+shift+b.

Внимание!!!. Конфигурацию выше нужно создавать для каждой БД (параметр -d psql). А перед тем как отправлять запрос (ctl+shift+b) - выбирать соотвествующую конфигурацию в меню Tools - > Build System

Результат запроса сохранится в файл "/home/zlukfo/result_sql.txt", В Side Bar можно создать быструю ссылку на этот файл.

Если при отурытии файла будут автоматически переноситься строки - добавить Preferenses -> settings-user "word_wrap": "false"

Если очень нужно, можно открыть доступ с улаленных хостов

/var/lib/postgresql/data/postgresql.cong
listen_addresses = '*'

pg_hba.conf
host  all  postgres  0.0.0.0/0  md5

Перегружаемся

su postgres
pg_ctl restart

Отправка файлов на сервер по ssh

Очень частая задача, тем более, что она может быть решена без установки дополнительных программ

scp /directory/some_file user@server_domain:/remote/directory

Опубликовано

авг. 9, 2016

Тема

Администрирование

Ключевые слова

  • postgresql 8
  • vds 1
  • zlukfo@gmail.com - Публикации на тему разработки web-приложений
  • Все авторские права защищены
  • Автор и разработчик блога zlukfo. Theme: Elegant by Talha Mansoor