How to install WordPress is the first hurdle for anyone turning a domain into a live site or a local sandbox. In 2026 the core software remains free, but the ecosystem of hosts, security modules, and local‑dev tools has grown complex enough that a clear roadmap saves hours of trial‑and‑error.
This guide walks you from the moment you open a browser to a fully functional installation, covering shared hosting, VPS with SELinux, local development, and multisite networks. You’ll also see the trade‑offs that matter for beginners, power users, and enterprise managers.
Overview: What Is WordPress and Why Install It?
WordPress as a CMS: The Basics
WordPress is an open‑source content management system (CMS) that powers roughly 43 % of the web in 2026. It provides a web‑based dashboard where you can add pages, publish posts, install themes, and extend functionality with plugins—all without touching code.
Why You Need a Proper Installation
A clean install gives you control over security settings, performance tweaks, and the ability to scale. Skipping the manual steps and relying on a one‑click auto‑installer may feel convenient, but it hides the database credentials, file permissions, and server‑level configurations that later become critical when you harden the site.
Definition: CMS – software that enables users to create, edit, and manage digital content via a graphical interface rather than direct code manipulation.
Why Manual Installation Matters in 2026 (how to install wordpress)
Learning Curve vs Auto‑Installers
Auto‑installers such as Softaculous or Hostinger’s hPanel can spin up a site in under five minutes, but they skip the “why” behind each step. Understanding the process builds troubleshooting muscle; you’ll recognize a missing wp-config.php line before the dreaded “Error establishing a database connection” appears.
Security & Performance Gains
Manual installs let you:
- Set strict file permissions (e.g.,
440forwp-config.php). - Choose a non‑default table prefix, reducing automated SQL‑injection risk.
- Configure PHP to the latest stable 8.1+ version, a major factor in LCP (Largest Contentful Paint) improvements.
Prerequisites & System Requirements (how to install wordpress)
Hosting Environment Checklist
Before you download anything, verify that your host offers:
- PHP 8.1 or newer.
- MySQL 5.7+ or MariaDB 10.5+.
- SSL/TLS support (Let’s Encrypt integration is standard in 2026).
- SSH access if you plan a VPS install.
PHP, MySQL/MariaDB, and SSL Versions
Older PHP 5.6 installations cause plugin conflicts and expose known vulnerabilities. Ensure the server reports phpinfo() with PHP Version => 8.1.x. For databases, MariaDB typically delivers better concurrency on shared hosts.
File Permissions & SELinux Basics
On a Linux VPS, SELinux runs in enforcing mode by default. Files must carry the correct context (httpd_sys_content_t) or Apache will silently deny access. The following command assigns the proper context to the WordPress directory:
sudo chcon -R -t httpd_sys_content_t /var/www/html/wordpress
Step‑by‑step Manual Install on Shared Hosting (how to install wordpress)
Downloading WordPress
Visit wordpress.org, download the ZIP, and extract it locally.
Creating the Database and User
Log in to your host’s control panel (cPanel, hPanel, etc.) and open phpMyAdmin. Create a new database, e.g., wp_demo, then add a user wp_user with a strong password and grant ALL PRIVILEGES on that database.
Configuring wp‑config.php
Rename wp-config-sample.php to wp-config.php. Edit the file with your database details:
define('DB_NAME', 'wp_demo');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'your_strong_password');
define('DB_HOST', 'localhost');
$table_prefix = 'wp_custom_';
Generate fresh authentication keys from the WordPress.org secret‑key service and paste them into the file.
Uploading Files & Setting Permissions
Use an FTP client (FileZilla, WinSCP) or the host’s file manager to upload the entire WordPress folder into public_html. Then set directory permissions to 755 and file permissions to 644. Finally, protect wp-config.php:
chmod 440 wp-config.php
Manual Install on a VPS with Apache & SELinux
Server Prep: Apache, PHP, MariaDB
Connect via SSH:
ssh root@your-vps-ip
yum update -y
yum install httpd php php-mysqlnd mariadb-server -y
systemctl enable httpd mariadb
systemctl start httpd mariadb
Handling SELinux Contexts
After placing WordPress in /var/www/html/wordpress, run:
semanage fcontext -a -t httpd_sys_content_t "/var/www/html/wordpress(/.*)?"
restorecon -Rv /var/www/html/wordpress
Secure wp‑config.php Placement
Move the configuration file one level above the web root to prevent direct web access:
mv /var/www/html/wordpress/wp-config.php /var/www/html/
Update Apache’s DocumentRoot and add a Directory block pointing to the wordpress subfolder.
Finalizing Permissions & Restarting Services
Apply the standard permissions, then reload Apache:
chmod 440 /var/www/html/wp-config.php
chmod -R 755 /var/www/html/wordpress
systemctl restart httpd
Local Development Setups: XAMPP vs Local by Flywheel
XAMPP on Windows: Common Port & Firewall Issues
Download XAMPP from the official Apache Friends site. Install with default settings, then start Apache and MySQL from the control panel. If port 80 is already bound, edit httpd.conf to use port 8080 and open the same port in Windows Firewall.
Local by Flywheel: One‑Click Local WP
Local (by Flywheel) bundles Apache, MySQL, and PHP in a GUI. Click “+ New Site”, choose preferred PHP version, and it creates a localhost site instantly. No manual database creation is needed; the tool handles it.
Syncing Local to Production
When you’re ready to go live, export the database via phpMyAdmin (XAMPP) or Local’s built‑in export, copy the wp-content folder, and import on the production server. Run a search‑replace (e.g., Search Replace DB) to swap localhost URLs with your real domain.
WordPress Multisite Considerations
When Multisite Makes Sense
Universities (University of Florida, University of Illinois at Chicago) use Multisite to host departmental pages under a single admin umbrella. It reduces plugin duplication and centralizes updates.
Setting Up Network Admin
Add the following line to wp-config.php before the /* That's all, stop editing! */ comment:
define('WP_ALLOW_MULTISITE', true);
After saving, log in, go to Tools → Network Setup, choose sub‑domains, and follow the on‑screen instructions.
DNS & Wildcard Records
To make sub‑domains resolve, create a wildcard A record (e.g., *.example.com → 192.0.2.34) via your provider’s DNS Zone Editor. This tells DNS to point any sub‑domain to the same server IP.
Real‑World Tradeoffs & Performance
Manual vs Auto‑Installer: Speed vs Knowledge
Auto‑installers finish in 2–5 minutes, but manual installs teach you to read server logs, adjust .htaccess, and verify SSL chains—skills that pay off when a plugin update breaks the site.
VPS vs Shared: Flexibility vs Cost
Shared plans (Hostinger, Bluehost) cost $3–$10 /month and include a one‑click installer. VPS instances (Liquid Web) start around $25 /month, offering root access, custom PHP versions, and the ability to tune Apache/SELinux for sub‑second LCP (Liquid Web reports 1.541 s on an unoptimized install).
Local vs Live: Testing vs Deployment
Local environments keep the production site safe from experimental plugins. However, they add a migration step that can introduce URL mismatches if you forget a search‑replace.
Pros, Cons, and Best Practices
Security Best Practices
- Change the default “admin” username during the install wizard.
- Set
wp-config.phppermissions to 440. - Install an SSL certificate and force HTTPS via
.htaccess.
Backup & Recovery
Enable daily database snapshots with UpdraftPlus or rely on host‑provided snapshots (Liquid Web offers automated daily backups).
Version Control for wp‑content
Initialize a Git repo inside wp-content to track theme and plugin changes. Exclude uploads or use Git‑LFS for large media.
Common Mistakes & Troubleshooting
Permission Errors & Silent Failures
If pages return a 500 error, check that SELinux isn’t blocking Apache (audit2why can decode the logs).
Database Connection Issues
Double‑check that the DB host is “localhost” or the correct socket path. A stray space in wp-config.php will break the connection.
SELinux Blocking Apache
Run setsebool -P httpd_can_network_connect_db 1 to allow Apache to talk to MariaDB.
Who Should Use Which Install Method?
| Target Persona | Recommended Option | Key Reason & Real‑World Benefit |
|---|---|---|
| Beginner with Shared Hosting | One‑click auto‑installer (Hostinger hPanel) | Fast setup, minimal CLI exposure, ideal for first site. |
| Intermediate VPS User | Manual Apache + SELinux install (Liquid Web style) | Full control, ability to tune PHP/SELinux for sub‑second LCP. |
| Advanced Developer | Local by Flywheel + Git workflow | Rapid iteration, easy push to staging, version‑controlled theme work. |
| Enterprise Site Manager | WordPress Multisite on a managed VPS | Centralized plugin updates, single dashboard for dozens of sub‑domains. |
Final Verdict & Next Steps
Verdict: If you’re just launching a blog, start with a one‑click installer to get online fast. As soon as you need custom PHP versions, SELinux hardening, or multisite, switch to a manual VPS install. The skill gap pays off in security and performance.
Choosing the Right Path
Match your technical comfort to the method:
- Zero‑code, low‑risk: Shared host auto‑installer.
- Performance‑oriented, hands‑on: VPS manual install.
- Design‑first, frequent testing: Local by Flywheel or XAMPP.
- Multiple sites under one roof: Multisite with wildcard DNS.
Resources for Continued Learning
- WordPress Developer Handbook
- Liquid Web CLI guide
- ThemeIsle XAMPP tutorial
- HostingAdvice Multisite guide
How to install WordPress correctly is the foundation for every future customization, security patch, and performance tweak you’ll apply. Follow the steps that match your persona, lock down the site early, and you’ll spend more time creating content than fighting configuration issues.