Вопрос или проблема
Я пытаюсь запустить сервер PostgreSQL, установленный на удаленном сервере Redhat (RHEL 6.7 x86_64) через putty.
Команда, которую я использовал для запуска сервера, это /etc/init.d/postgresql-9.5 start
Но она показывает следующую ошибку:
Это содержимое файла /pg_log/startup.log:
Вот ссылка на содержимое файла postgresql.conf:
https://drive.google.com/file/d/0B9Yw9pzgnSgTTTBKaWxwWXUtNTg/view?usp=sharing
Я проверил файл postgresql.conf, но не смог найти ошибку.
Может кто-то помочь мне решить эту проблему?
Редактирование:
вот вывод команды “locale”, как попросил @Michael Hampton
Пожалуйста, обратитесь к этой статье и попробуйте предложенные исправления
http://blog.earth-works.com/2014/02/10/fixing-lc-locale-issues-in-centos-and-rhel/
У этого человека такой же вывод команды locale
, как у вас.
Ответ или решение
Запуск PostgreSQL на удалённом сервере RHEL 6.7 x86_64 через putty может вызвать различные проблемы, особенно когда вы видите ошибку "pg_ctl: could not start server". В данном случае, ошибка может быть связана с несколькими аспектами: настройки конфигурации, проблемы с региональными настройками, права доступа и журнал ошибок. Давайте разберемся с этими потенциальными источниками проблем и найдем пути их решения.
Теория: Возможные причины ошибки
-
Региональные настройки (Locale): Если региональные настройки системы не соответствуют тем, которые поддерживаются PostgreSQL, это может привести к проблемам при запуске. В системах на базе Linux часто сталкиваются с проблемами, связанными с переменной окружения
locale
. -
Неправильная конфигурация: Файл конфигурации
postgresql.conf
может содержать параметры, несовместимые с текущей версией PostgreSQL или системой. Ошибки в параметрах, таких какlisten_addresses
илиport
, могут препятствовать запуску сервера. -
Права доступа: PostgreSQL требует, чтобы файлы данных и логов были доступными и записываемыми от лица пользователя, под которым он запускается (чаще всего
postgres
). -
Ошибки в журнале: В файле журнала, например
startup.log
, могут содержаться сообщения о проблемах, из-за которых сервер не может быть запущен. Анализ этих сообщений является ключевым шагом в диагностике проблемы.
Пример: Анализ ситуации
В приведенном случае пользователь использует RHEL 6.7 и пытается запустить сервер PostgreSQL версии 9.5. Он получает сообщение об ошибке и предоставляет часть вывода файла с логами и конфигурационного файла. Также он делится выводом команды locale
, которая может указывать на проблемы с локалью.
На основе предоставленной информации, ошибки могут быть связаны с неправильными настройками локали. Например, отсутствие настроек LANG
или LC_*
переменных может вызывать проблемы с запуском серверного процесса PostgreSQL.
Применение: Как исправить проблему
Шаг 1: Проверка и исправление локалей
Следуйте этим шагам для Diagnose and стандартизации настроек локали:
-
Проверка текущих настроек:
locale
Проверьте, установлены ли
LANG
,LC_ALL
,LC_CTYPE
и другие переменные окружения. Воспользуйтесь утилитойlocalectl
или редактируйте файл/etc/locale.conf
для изменения дефолтных настроек. -
Установка или изменение локалей:
Изменения можно сделать с помощью команд:localectl set-locale LANG=en_US.UTF-8
-
Генерация недостающих локалей:
Запустите следующую команду, если необходимые локалей отсутствуют:locale-gen en_US.UTF-8
Шаг 2: Проверка конфигурации PostgreSQL
- Редактирование
postgresql.conf
: Перепроверьте значения параметров, например:listen_addresses
: Убедитесь, что параметр правильно указывает, какие адреса должны быть прослушаны (например,'localhost'
или'*'
).port
: Проверьте, что порт не занят другой программой.
Шаг 3: Проверка прав доступа
- Проверка прав на файлы данных и логов: Все файлы, связанные с PostgreSQL, должны быть доступны пользователю, запускающему сервер.
sudo chown -R postgres:postgres /var/lib/pgsql/data
Шаг 4: Анализ логов
Изучите логи, упомянутые в startup.log
, на наличие специфических ошибок и других сообщений. Ищите строки, содержащие FATAL
или ERROR
, и исправляйте проблемы на их основе.
Заключение
Ошибка "pg_ctl: could not start server" может вызываться множеством причин, однако методичный подход к её решению, проверка настройка локали, конфигурации и прав доступа, а также изучение детализированных логов помогут выявить и устранить проблему. Уделяя внимание деталям и следуя рекомендациям, можно успешно запустить сервер PostgreSQL и избежать подобных ошибок в будущем.