WordPress runs on almost any server with PHP and MySQL, but “runs” and “runs well” are different things. This guide covers the official requirements, the PHP extensions you actually need, and practical VPS sizing for different kinds of WordPress sites.
Official recommendations
| Component | Recommended |
|---|---|
| PHP | 8.3 or newer (8.2 also fine); avoid end-of-life versions |
| Database | MySQL 8.0+ or MariaDB 10.6+ |
| HTTPS | Required in practice (browsers, SEO, logins, payments) |
| Web server | Nginx or Apache (LiteSpeed/OpenLiteSpeed also popular) |
WordPress still technically supports older versions, but they’re slower, and many no longer receive security updates. See WordPress PHP 8 compatibility.
PHP extensions
Required or strongly recommended:
sudo apt install -y php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-imagick \
php8.3-intl php8.3-mbstring php8.3-xml php8.3-zip php8.3-opcache php8.3-bcmath
| Extension | Used for |
|---|---|
| mysqli / mysqlnd | Database connection |
| curl | HTTP requests (updates, APIs) |
| gd or imagick | Image resizing; Imagick supports more formats (WebP, AVIF) |
| mbstring, intl | Multibyte text, internationalisation |
| xml, dom | Feeds, imports, many plugins |
| zip | Plugin and theme installs and updates |
| opcache | PHP performance (essential) |
| redis (optional) | Persistent object cache |
Tools → Site Health in WordPress lists missing extensions. See PHP extensions.
PHP settings worth changing
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
opcache.memory_consumption = 256
See php.ini settings and increase the upload size.
Web server choice
| Server | Notes |
|---|---|
| Nginx + PHP-FPM | Most common on VPS; fast; FastCGI cache for full-page caching |
| Apache + PHP-FPM | .htaccess support (some plugins expect it); use the event MPM |
| OpenLiteSpeed | Built-in page cache with the LiteSpeed Cache plugin |
Guides: WordPress on Ubuntu with Nginx, install a LAMP stack, and install OpenLiteSpeed.
VPS sizing by site type
| Site type | Traffic profile | Suggested VPS |
|---|---|---|
| Personal blog, brochure site | Mostly cached, < 50k visits/month | 1–2 vCPU, 2 GB RAM |
| Business site, several sites on one server | Moderate, some logged-in users | 2 vCPU, 4 GB RAM |
| Busy content site, membership, LMS | Many uncached requests | 4 vCPU, 8 GB RAM |
| WooCommerce store | Carts and checkout are uncached | See WooCommerce VPS requirements |
| Agency hosting many client sites | Many PHP pools and databases | 4–8 vCPU, 8–16 GB RAM |
What drives resource needs:
- Uncached requests (logged-in users, carts, search, admin) need PHP workers. Each PHP-FPM worker typically uses 50–150 MB.
- Database size and the InnoDB buffer pool.
- Plugins: heavy page builders, LMS and membership plugins use more CPU and RAM.
See how much RAM a VPS needs and PHP-FPM tuning.
Disk
- WordPress core plus plugins: a few hundred MB. Media libraries grow with time.
- Leave room for local backups (before off-site upload), logs, and updates.
- SSD storage makes a real difference for database-heavy sites. VPS.DO plans all use SSD storage.
Other essentials
- HTTPS with Let’s Encrypt. See Let’s Encrypt.
- Outgoing email through SMTP. See WordPress email and SMTP.
- A real cron job instead of WP-Cron on page loads. See WordPress real cron.
- Backups off the server. See WordPress backup without a plugin.
- Server location near your visitors. See choosing a VPS location.
Quick reference
| Item | Recommendation |
|---|---|
| PHP | 8.3 with OPcache |
| Database | MySQL 8 / MariaDB 10.6+ |
| Starting VPS | 2 vCPU / 4 GB for most business sites |
| Must-haves | HTTPS, SMTP, real cron, off-site backups |
Related: WordPress VPS hosting and WordPress VPS performance tuning.