Skip to content

Instantly share code, notes, and snippets.

@jpmens
Forked from ifduyue/beanstalkd.service
Created January 29, 2018 07:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jpmens/f3ad1d84f0bcd5291c8daed6ff6bbd61 to your computer and use it in GitHub Desktop.
Save jpmens/f3ad1d84f0bcd5291c8daed6ff6bbd61 to your computer and use it in GitHub Desktop.
Install beanstalkd on CentOS 7
[Unit]
Description=Beanstalkd is a simple, fast work queue
[Service]
User=nobody
Restart=always
RestartSec=500ms
ExecStart=/usr/local/bin/beanstalkd -b /var/lib/beanstalkd
LimitNOFILE=10240
[Install]
WantedBy=multi-user.target
[Unit]
Description=Socket for beanstalkd, a simple, fast work queue
[Socket]
ListenStream=11300
[Install]
WantedBy=sockets.target
#!/bin/bash
# Usage:
#
# wget -O- https://gist.githubusercontent.com/ifduyue/2ebe43be8d2ea1275abf/raw/install-beanstalkd-allinone.sh | bash -s
# ...or...
# curl -sSL https://gist.githubusercontent.com/ifduyue/2ebe43be8d2ea1275abf/raw/install-beanstalkd-allinone.sh | bash -s
#
# Set options:
# {wget or curl like above...} | beanstalkd_opt='-b /var/lib/beanstalkd -f0' bash -s
#
#
# $ beanstalkd -h
# Use: beanstalkd [OPTIONS]
#
# Options:
# -b DIR wal directory
# -f MS fsync at most once every MS milliseconds (use -f0 for "always fsync")
# -F never fsync (default)
# -l ADDR listen on address (default is 0.0.0.0)
# -p PORT listen on port (default is 11300)
# -u USER become user and group
# -z BYTES set the maximum job size in bytes (default is 65535)
# -s BYTES set the size of each wal file (default is 10485760)
# (will be rounded up to a multiple of 512 bytes)
# -c compact the binlog (default)
# -n do not compact the binlog
# -v show version information
# -V increase verbosity
# -h show this help
#
set -eu
version=1.10
beanstalkd_opt=${beanstalkd_opt--b /var/lib/beanstalkd}
wget -O v$version.tar.gz https://github.com/kr/beanstalkd/archive/v$version.tar.gz
tar xf v$version.tar.gz
make -C beanstalkd-$version
make install -C beanstalkd-$version
rm -rf beanstalkd-$version v$version.tar.gz
if [[ ! -f /lib/systemd/system/beanstalkd.service ]]; then
cat > /lib/systemd/system/beanstalkd.service <<EOF
[Unit]
Description=Beanstalkd is a simple, fast work queue
[Service]
User=nobody
Restart=always
RestartSec=500ms
ExecStart=/usr/local/bin/beanstalkd $beanstalkd_opt
[Install]
WantedBy=multi-user.target
EOF
fi
if [[ ! -f /lib/systemd/system/beanstalkd.socket ]]; then
cat > /lib/systemd/system/beanstalkd.socket <<EOF
[Unit]
Description=Socket for beanstalkd, a simple, fast work queue
[Socket]
ListenStream=11300
[Install]
WantedBy=sockets.target
EOF
fi
valdir=$(echo -- $beanstalkd_opt | grep -Po -- '-b \K[^ ]+') || true
if [[ -n "$valdir" ]]; then
mkdir -p $valdir
chown nobody:nobody $valdir
fi
systemctl enable beanstalkd.service
systemctl start beanstalkd.service
#!/bin/bash
set -eu
version=1.10
wget -O v$version.tar.gz https://github.com/kr/beanstalkd/archive/v$version.tar.gz
tar xf v$version.tar.gz
make -C beanstalkd-$version
make install -C beanstalkd-$version
rm -rf beanstalkd-$version v$version.tar.gz
if [[ -f beanstalkd.service && -f beanstalkd.socket ]]; then
cp beanstalkd.service /lib/systemd/system/beanstalkd.service
cp beanstalkd.socket /lib/systemd/system/beanstalkd.socket
mkdir -p /var/lib/beanstalkd
chown nobody:nobody /var/lib/beanstalkd
systemctl enable beanstalkd.service
systemctl start beanstalkd.service
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment