WORDPRESS
Jun 23, 2026

How to Deploy WordPress on a VPS Without cPanel

9 min read
Author
CloudStick Team
WordPress Engineer
Share this article
How to Deploy WordPress on a VPS Without cPanel
CloudStick
WordPress without cPanel

Why Modern WordPress Deployments Skip cPanel

cPanel costs $30–$50/month at entry level and consumes 400–600MB of RAM before you deploy a single website. That's 40% of a 1GB VPS before WordPress even starts. It was designed for shared hosting environments where a single license serves dozens of customers — running it on your own VPS means paying for infrastructure that works against your server's performance, not for it.

The cPanel licensing model also changed in 2019 — pricing jumped 400% overnight, and the per-account billing structure punishes agencies who host many small sites. Developers and agencies running WordPress in 2026 are choosing purpose-built alternatives: Nginx + PHP-FPM + a lightweight management panel that adds a dashboard without adding hundreds of megabytes of unused shared-hosting software.

Without cPanel, you get three things: faster WordPress (more RAM for PHP-FPM), cheaper server (smaller VPS tier is sufficient), and full control (no cPanel processes competing for resources or overriding your Nginx config).

What You Need Instead of cPanel

A cPanel-free WordPress stack has three components: a web server (Nginx), a PHP runtime (PHP-FPM), and a database (MySQL 8.0). Optionally, add a lightweight server management panel like CloudStick to get a GUI for server operations without the cPanel overhead.

The resource comparison is stark: cPanel uses 400–600MB RAM idle. Nginx uses 20–30MB. PHP-FPM uses 30–50MB per worker. CloudStick's management agent uses under 50MB. The entire cPanel-free stack at idle fits in 200MB, leaving over 800MB free on a 1GB VPS for actual WordPress traffic.

PREREQUISITE

Ubuntu 24.04 LTS VPS with at least 1GB RAM, sudo access, and a domain pointed to the server's IP address. This guide installs Nginx, MySQL 8.0, and PHP 8.3-FPM directly — no control panel required.

Setting Up the Server Stack

Install Nginx, MySQL, and PHP-FPM with all WordPress dependencies. PHP 8.3 is the current production-ready version as of 2026:

sudo apt update && sudo apt install -y nginx mysql-server \
php8.3-fpm php8.3-mysql php8.3-xml php8.3-curl \
php8.3-gd php8.3-mbstring php8.3-zip php8.3-imagick \
php8.3-intl php8.3-bcmath unzip wget
# Create database for WordPress
sudo mysql -e "CREATE DATABASE wpdb CHARACTER SET utf8mb4;"
sudo mysql -e "CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'SecurePass!';"
sudo mysql -e "GRANT ALL ON wpdb.* TO 'wpuser'@'localhost';"
# Download and place WordPress
wget -q https://wordpress.org/latest.tar.gz -O /tmp/wp.tar.gz
sudo tar -xzf /tmp/wp.tar.gz -C /var/www/
sudo mv /var/www/wordpress /var/www/yourdomain.com
sudo chown -R www-data:www-data /var/www/yourdomain.com

Nginx Configuration Without cPanel

cPanel generates Nginx configs for you, but they're bloated with compatibility shims. Writing your own config is 20 lines and gives you complete control. Create /etc/nginx/sites-available/yourdomain.com:

server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com;
index index.php;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# Block PHP in uploads (security)
location /wp-content/uploads {
location ~ \.php$ { deny all; }
}
}

Enable the site and test the config: sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx

SSL and Basic Security

Free SSL from Let's Encrypt replaces the SSL management cPanel provided. Certbot installs in two commands and auto-renews via a systemd timer it configures itself:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
# Verify auto-renewal timer is active
sudo systemctl status certbot.timer

Add a basic UFW firewall — something cPanel would configure for you but that you now own directly:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw --force enable
TIP

WordPress needs write access to wp-content/ for themes, plugins, and uploads, but the rest of the site should be read-only from PHP's perspective. Set find /var/www/yourdomain.com -type f -exec chmod 644 {} \; and find /var/www/yourdomain.com -type d -exec chmod 755 {} \; after installing WordPress.

CloudStick vs cPanel for WordPress Hosting

If you want a dashboard without the cPanel overhead, CloudStick is the purpose-built alternative. CloudStick charges $9/month per server — not per account, not per site. You can host unlimited WordPress sites on one server under one $9 plan, while cPanel charges per cPanel account plus the base license fee.

CloudStick installs the entire stack from this guide automatically — Nginx, PHP-FPM, MySQL, SSL, firewall — and adds one-click WordPress installation, per-site PHP version management, automated backups, and a team collaboration layer. The management agent uses under 50MB RAM, compared to cPanel's 400–600MB. You keep full root access and can run manual commands alongside the dashboard at any time — you're not locked into the tool.

Leave a comment
Full Name
Email Address
Message
Contents

We use cookies to improve your experience

CloudStick uses cookies to personalise content, analyse traffic and keep you signed in. Cookie Policy · Terms of Service

Manage cookies