Migrate to RunxBuild and earn up to $50 in hosting credit on your first deposit.

Calculate your savings
unxBuild
Back to Blog Explainer

Running a Blog on cPanel: The Setup, the Defaults, and the Day You Outgrow It

Sean

Platform Writer

Sep 09, 2026
8 min read

Starting a blog on cPanel means using the one-click application installer, which creates a database, unpacks the software, writes the configuration file and gives you an admin login in about ten minutes. That part genuinely works. What the installer does not do is set up backups you can restore from, configure outbound email so notifications arrive, or tell you which of its defaults will become a problem at traffic you do not have yet.

Running a Blog on cPanel: The Setup, the Defaults, and the Day You Outgrow It

cPanel is old, unfashionable and still runs an enormous share of the small web, for the good reason that it turns a Linux server into a set of buttons. Knowing which buttons matter, and which parts of the setup the installer skipped, is the difference between a blog that quietly works for years and one that breaks in a way nobody can diagnose.

Table of contents

The ten-minute setup, and what it does

Find the application installer in cPanel, usually under Software. Pick the blogging platform, fill in four fields, and press install.

  1. Choose the protocol. Pick the https version, and pick with or without www to match what you will actually use. Changing this afterwards means updating the site URL in the database.
  2. Choose the directory. Leave it empty for the site root. Putting it in a subfolder is a decision you will regret unless you specifically want the blog at a path.
  3. Set the admin username and password. Do not accept the default username, which is well-known and is the first thing every login attack tries.
  4. Let it create the database. Note the name it generates; you will need it for backups.

Behind those four fields it creates a MySQL database and user, grants the user access, downloads and unpacks the application, writes the configuration file with the credentials, and runs the installer’s own setup. That is a genuinely useful amount of work compressed into one button.

Before writing anything, do two things the installer does not: issue the certificate if one is not already active, and check that the site actually loads over https without a mixed-content warning.

The defaults the installer leaves alone

Everything below is at a default that is fine for a fresh install and wrong for a site with content on it.

  • PHP version. Shared hosts often default to an older release for compatibility. Check it in the PHP selector and move to a current supported version; the performance difference between an old and a current release is large and free.
  • PHP memory limit and max execution time. The defaults are low enough that an image-heavy import or a large plugin update will fail halfway, which is a much worse outcome than failing at the start.
  • Upload max filesize. Usually a few megabytes, which is smaller than a photo from any modern phone.
  • Automatic updates. The installer may enable, disable or partially enable these. Find out which, because unattended major-version updates and never updating at all are both bad, in different ways.
  • Cron. The blogging platform’s scheduled tasks run on page visits by default, which means scheduled posts do not publish on a quiet site. A real cron entry fixes it.
# Cron entry to replace visitor-triggered scheduling. Every 15 minutes is plenty.
*/15 * * * * /usr/local/bin/php /home/USER/public_html/wp-cron.php > /dev/null 2>&1

Add that in the cPanel cron section, then disable the visitor-triggered version in the application configuration so both are not running.

Email, and why notifications go missing

This is the most common invisible failure on a cPanel blog. Password resets, comment notifications and contact form submissions are sent by the local mail server, from an address at your domain, over a shared IP address with a reputation you do not control.

The result is mail that is accepted, never bounces, and lands in spam or is dropped silently. Nobody notices until someone cannot reset their password.

The fix is to stop sending mail from the web server:

  1. Use a transactional email provider and send through it via authenticated SMTP.
  2. Set the from address to something at your domain that actually exists, not a no-reply at a domain you do not control.
  3. Publish SPF and DKIM records for the sending service, and add a DMARC record once those are in place.
  4. Send a test to an address on a major provider and read the raw headers to confirm both checks pass.

This takes half an hour once and removes an entire category of problem that is otherwise almost impossible to diagnose from inside the application, because from the application’s point of view the mail was sent successfully.

Backups: the checkbox that is not a backup

cPanel has a backup section, and many hosts advertise automatic backups. Both are worth having and neither is sufficient on its own, for two reasons.

First, host-side backups usually live on the same infrastructure as the site. That covers the case where you break something and does not cover the case where the account is suspended, compromised or lost, which are the cases where you most need them.

Second, a backup nobody has restored is a hypothesis. The number of people who discover their backup excluded the database is not small.

A workable arrangement:

  • Keep the host’s automatic backups. They are the fastest path to undoing your own mistake.
  • Take a full backup, files and database, before every significant change, and download it off the server.
  • Run a scheduled export to storage under a different account entirely.
  • Restore one, once, into a staging subdomain. Then you know.
# What a real backup looks like: database plus files, in one place, dated
mysqldump -u DBUSER -p DBNAME | gzip > db-$(date +%F).sql.gz
tar -czf files-$(date +%F).tar.gz public_html/

Performance on shared hosting

A blog is close to the ideal shared-hosting workload: mostly reads, mostly the same pages, and content that changes a few times a week. The reason blogs on shared hosting are slow anyway is almost always that every request is being rendered from scratch.

In rough order of effect per unit of work:

  1. Full-page caching. Serve a static HTML copy to logged-out visitors. This is the single largest improvement available and it turns a database-and-PHP request into a file read.
  2. A current PHP version with the opcode cache enabled. Free, and often worth a large fraction of the remaining time.
  3. Image sizing. Most slow blog pages are slow because of a photograph uploaded at full camera resolution. Resize on upload and serve a modern format.
  4. Fewer plugins. Each one adds queries and assets to every page. The count matters less than what they do on the front end, and a plugin that only runs in the admin area is nearly free.
  5. A CDN in front. Useful once the first three are done, and mostly a bandwidth and latency improvement rather than a rendering one.

What will not help is upgrading the shared plan. Shared hosting resource limits are usually about concurrency, not speed, so a bigger plan raises the ceiling on simultaneous visitors without making any individual page faster.

The signals that you have outgrown it

cPanel on shared hosting is genuinely fine for a long time. The signals that it has stopped being fine are specific rather than vague:

  • You are hitting a concurrency or process limit during traffic spikes, and the site returns errors rather than being slow.
  • You need a runtime the host does not offer, or a version of one they will not upgrade to.
  • You want a staging environment and a deploy process, and you are currently editing files on the live site through a file manager.
  • You are running something alongside the blog, an API or a background worker, and there is nowhere to put it.
  • The manual work has become a routine: monthly updates, monthly backup downloads, occasional restores.

None of those are reasons to panic-migrate. They are reasons to stop investing further in the current arrangement, and to make the next change a move rather than another workaround.

The migration itself is unglamorous and well understood: export the database, copy the files, restore both on the destination, update the site URL, point DNS with a short TTL set in advance, and keep the old account alive for a fortnight. The part worth planning is the email, because that is what breaks and nobody tests it.

How this fits the rest of the stack

The honest comparison when leaving shared hosting is not plan against plan, it is the whole shape: the site, the database, the storage and the bandwidth as separate numbers rather than one bundled figure that hides which part is actually constrained. The RunxBuild hosting calculator lays those out together. Managed WordPress on RunxBuild starts at three dollars a month with a file manager and a database browser in the dashboard, so the two things people actually open cPanel for are there without SFTP or a separate database tool, and autoscaling handles the concurrency limit that shared plans hit first.

Useful related references:

FAQ

Is cPanel good for a blog?

For a small blog it is genuinely fine. The one-click installer handles the setup, the file manager and database tools cover most maintenance, and the cost is low. Its limits are concurrency during traffic spikes, no staging environment and no deploy process.

How do I install a blog on cPanel?

Use the application installer under Software, choose the https protocol and an empty directory for the site root, set a non-default admin username, and let it create the database. Afterwards, issue the certificate and check the site loads over https without mixed-content warnings.

Why do emails from my cPanel blog go to spam?

Because they are sent from a shared server IP whose reputation you do not control, usually without matching SPF and DKIM records. Send through an authenticated transactional email service instead, using a from address that genuinely exists at your domain.

Are cPanel backups enough?

Not on their own. Host-side backups usually live on the same infrastructure as the site, so they cover your own mistakes but not account loss or compromise. Keep a copy off the server, and restore one into a staging subdomain once so you know it works.

Why are scheduled posts not publishing?

Because the platform’s scheduler runs on page visits by default, so a quiet site never triggers it. Add a real cron entry in cPanel to run the scheduler every fifteen minutes, and disable the visitor-triggered version so both are not running at once.

#blog cpanel#wordpress cpanel#softaculous#shared hosting#cpanel migration