ISPmanager 6 Business and above include a built-in CMS installer. WordPress installs automatically, creating the database, uploading the files and writing the configuration — the whole process takes 3-5 minutes against half an hour of manual setup.
Automatic installation through CMS
Path in the panel: WWW → CMS → Create → WordPress.
| Field | Recommendation |
|---|---|
| Domain | Your domain |
| Directory | Leave it empty (site root) |
| Version | Latest stable |
| Admin login | NOT "admin" — pick a unique one |
| Your working email |
The panel creates the database and a MySQL user with limited privileges on its own and fills in wp-config.php — there is no need to touch these fields manually; more on managing databases is in the article on databases in ISPmanager 6.
Manual WordPress installation
The manual route is needed when the site is deployed outside the domain root, a non-standard directory layout is required, or the CMS is being moved from another host together with an existing database.
Step 1: create the site and the database
1. WWW: Domains, Create, example.com (PHP 8.2, Nginx)
2. Databases: MySQL, Create, example_wp
Step 2: download WordPress
# Over SSH
cd /var/www/user1/data/www/example.com/www/
wget https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz --strip-components=1
rm latest.tar.gz
Step 3: configure wp-config.php
cp wp-config-sample.php wp-config.php
nano wp-config.php
# Fill in:
define('DB_NAME', 'user1_example_wp');
define('DB_USER', 'user1_wpuser');
define('DB_PASSWORD', 'password_from_ISPmanager');
define('DB_HOST', 'localhost');
After installation, always set up SSL (Let's Encrypt) and enable the HTTP to HTTPS redirect in the domain settings — the detailed steps are in the article on SSL in ISPmanager 6.
Common installation errors explained
- Error establishing a database connection — most often a typo in the username or database name: ISPmanager adds the account prefix (
user1_) automatically, and it is easy to forget it when typing wp-config.php by hand. - 403 Forbidden when accessing wp-admin — the default ISPmanager Nginx configuration does not pass
PATH_INFOrequests through for some files; check that the domain was created with the WordPress template, not as a "static site". - Are you sure you want to do this? (nonce check fails) — after moving files by hand,
siteurlandhomein thewp_optionstable were not updated, so cookies and nonces are still bound to a different domain. - The uploaded file exceeds the upload_max_filesize directive — the PHP limit in ISPmanager is lower than needed for a media library upload; it is fixed in the domain's "PHP settings" section, not inside WordPress itself.
Comparing automatic and manual installation
| Criterion | Through the CMS installer | Manually over SSH |
|---|---|---|
| Time | 3-5 minutes | 15-30 minutes |
| Database and user creation | Automatic | Manual |
| Fits moving an existing site | No | Yes |
| Control over directory layout | Limited | Full |
Optimal Nginx configuration for WordPress
ISPmanager adds the basic rules automatically. For extra tuning over SSH, use the "Additional directives" section:
# Cache static assets in the site config
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# Block direct access to wp-config.php
location = /wp-config.php {
deny all;
}
Do not edit the Nginx configs by hand for domains managed by ISPmanager — the panel overwrites the changes the next time the site settings are saved. Use the "Additional directives" section in the domain settings instead.
When the automatic installer does not fit
- The site is moving from another host together with an existing database and media files — the installer creates a clean database instead of attaching an existing one.
- WordPress Multisite with its own subdomain structure is needed — the standard CMS wizard does not set that up.
- A specific older WordPress version is required for compatibility with a legacy plugin — the installer always deploys the latest stable release.
- A separate database on an external MySQL server is needed instead of a local one — the CMS wizard only creates a user for the local socket, and an external connection has to be written into wp-config.php by hand after installation.
How to verify the installation succeeded
# Confirm the site loads with no PHP errors
curl -sI https://example.com/ | head -5
# Check the WordPress version and the active theme with WP-CLI
wp core version --path=/var/www/user1/data/www/example.com/www/
wp theme list --path=/var/www/user1/data/www/example.com/www/
# Confirm the database is connected and the tables exist
wp db check --path=/var/www/user1/data/www/example.com/www/
If all three commands run without errors and the page returns HTTP 200, the installation is done. The last step is to log in to /wp-admin/ as the administrator and replace the password with a permanent one if a temporary one was used.