Operations 4 min read

Bash Script for Installing GCC 11.2.0 and Redis 6.2.6 with a Systemd Service

This Bash script automates the installation of GCC 11.2.0 and Redis 6.2.6 on a Linux system, configures Redis settings, creates a systemd service unit, and starts the Redis service, providing a reproducible setup procedure for developers and system administrators.

Practical DevOps Architecture
Practical DevOps Architecture
Practical DevOps Architecture
Bash Script for Installing GCC 11.2.0 and Redis 6.2.6 with a Systemd Service

This script automates the installation of GCC 11.2.0 and Redis 6.2.6 on a Linux host.

It first defines the Redis configuration file location: redis_config=/usr/local/redis/bin/redis.conf The gcc_install() function installs required dependencies, extracts the GCC source, configures it for C and C++ languages, builds and installs it, and finally checks the installed version:

yum -y install bzip2
cd /usr/local/src && tar -zxf gcc-11.2.0.tar.gz > /dev/null
cd gcc-11.2.0 && ./contrib/download_prerequisites && mkdir -p build && cd build && ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make && make install
gcc -v

The redis_install() function extracts the Redis source, builds and installs it under /usr/local/redis, creates necessary directories, copies the default configuration and server binary, and adjusts the configuration using sed to disable daemonization, bind to all interfaces, set the data directory, disable protected mode, and specify the log file:

cd /usr/local/src && tar -zxf redis-6.2.6.tar.gz > /dev/null
cd redis-6.2.6 && make && make install PREFIX=/usr/local/redis
mkdir -p /usr/local/redis/{bin,run,log,data}
yes| cp -r /usr/local/src/redis-6.2.6/redis.conf /usr/local/redis/bin/
yes| cp -r /usr/local/src/redis-6.2.6/redis-server /usr/local/redis/bin/
sed -ri '/^daemonize/s/yes/no/' $redis_config
sed -ri '/^bind/s/127.0.0.1/0.0.0.0/' $redis_config
sed -ri '/^dir/s/\.\//\/usr\/\/local\/redis\/data/' $redis_config
sed -ri '/^protected-mode/s/yes/no/' $redis_config
sed -ri '/^logfile/s/""/"\/usr\/\/local\/redis\/log\/redis.log"/' $redis_config

It then creates a systemd unit file /lib/systemd/system/redis.service with the necessary Unit, Service, and Install sections:

cat > /lib/systemd/system/redis.service <<EOF
[Unit]
After=network.target
[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
EOF

Finally, it reloads the systemd daemon, starts the Redis service, and invokes the two installation functions:

systemctl daemon-reload
systemctl start redis.service
gcc_install
redis_install
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

gccSystemd
Practical DevOps Architecture
Written by

Practical DevOps Architecture

Hands‑on DevOps operations using Docker, K8s, Jenkins, and Ansible—empowering ops professionals to grow together through sharing, discussion, knowledge consolidation, and continuous improvement.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.