Skip to main content

Update Multiple Joomla Websites at Once

joomla cli

Streamline Your Maintenance Workflow on a Single Server

Introduction

Managing multiple Joomla websites can be a challenging task, especially when it comes to keeping them up-to-date with the latest security patches and new features. Updating each website individually can be time-consuming and laborious. However, by automating the update process, you can save time and ensure all your Joomla websites are running on the latest version. In this article, we'll show you how to create a script that allows you to update multiple Joomla websites at once, streamlining your maintenance workflow. Please note that this method assumes all the websites are hosted on the same server.

Preparing Your Websites for the Update

Before you start the update process, make sure to back up all your websites. This step is crucial as updates can potentially cause issues. You can use a backup extension like Akeeba Backup to create a full backup of your Joomla websites, including files and databases. Remember to test the update process on a staging or development environment before applying it to your live sites.

Creating the Update Script

To update multiple Joomla websites at once, you can create a Bash script that loops through each specified site and runs the update command. Here's a step-by-step guide to creating the script:

  1. Create a new file called update_all_joomla.sh in a convenient location on your server.
  2. Add the following content to the script, replacing the paths in the SITES variable with the paths to the cli directories of your Joomla websites: 
    #!/bin/bash
    
    # List the paths to the 'cli' directories of your Joomla websites
    SITES=(
    "/path/to/site1/cli"
    "/path/to/site2/cli"
    "/path/to/site3/cli"
    # Add more as needed
    )
    
    # Loop through each site and update
    for site in "${SITES[@]}"; do
      echo "Updating site: $site"
      php "$site/joomla.php" core:update
      echo "Update complete for site: $site"
      echo "--------------------------------"
    done
    
    echo "All updates completed."
    
  3. Save the file and give it executable permissions: 
    chmod +x update_all_joomla.sh
  4. To run the script, execute the following command in the terminal: 
    ./update_all_joomla.sh

The script will loop through each specified site and run the update command on them one by one.

Monitoring the Update Process

During the update process, keep an eye on the terminal output for any error messages or issues. If you encounter any problems, check your server logs and the error_log file in your Joomla root directory for more information.

After the updates are completed, verify that your websites are functioning correctly on both the front-end and back-end. If you notice any issues, restore the affected websites from their backups and try the update process again.

Conclusion

By creating a script to update multiple Joomla websites at once on the same server, you can streamline your maintenance workflow and ensure all your websites are running on the latest Joomla version. This approach not only saves time but also helps maintain a high level of security for your websites. Remember always to create backups before updating and to test the process on a staging or development environment before applying it to your live sites.

If your Joomla websites are hosted on different servers, you would need to adapt the script to work with remote servers, possibly using SSH connections or other remote management tools. In that case, the process might be more complex and would require additional security measures to protect your websites during the update process.