Вопрос или проблема
Я скачал meilisearch, переместил бинарный файл в /opt/meilisearch
и создал системного пользователя sudo useradd --system --no-create-home -g meilisearch meilisearch
. Если /meilisearch
выполняется от имени пользователя meilisearch, возникает ошибка недостатка прав доступа.
$ sudo -u meilisearch /opt/meilisearch/meilisearch –db-path
/opt/meilisearch/datafiles –http-addr localhost:7700 –env
development 2024-12-08T21:02:05.162536Z ОШИБКА meilisearch:
ошибка=Отказано в доступе (ос ошибка 13) Ошибка: Отказано в доступе (ос
ошибка 13)
Я могу выполнять meilisearch с помощью sudo, и вообще пользователь meilisearch может запускать бинарный файл:
$ sudo -u meilisearch /opt/meilisearch/meilisearch --help
Использование: meilisearch [OPTIONS]
Опции:
--config-file-path <CONFIG_FILE_P...
Вот настройки прав доступа:
ls -la /opt/meilisearch
всего 118552
drwxrwxr-x 3 meilisearch meilisearch 4096 7. Дек 22:55 .
drwxr-xr-x 3 root root 4096 7. Дек 22:40 ..
drwxr-xr-x 6 meilisearch meilisearch 4096 7. Дек 23:03 datafiles
-rwxr-xr-x 1 meilisearch meilisearch 121377880 7. Дек 20:52 meilisearch
Ответ или решение
Как запустить MeiliSearch под системным пользователем
MeiliSearch — это быстрое и мощное решение для полнотекстового поиска, которое простое в установке и использовании. Тем не менее, при запуске MeiliSearch как системного пользователя могут возникать проблемы с правами доступа. Рассмотрим, как настроить и запустить MeiliSearch корректно.
1. Подготовка системы
На первом этапе убедитесь, что MeiliSearch загружен и находится в нужном месте. Вы уже переместили бинарный файл MeiliSearch в каталог /opt/meilisearch
, что является хорошим началом. Также вы создали системного пользователя meilisearch
без домашнего каталога:
sudo useradd --system --no-create-home -g meilisearch meilisearch
2. Проверка прав доступа
Чтобы убедиться, что проблем с доступом больше не возникнет, стоит уточнить права на директорию, куда вы собираетесь сохранять данные, а также на сам бинарный файл MeiliSearch.
Вывод команды ls -la /opt/meilisearch
показывает, что у вас есть следующие права:
drwxrwxr-x 3 meilisearch meilisearch 4096 7. Dez 22:55 .
drwxr-xr-x 3 root root 4096 7. Dez 22:40 ..
drwxr-xr-x 6 meilisearch meilisearch 4096 7. Dez 23:03 datafiles
-rwxr-xr-x 1 meilisearch meilisearch 121377880 7. Dez 20:52 meilisearch
Здесь нужно обратить внимание на то, что директория datafiles
, в которую вы собираетесь записывать данные, имеет права drwxr-xr-x
, что позволяет только владельцу (пользователю meilisearch
) записывать данные. Обратите внимание на структуру, а также создайте путь для данных, если это еще не сделано.
3. Установка прав на каталоги
Убедитесь, что пользователь meilisearch
имеет права на запись в директории. Вы можете изменить права и владельца каталога datafiles
, если это требуется:
sudo chown -R meilisearch:meilisearch /opt/meilisearch/datafiles
sudo chmod -R 755 /opt/meilisearch/datafiles
Убедитесь, что и сам бинарный файл имеет актуальные права:
sudo chown meilisearch:meilisearch /opt/meilisearch/meilisearch
sudo chmod 755 /opt/meilisearch/meilisearch
4. Запуск MeiliSearch
Теперь можно запустить MeiliSearch под пользователем meilisearch
. Попробуйте выполнить команду с помощью sudo
, чтобы использовать системного пользователя:
sudo -u meilisearch /opt/meilisearch/meilisearch --db-path /opt/meilisearch/datafiles --http-addr localhost:7700 --env development
Убедитесь, что вы не получаете ошибок о запрещенном доступе (Permission denied). Если ошибка по-прежнему возникает, проверьте, что другие процессы не блокируют доступ к каталогу или файлам.
5. Настройка службы (опционально)
Если хотите, чтобы MeiliSearch запускался как служба, создайте systemd юнит файл:
Создайте файл /etc/systemd/system/meilisearch.service
с таким содержанием:
[Unit]
Description=MeiliSearch
After=network.target
[Service]
User=meilisearch
Group=meilisearch
ExecStart=/opt/meilisearch/meilisearch --db-path /opt/meilisearch/datafiles --http-addr localhost:7700 --env development
Restart=on-failure
[Install]
WantedBy=multi-user.target
После этого активируйте и запустите сервис:
sudo systemctl enable meilisearch
sudo systemctl start meilisearch
Заключение
Следуя данным рекомендациям, вы сможете успешно запустить MeiliSearch под системным пользователем, избегая ошибок, связанных с правами доступа. Регулярно проверяйте журналы системы и документацию MeiliSearch для получения дополнительных советов по оптимизации.