Skip to content

Instantly share code, notes, and snippets.

Last active October 11, 2023 12:37
Show Gist options
  • Save hackedunit/a53f0b5376b3772d278078f686b04d38 to your computer and use it in GitHub Desktop.
Save hackedunit/a53f0b5376b3772d278078f686b04d38 to your computer and use it in GitHub Desktop.
Install and configure Redis on Ubuntu 16.04 with systemd
  1. Install pre-requisities

sudo apt-get install build-essential tcl

  1. Install Redis
cd /tmp
curl -O
tar xzvf redis-stable.tar.gz
cd redis-stable
make test
sudo make install
  1. Configure Redis
sudo mkdir /etc/redis
sudo cp /tmp/redis-stable/redis.conf /etc/redis
sudo nano /etc/redis/redis.conf

In the file, change the supervised directive's value to systemd.

supervised systemd

Next, specify the working directory for Redis. This is the directory that Redis will use to dump persistent data. We can use /var/lib/redis

dir /var/lib/redis

Save and close the file.

  1. Configure systemd to start Redis on boot

sudo nano /etc/systemd/system/redis.service

Copy the contents of this gist to the file, save and close.

  1. Create Redis user, group and directories
sudo adduser --system --group --no-create-home redis
sudo mkdir /var/lib/redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis
  1. Start the Redis service and set Redis to start on boot
sudo systemctl start redis
sudo systemctl enable redis
Copy link

I also had to update my redis config to run as a daemon using daemonize yes

Copy link

qreeves commented Feb 28, 2018

You might also need Type=forking under [Service] in redis.service

Copy link


Copy link

@harveymatt systemd actually has a problem when you run redis with daemon yes. See:

Copy link

zqb7 commented Oct 15, 2018

very nice

Copy link

sshymko commented Jan 22, 2019

According to the docs, supervised systemd is intended solely for Type=notify and daemonize yes corresponds to Type=forking.

Alternative settings that seem to be equivalent:

redis.conf redis.service
daemonize no
supervised systemd
daemonize no
supervised no
daemonize yes
supervised no

Example config: Gist.

Copy link

da-tai commented Feb 21, 2020

How do i migrate from apt install redis to this?

Copy link

nickolay-github commented Oct 20, 2020

And need to remember to change the permissions of the config file.
sudo chown redis:redis /etc/redis/redis.conf

I was getting an error when changing the redis configuration using the command redis-cli config rewrite until I changed the ownership of the conf file:

(error) ERR Rewriting config file: Permission denied

Copy link

In my case, I had in redis.conf

daemonize no
supervised systemd

and in redis.service Type=notify
And starting the redis service with systemd would just hang.
Solution for me was: just get rid of Type=notify

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment