asciidoc вместо markdown
This commit is contained in:
@ -1,28 +1,27 @@
|
||||
---
|
||||
title: "runit: система инициализации"
|
||||
category: Linux
|
||||
tags: Debian, Ubuntu, Linux, инициализация, runit,
|
||||
summary:
|
||||
...
|
||||
= runit: система инициализации
|
||||
:category: Linux
|
||||
:tags: Debian, Ubuntu, Linux, инициализация, runit,
|
||||
|
||||
### Установка
|
||||
== Установка
|
||||
|
||||
[runit](http://smarden.org/runit/) — это система инициализации со
|
||||
http://smarden.org/runit/[runit] — это система инициализации со
|
||||
встроенными средствами контроля за процессами.
|
||||
|
||||
Установка в Ubuntu:
|
||||
|
||||
```sh
|
||||
[source,sh]
|
||||
----
|
||||
sudo apt-get install runit runit-systemd
|
||||
```
|
||||
----
|
||||
|
||||
### Запуск сервисов от непривилегированного пользователя
|
||||
== Запуск сервисов от непривилегированного пользователя
|
||||
|
||||
Чтобы разрешить непривилегированному пользователю `user` управлять
|
||||
собственной конфигурацией для runit, нужно с правами суперпользователя
|
||||
выполнить:
|
||||
|
||||
```sh
|
||||
[source,sh]
|
||||
----
|
||||
mkdir -p /etc/service/run-user/supervise
|
||||
cat > /etc/service/run-user/run << EOF
|
||||
#!/bin/sh
|
||||
@ -31,17 +30,18 @@ exec 2>&1
|
||||
exec chpst -u user runsvdir /home/user/sv
|
||||
EOF
|
||||
chmod +x /etc/service/run-user/run
|
||||
```
|
||||
----
|
||||
|
||||
В результате в каталоге `/home/user/sv` пользователь `user` сможет
|
||||
создавать собственные правила управления сервисами.
|
||||
|
||||
### Пример сервиса
|
||||
== Пример сервиса
|
||||
|
||||
Для запуска сервера Redis пользователем `user` нужно создать файл
|
||||
конфигурации `/home/user/redis/etc/redis.conf`:
|
||||
|
||||
```
|
||||
[source,text]
|
||||
----
|
||||
daemonize no
|
||||
port 5079
|
||||
tcp-backlog 128
|
||||
@ -56,33 +56,36 @@ client-output-buffer-limit normal 0 0 0
|
||||
client-output-buffer-limit slave 4mb 1mb 60
|
||||
client-output-buffer-limit pubsub 4mb 1mb 60
|
||||
maxclients 50
|
||||
```
|
||||
----
|
||||
|
||||
Запускаемый сервер должен запускаться не в фоновом режиме, чтобы
|
||||
runit мог контролировать его состояние.
|
||||
Запускаемый сервер должен запускаться не в фоновом режиме, чтобы `runit`
|
||||
мог контролировать его состояние.
|
||||
|
||||
Скрипт `/home/user/sv/redis/run`, который `runit` использует для
|
||||
запуска процесса:
|
||||
Скрипт `/home/user/sv/redis/run`, который `runit` использует для запуска
|
||||
процесса:
|
||||
|
||||
```sh
|
||||
#!/bin/sh
|
||||
[source,sh]
|
||||
----
|
||||
#!/bin/sh -e
|
||||
|
||||
WORKDIR=/home/user/redis
|
||||
|
||||
cd "${WORKDIR}" || exit 1
|
||||
exec 2>&1
|
||||
exec redis-server etc/redis.conf
|
||||
```
|
||||
----
|
||||
|
||||
Журналирование выполняется с помощью входящей в состав пакета
|
||||
runit программы `svlogd`. Скрипт для его запуска должен находиться
|
||||
в подкаталоге `log` (`/home/user/sv/redis/log/run`):
|
||||
Журналирование выполняется с помощью входящей в состав пакета runit
|
||||
программы `svlogd`. Скрипт для его запуска должен находиться в
|
||||
подкаталоге `log` (`/home/user/sv/redis/log/run`):
|
||||
|
||||
```sh
|
||||
[source,sh]
|
||||
----
|
||||
#!/bin/sh -e
|
||||
|
||||
LOGDIR=/home/user/redis/log
|
||||
|
||||
mkdir -p "${LOGDIR}"
|
||||
exec svlogd -tt "${LOGDIR}""
|
||||
```
|
||||
----
|
||||
|
Reference in New Issue
Block a user