Наверное у каждого в жизни встречались ситуации, когда казалось бы простая задача отбирала кучу времени и сил. Горы перелопаченных форумов — а результата ноль. Для меня таким «крепким орешком» оказалась установка Beanstalk на виртуальную машину с CentOS7.
А решение оказалось очень простым.

Шаг 1: Качаем дистрибутив


Сначала необходимо создать папку, где будет находиться Beanstalk. У меня это папака
/opt/beanstalkd/

Для скачивания дистрибутива переходим в созданную папку и выполняем команду
wget https://github.com/kr/beanstalkd/archive/v1.10.tar.gz

Если у вас команда wget отсутствует в системе — ее легко установить
sudo yum install wget

Готово. Осталось только распаковать архив
tar -xzf v1.10.tar.gz

Шаг 2: Сборка сервиса


Теперь преобразуем дистрибутив в готовую программу. Переходим в распакованную папку (у меня это beanstalkd-1.10) и выполняем команду
make

Если у вас не установлен компилятор, то при выполнении этой команды возникнет ошибка. Установим его
sudo yum install gcc

И снова попробуем скомпилировать Beanstalk. Если все прошло успешно, то у вас должен появиться файл beanstalkd.

Шаг 3: Пишем скрипт для запуска/остановки Beanstalk


Теперь beanstalk можно запускать прямо с консоли. А можно для удобства написать небольшой скрипт
#!/bin/bash
clear 

# Default options, overruled by items in sysconfig
BEANSTALKD_ADDR=127.0.0.1
BEANSTALKD_PORT=11300

exec="/opt/beanstalkd/beanstalkd-1.10/beanstalkd"
options="-l ${BEANSTALKD_ADDR} -p ${BEANSTALKD_PORT}

start() {
	echo -n $"Starting beanstalk: "

	nohup $exec $options > /dev/null 2>&1 &

	retval=$?

	return $retval
}

stop() {
	echo -n $"Stopping beanstalk: "

	kill -9 $(pgrep beanstalkd)
	
	retval=$?
	
	return $retval
}

restart() {
	stop
	start
}

case "$1" in
	start)
		start && exit 0
		$1
		;;
	stop)
		stop || exit 0
		$1
		;;
	restart)
		restart || exit 0
		$1
		;;
	*)
		echo $"Usage: $0 {start|stop|restart}"
		exit 2
esac

Сохраните его в файле с расширением sh, скажем beanstalkd.init.sh. Тогда запуск сервиса будет осуществляться командой
sh beanstalkd.init.sh

Комментарии (11)