Which CMS's can handle multiple independent websites?

I work for a web design company that builds and hosts brochure-type websites for small businesses, with a typical website being 6 pages and no e-commerce.

We currently run an in-house built CMS that was created 15 years ago and unfortunately it’s now getting past its use-by date (it looks very dated and there are several improvements we would like to make). All of the people that originally worked on it have left the company and so we’re looking at replacing it with something off-the-shelf.

I’ve looked at several CMS’s and while they look great for a single site, I don’t think they’d work so well in our situation. Our current CMS is a single installation (eg one set of CMS files and one database) that manages 500+ websites. Ideally the replacement must work in a similar manner, eg we don’t want to have to install a set of CMS files and a separate database for every single site. We feel that would be a nightmare to administer when it came to update the CMS, not to mention the waste of space due to each CMS file being repeated across all the sites.

Each client site operates under its own domain name and each client has a login that allows them to log into an interface that lets them update the content of their site (update text and images only, can’t change HTML and CSS and can’t add new pages). Once logged in the client sees only their website content, they’re not even aware that other sites exist within the CMS. We have a super-admin login that lets us update any client’s website (update text and images, update HTML and CSS, add and delete entire pages, etc).

The client sites are initially built outside the CMS as straightforward HTML pages that include all the text and images (eg you could open the pages in a browser and see the site as it’s intended to be). We then import the site into the CMS which reads the HTML pages and saves it in the database and copies the images to an image directory on the server (each client has their own image directory). We then use an editor in the CMS to go through and mark in the pages the text and images that the client is allowed to change. The client can’t edit anything other than the blocks that we’ve marked as editable. We also mark common HTML code that repeats across the site’s pages, eg footer, menu bar, etc and the CMS extracts those. The end result are pages within the CMS that might look like this:

<html>
<head>
<title>Blah blah</title>
</head>
<body>
$$site-header$$
$$site-menu$$
<h1>$$page-title$$</h1>
$$page-intro$$
$$site-footer$$
</body>
</html>

As you can see we have tags that are surrounded by two dollar signs. The contents of the tags are kept elsewhere in the database and when the CMS constructs the page for output to the browser it pulls together all the tag contents and outputs a full HTML page. The tag contents can be anything from a few words of text (eg the $$page-title$$ tag) to dozens of lines of HTML (eg the $$site-footer$$ tag).

When the client logs into the CMS they see a list of the pages for their site and can click on one to edit it. The full page is shown, just as it would appear in a browser, and when they hover over the parts of the page that they can change their see little handles appear to show them that part is editable. They can then click on it to edit it. If it’s text then a text editor pops up over the top of the page and they can edit the text. If it’s an image then they’re given the option to upload a new image which will replace the old one (the new image is resized to match the size of the current image so the page layout doesn’t change).

I would have thought that our requirements would be the same as many other web design companies but I’m struggling to find a CMS that can handle multiple sites from just the single CMS installation and treats each site as being totally separate from all the others (eg doesn’t share users or domain names between the sites).

The last requirement is that we can host it on our own server.

The future of the web is with static sites. With that in mind the below post provides a production ready option for building those types sites.

I might actually almost recommend building your own solution. Perhaps a nodejs program that queries your database for all pages in a site and renders static html pages with the tokens replaced. At which point you could just deploy each project as a static site without a server. You can even take that model even further by hosting those static sites for free in the cloud.

Would a WordPress multi site network work?

Everyone can have their own domain and most new sites can easily be added by your hosting provider.

You can also program automatic creation of new sites on registration.

A WordPress multi-site might do the trick. I initially thought that the sites have to be subdomains or subdirectories, but it appears this isn’t the case. Thanks!

1 Like

A single Wordpress server and database instance running over 500 sites is going to be extremely slow. That is if it even runs at all. You would be inheriting more problems than those you actually need to solve with a simpler solution.

Yes that is what I’m afraid of. Our current system runs surprisingly well, maybe we’re better off just sticking to that and trying to fix the few problems we have with it.

The static site option is a very powerful one. It seems like it would work well with your existing database content.

I must admit that I like the idea of static sites. What I’d have to do is find some software that can handle editing the site and that is designed to be multi-user/multi-site. A lot of the static site software I’ve seen seem to be geared toward editing just a single site, whereas we need our clients to be able to use their browser to log into the editor and be presented with just their site which they can then edit and publish to the web server. Any suggestions?

Citation please.

2 Likes

By default multi site networks do not share a database.

Legacy hosting companies share single database servers between multiple sites. This is one cause of high performance variability on shared hosts for database intensive cms platforms like Wordpress. The more accounts a company can semi reliably cram onto shared infrastructure the more profit to be gained.

Sharing a server is different than sharing a database.

They are different but the cpu, memory, and storage being used is not. These are all shared which directly results in one database read and write activity impacting others on the same server.

You cannot categorically make such a statement without knowing more about the shape of traffic they’re getting. It entirely depends on how much traffic those sites are getting and what caching strategy (if any) is in place.

2 Likes

I generally agree but common sense leads me to believe for an average Wordpress site a single server hosting 500+ sites is not realistic. It could be reliably achieved on vms in the cloud which is what Wordpress cloud vendors offer. However, doing all this to support what amounts to static html with a few static blocks that need to be replaced doesn’t make any sense. It would be far easier to write a node program query the database for pages, replace the blocks and output to flat html files which can be deployed as a static site. That approach removes the server and complexity of a monolithic cms from the equation piggybacking on what is already there optimizing it for modern hosting. The ui for the admin could be re-imaged as a modern reactive mvvm browser application using JavaScript. That architecture moves the app into the modern world allowing one to better compete in the marketplace. Also from a business perspective no one is attracting talent with a 15 year old legacy program running their entire business. You might be able to sucker unknowing folk into it because they probably don’t care but developers are going to move on if they know what is good for them. Working on a 15 year old legacy platform is quick way to become obsolete and irrelevant in the marketplace from a career perspective. Employees are attracted to projects innovating on the web not stalled managing legacy decisions with no change in sight. Just like the energy sector moving away from fossil fuels the web industry *has moved *mostly past monolithic cmss like Wordpress for realizing new modern web experiences.

1 Like

That’s not an argument for anything.

And how long would that take to write vs how long would it take to set up wordpress? You seem to regard time as being essentially free?

Given they’re already 500+ sites I don’t think competition as a main concern here.

Agreed, but suggesting that javascript + static + etc is THE answer is a false dichotomy. Whether you like it or not there are still loads of websites powered by wordpress and there are also still a lot of wordpress developers to be found. I’m not saying that’s a good or a bad thing, just putting it out there.

2 Likes

Laravel can be setup as a multi tenant site; however it is not a CMS. It has a lot of out of the box features with a decent ORM.

Our company currently hosts 300+ subdomains on one load balanced AWS server on Elastic Beanstalk and a load balanced DB. We have reusable react components on the frontend that service all the subdomains.

We are slowly moving this monolith to micro services due to the ability to hire talent from a wider domain of programming languages.

Reevaluating the architecture is a great time to consider sustainability best practices. Sustainability can also be used in marketing to attract clients and employees.

https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/sustainability-pillar.html

AWS also provides tools for measuring and reporting carbon footprints to customers and stakeholders.

https://aws.amazon.com/aws-cost-management/aws-customer-carbon-footprint-tool/