Two things worth clarifying upfront that often get overlooked — addressing them here saves troubleshooting time later.
First, don't chase the latest PHP version. WordPress 6.x runs well on PHP 8.1 and 8.2, but some older plugins and themes still throw errors on PHP 8.3. Check compatibility notes for your theme and plugins before choosing a version. When in doubt, go with 8.2 — it's currently the best balance of compatibility and performance.
Second, set up DNS before applying for SSL. Let's Encrypt validates your domain from the outside, and if DNS isn't pointing at your VPS yet, SSL will fail. Change your DNS records first, wait for propagation, then handle SSL — it saves repeated troubleshooting.
Shortest path: Create site → Create database → Install WordPress → DNS setup → SSL → Enable caching → Done.
What You Need Before Starting
| Item | Requirement |
|---|---|
| VPS RAM | 2 GB minimum; 4 GB recommended for WooCommerce |
| aaPanel status | Installed and accessible |
| LNMP environment | Nginx + MySQL + PHP installed |
| Domain name | Purchased and ready for DNS configuration |
| PHP version | 8.2 recommended |
aaPanel installation and LNMP environment setup are covered in a separate guide. This one starts from the panel login.
Step 1: Create a Website in aaPanel
Log in to the panel and click "Website" → "Add Site" in the left sidebar.
Fields to fill in:
Domain: Enter your domain, e.g. example.com. If you want www support, add www.example.com on a second line.
Root Directory: Keep the default. aaPanel will automatically create /www/wwwroot/example.com.
PHP Version: Select the version you installed — 8.2 is recommended.
Database: Select "Create Database" and fill in a database name, username, and password. You'll need all three when configuring WordPress — write them down.
Once created, aaPanel automatically generates the Nginx config file and sets up the site directory.
Step 2: Configure DNS
At your domain registrar or DNS provider (Cloudflare is recommended), add the following records:
A @ your-VPS-public-IP
A www your-VPS-public-IP
If you're using Cloudflare, turn off the proxy (orange cloud) and set it to DNS only for now. Enable the proxy after SSL is configured. The reason: with Cloudflare proxying active, Let's Encrypt's domain verification behaves differently and newcomers frequently get stuck at this point.
DNS propagation typically takes anywhere from a few minutes to 48 hours, though 30 minutes is common. Verify it with:
nslookup example.com
If the returned IP matches your VPS, propagation is complete.
Step 3: Install WordPress
aaPanel offers two installation methods.
Method 1: One-click install (recommended for beginners)
In the website management page, find your domain and click the "WordPress" button on the right. Fill in:
- Admin username
- Admin password
- Admin email
- Database credentials (use the ones just created)
Click install and wait for completion. The WordPress dashboard will be accessible at your domain immediately after.
Method 2: Manual install (for specific versions or custom configurations)
# Navigate to the site root
cd /www/wwwroot/example.com
# Download WordPress
wget https://wordpress.org/latest.tar.gz
# Extract and move files into place
tar -xzf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz
# Set correct ownership and permissions
chown -R www:www /www/wwwroot/example.com
chmod -R 755 /www/wwwroot/example.com
Then open your domain in a browser and follow the installation wizard. Enter the database details:
- Database name: the one you created
- Username: the one you created
- Password: the one you created
- Database host:
localhost - Table prefix: keep the default
wp_or change it for slightly better security
Complete the installation and set your site title and admin account.
Step 4: Apply for an SSL Certificate
Once DNS is propagated, click "SSL" for your domain in aaPanel's website management, select "Let's Encrypt," enter an email address, and click apply.
After the certificate is issued, enable "Force HTTPS" to redirect all HTTP traffic automatically.
Then in the WordPress dashboard under "Settings → General," update both the WordPress Address and Site Address to https:// URLs. This prevents mixed content issues.
Step 5: Set Up Permalinks
In the WordPress dashboard, go to "Settings → Permalinks" and select "Post name," then save.
This changes your URLs from example.com/?p=123 to example.com/post-title/ — better for SEO and more readable. aaPanel will update the Nginx config automatically on save. If you see 404 errors afterward, reload Nginx:
nginx -s reload
Step 6: Configure Caching
aaPanel uses Nginx by default, so caching is configured at the application layer.
Object caching with Redis. If Redis was installed with aaPanel, install the Redis Object Cache plugin in WordPress. After activating it, add the following to wp-config.php:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
Then click "Enable Object Cache" in the plugin settings. Object caching reduces database queries — the impact is especially noticeable on WooCommerce.
Page caching with WP Super Cache or W3 Total Cache. One note worth being direct about: LiteSpeed Cache appears frequently in tutorials, but it requires a LiteSpeed or OpenLiteSpeed server to activate its core caching features. On aaPanel's default Nginx setup, most of LiteSpeed Cache's actual caching functionality simply won't work. Don't let the plugin name mislead you.
OPcache provides PHP bytecode caching and should already be enabled in aaPanel's PHP settings. It benefits all PHP applications and requires no additional configuration.
Common Errors and Troubleshooting
Site not accessible
Check in order: DNS propagated → VPS firewall allows ports 80/443 → cloud security group allows ports 80/443 → site status normal in aaPanel → Nginx is running (systemctl status nginx).
502 Bad Gateway
Usually means PHP-FPM isn't running, or there's a version mismatch between PHP and the Nginx config.
# Check PHP-FPM status
systemctl status php8.2-fpm
# Restart PHP-FPM
systemctl restart php8.2-fpm
You can also restart the PHP service directly from the aaPanel interface.
403 Forbidden
A file permissions issue. Run:
chown -R www:www /www/wwwroot/example.com
chmod -R 755 /www/wwwroot/example.com
find /www/wwwroot/example.com -name "*.php" \
-exec chmod 644 {} \;
Error Establishing a Database Connection
Check that the database credentials in wp-config.php match what was created in aaPanel:
cat /www/wwwroot/example.com/wp-config.php \
| grep DB_
Verify DB_NAME, DB_USER, and DB_PASSWORD are all correct, then confirm MySQL is running:
systemctl status mysql
SSL application fails
The most common cause is DNS not yet propagated, or port 80 blocked by a firewall. Confirm DNS is resolving correctly with nslookup, confirm port 80 is open, then try again. If you're using Cloudflare, make sure the proxy is set to DNS only before applying for the certificate.
FAQ
Is aaPanel a good fit for WordPress?
Yes. aaPanel handles one-click WordPress installation, the LNMP environment is configured automatically, and SSL is managed through the panel interface. Compared to manual setup, it saves considerable time. It's currently one of the most accessible free solutions for users without Linux administration experience.
Is 2 GB of RAM enough for WordPress?
For personal blogs and small to medium content sites, yes. WooCommerce stores may feel the pressure under higher traffic — 4 GB is a more comfortable starting point for e-commerce. If RAM is tight, adding Swap can provide temporary relief, but it's not a sustainable solution.
Which PHP version should I use?
PHP 8.2 is the current recommendation — solid compatibility and good performance. Avoid PHP 8.3 for now; plugin compatibility hasn't fully caught up. Also avoid 7.x, which is past end-of-life.
Is aaPanel free?
The base version is completely free and covers the vast majority of website hosting needs. The Pro version adds extra features and is available as an optional purchase.
Can I run multiple WordPress sites on one aaPanel installation?
Yes. aaPanel supports multi-site management — each site has its own domain, database, and PHP configuration, and they don't interfere with each other. With sufficient RAM, running 3–5 small sites simultaneously is no problem.
aaPanel vs cPanel for WordPress?
For individuals and small teams, the fact that aaPanel is free is already a significant advantage. cPanel is paid, more feature-rich, but most of those additional features aren't needed for typical WordPress hosting. If budget is a constraint, aaPanel is fully adequate.
Does it work with Cloudflare?
Yes, and it's recommended. Cloudflare provides free CDN, DDoS protection, and SSL. When using both together: disable the Cloudflare proxy (set to DNS only) when applying for the Let's Encrypt certificate in aaPanel, enable the proxy after the certificate is successfully issued, and set Cloudflare's SSL mode to "Full (Strict)."
Is aaPanel secure?
The panel itself is fine, but the default configuration needs to be hardened. Non-negotiable steps: change the default panel port, set a strong password, enable 2FA, configure an IP whitelist, and disable root password SSH login in favor of SSH key authentication. Going live without any of this done is how most servers get compromised.
Recommended Configuration Summary
| Item | Recommended Choice |
|---|---|
| Web server | Nginx |
| PHP version | 8.2 |
| Database | MySQL 8.0 |
| SSL | Let's Encrypt |
| Object cache | Redis + Redis Object Cache plugin |
| Page cache | WP Super Cache or W3 Total Cache |
| DNS / CDN | Cloudflare |
| Backup | aaPanel scheduled backup + off-site storage |
| SSH | SSH key authentication, password login disabled |
VPS Recommendations
Different scenarios suit different providers — use as a reference:
DigitalOcean suits developers and small to medium websites. Clean interface, thorough documentation, flexible hourly billing. Not the right call for users on a tight budget — equivalent specs cost more than Hetzner.
Vultr has the widest node coverage globally, spanning 30+ cities. Good for workloads that need a specific regional presence. Less compelling for users focused solely on Europe or for those who are price-sensitive.
Hetzner is a European provider with the best price-to-performance ratio in this tier — the same budget gets you significantly more hardware. Well-suited when target users are in Europe or when you just need a development machine. Not the right fit if you need Asia-Pacific nodes or optimized access from mainland China.
Contabo offers large RAM and storage at low prices. Suitable when you need high specs on a limited budget. Not ideal if fast customer support response time matters to you.
Kamatera allows fully custom configurations — CPU, RAM, and disk are independently adjustable. Good for users with specific, non-standard resource requirements. Less discussed in Chinese-language communities, so do your own evaluation before purchasing.