Every Kenyan host advertises Laravel support. The differences only show up in week three, when a queued job silently stops running and nobody notices because the queue worker died quietly.
Here is what Laravel genuinely needs, what each hosting shape costs you, and the questions that separate a real PHP host from a cPanel box with a Laravel logo on the marketing page.
What Laravel actually requires
- PHP 8.2+ with
pdo_mysql,mbstring,bcmath,gd,zip,intl,opcache - Composer available at deploy time, not just on your laptop
- Document root at
public/— pointing at the project root is a security hole, not a preference - Write access for
storage/andbootstrap/cache/by the PHP-FPM user - A queue worker — a long-running process, not a cron job
- The scheduler —
* * * * * php artisan schedule:run
That last pair is where shared hosting ends. Most shared plans give you cron but not a supervised long-running process, so queue:work gets killed after a few minutes and your emails, exports and webhooks stop without an error anywhere.
The three realistic options
| Shared / cPanel | Raw VPS | Managed PHP platform | |
|---|---|---|---|
| Monthly cost | Lowest | Low, plus your time | Middle |
| Queue worker | Usually no | Yes | Yes |
| PHP version control | Whatever they ship | Yours | Pinned per site |
| Database | Shared instance | Dedicated | Dedicated |
| You patch the OS | No | Yes | No |
| Deploy | FTP | Git + script you wrote | Git push |
The VPS column is honest about the catch: the server is cheap because you are the operations team. Patching, backups, TLS renewal, PHP upgrades and the 2am disk-full alert are all yours.
The costs nobody puts on the pricing page
- Backups. Not snapshots that live on the same provider. A nightly dump you have actually restored once.
- Staging. Testing a migration on production is how you learn what
down()does. - Email. Shared hosts' mail goes to spam. A transactional provider is a separate line item.
- Your time. At any sane hourly rate, ten hours of server maintenance costs more than a year of managed hosting.
- Payment friction. A $5 host that needs a dollar card, when your revenue arrives via M-PESA, is not actually cheaper.
Latency is a product decision
Hosting in Europe adds roughly 120–200 ms per round trip from Nairobi. On a page with six API calls that is a second of dead time before anything renders. Two fixes, in order of effort:
- Serve static assets from a CDN, so images and CSS never cross an ocean.
- Put the application and database in the same region, close to the users who generate the most requests.
A CDN hides slow assets. It cannot hide a slow database query on every page load.
Eight questions before you pay anyone
- Which PHP versions can I choose, and who upgrades them?
- Can I run a supervised queue worker, or only cron?
- Is the document root configurable to
public/? - Do I get a real database user and remote access for migrations?
- How are backups taken, where do they live, and how do I restore one?
- Is TLS automatic and renewing, or a yearly manual task?
- Can I deploy from Git without FTP?
- Can I pay in KSh, and does the invoice come out in the name of my business?
If a host cannot answer 2 and 3 without a sales call, they are selling web space, not Laravel hosting.
Deploying Laravel without drama
The commands are boring, which is the point:
git pull --ff-only
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache && php artisan route:cache && php artisan view:cache
sudo systemctl restart myapp-queue
Two rules that prevent most production incidents: run config:cache after the environment file is in place, and restart the queue worker on every deploy — a worker running old code against a new schema is a subtle, expensive bug.
FAQ
Can I run Laravel on the cheapest shared plan?
You can run the HTTP request path. The moment you need queues, a scheduler you trust, or a database you can tune, you have outgrown it. Plan for that on day one if the app sends email or processes payments.
Is a VPS cheaper than managed hosting?
The invoice is smaller. The total cost depends entirely on what your hour is worth and whether you enjoy patching servers. Count the maintenance time honestly before deciding.
Do I need a separate server for the queue?
Not at first. Run the worker as its own systemd service on the same box with its own memory cap, so a runaway job cannot starve the web process.
If you would rather not own any of this, our PHP hosting plans include per-site databases, composer deploys, queue workers and automatic TLS — with M-PESA billing. If you want the DIY version, the systemd and nginx setup in our Node deployment guide applies to PHP-FPM almost line for line.
Share this article