Atlantic.Net Blog

Setting Up a Redis Server as a Session Handler for PHP on Ubuntu 22.04

In web development, efficient session management is crucial for maintaining user state across requests. Redis, a high-performance, in-memory data store, is an excellent choice for handling sessions in PHP applications.

Redis offers several advantages when used as a session handler:

  • In-Memory Storage
  • Atomic Operations
  • Expiration Policies
  • Data Persistence

In this guide, we will set up a Redis server as a session handler for PHP on Ubuntu 22.04, ensuring seamless and scalable session management.

Step 1 – Install Redis Server

By default, the Redis package is included in the Ubuntu default repository. You can install it using the following command.

apt-get install redis-server -y

Once the Redis server is installed, verify the Redis installation using the following command.

redis-cli ping

You will see the following output.

PONG

Step 2 – Configure Redis Server

By default, Redis only allows connections to localhost. You will need to change this configuration to allow connections coming from other servers on the same private network as the Redis server.

First, edit the Redis configuration file.

nano /etc/redis/redis.conf

Change the following line:

bind localhost your-server-ip

Next, change the following line to secure your Redis with a password:

requirepass securepassword

Save and close the file, then restart the Redis service to apply the configuration.

systemctl restart redis

Step 3 – Verify Redis Connection and Authentication

Now, you will need to test Redis to see if the above configuration works. Run the following command to connect your Redis server.

redis-cli -h your-server-ip

Next, authenticate Redis with password:

AUTH securepassword

Now, try to access the data.

KEYS *

You should see the following output.

(empty array)

Step 4 – Install Apache and Redis Extension

Next, you will need to install the Apache and Redis PHP extensions to connect Redis using PHP. You can install them with the following command.

apt-get install apache2 libapache2-mod-php php php-redis -y

Next, edit the PHP configuration file.

nano /etc/php/8.1/apache2/php.ini

Define your default session handler and session path:

session.save_handler = redis
session.save_path = "tcp://your-server-ip:6379?auth=securepassword"

Save and close the file, then restart the Apache service to apply the changes.

systemctl restart apache2

Step 5 – Verify Redis Session Handling

To verify Redis session handling, you will need to create a PHP script to store information on sessions. Let’s create a test.php file.

nano /var/www/html/test.php

Add the following code:

<?php
//simple counter to test sessions. should increment on each page reload.
session_start();
$count = isset($_SESSION['count']) ? $_SESSION['count'] : 1;
echo $count;

$_SESSION['count'] = ++$count;

Save and close the file.

Next, open your web browser and access the PHP script using the URL http://your-server-ip/test.php. Now, you should have session information stored on the Redis server. To verify it, connect to your Redis server using the following command.

redis-cli -h your-server-ip

Authenticate Redis using a password.

AUTH securepassword

Next, fetch the content from the Redis server:

KEYS *

If everything is fine, you will see the following output.

1) "PHPREDIS_SESSION:1d00u2bebh1b258e7971lt6hjp"

Conclusion

Congratulations! You have successfully set up a Redis server as a session handler for PHP on Ubuntu 22.04. By leveraging the power of Redis for session management, you enhance the scalability and performance of your web applications. Redis provides not only fast and reliable session storage but also opens the door to other advanced features offered by Redis. Explore further to unlock the full potential of Redis in your PHP projects on dedicated server hosting from Atlantic.Net!

Get a $250 Credit and Access to Our Free Tier!

Free Tier includes:
G3.2GB Cloud VPS a Free to Use for One Year
50 GB of Block Storage Free to Use for One Year
50 GB of Snapshots Free to Use for One Year