WordPress for Ubuntu 24.04 Server
Installs and configures the latest stable release of WordPress with Nginx, PHP-FPM, and MariaDB — automatically detecting whether socket or password authentication is in use.
This is a production-focused installer, not a demo.
It assumes Nginx, PHP-FPM, and MariaDB are already installed and running.
Related Installers
If you don’t have the required components, you can use these compatible installers:
Download the Script
Clone this repository to your server:
git clone https://git.x-files.dk/web-application/wordpress-ubuntu.git
cd wordpress-ubuntu
Usage
Run the installer using:
sudo ./wordpressinstall -n <domain> -d <dbname> -u <dbuser> -p <dbpass> [options]
Examples
The installer automatically detects if socket authentication is active.
Only include -m
and -a
if your MariaDB setup does not use socket authentication.
sudo ./wordpressinstall -n wp.example.com -d wpdb -u wpuser -p wpPass123
sudo ./wordpressinstall -n wp.example.com -d wpdb -u wpuser -p wpPass123 -m rootpwd
sudo ./wordpressinstall -n wp.example.com -d wpdb -u wpuser -p wpPass123 -a admin -m adminpwd
Options
Flag | Description |
---|---|
-m <password> |
MariaDB root or admin password — required only if socket authentication is disabled |
-a <username> |
Optional MariaDB admin username (defaults to root if not specified) |
-h , --help |
Show the help screen (reflects detected socket status) |
Configuration
When installation completes, visit:
http://<domain>/wp-admin/install.php
Then create your WordPress site title and administrator account.
(Database configuration is already completed by the installer.)
Features
- Installs and configures WordPress automatically
- Creates the MariaDB database and user
- Generates an Nginx host configuration dynamically
- Integrates runtime WordPress hardening and rate limiting
- Validates Nginx configuration before restarting services
- Detects MariaDB socket or password authentication automatically
Configuration Details
File Locations
File | Description |
---|---|
/var/www/html/<domain> |
WordPress site directory |
/etc/nginx/conf.d/<domain>.conf |
Generated Nginx host file |
/etc/nginx/conf.d/includes/wp-hardening.conf |
WordPress hardening |
/etc/nginx/conf.d/wp-rate-limit.conf |
Request rate-limiting |
Behavior
- The installer automatically checks for MariaDB socket authentication.
If available, it connects locally asroot
(no password). - If socket authentication is not detected, use
-m
(and optionally-a
) to supply credentials. - All database commands include
IF NOT EXISTS
logic, making re-runs safe. - Nginx configuration is validated (
nginx -t
) before restarting services.
Nginx Integration
The generated Wordpress configuration file listens on port 80.
To enable HTTPS (port 443), use the example provided here
Note
The file also includes optional caching directives (commented out by default). You can enable them to improve load times and performance if needed. The lines you are looking for are at the bottom of the generated config file and look like this:
##### Cache js css static content and open files start ##################### # include /etc/nginx/nginxsnippets/cache-open-files.conf; # include /etc/nginx/nginxsnippets/cache-statics.conf; # include /etc/nginx/nginxsnippets/cache-js-css.conf; ##### Cache js css static content and open files stop ######################
Troubleshooting
Nginx fails to restart
Run nginx -t
and review any syntax errors reported in /etc/nginx/conf.d/<domain>.conf
.
Access denied during database creation
Your MariaDB setup likely does not use socket authentication.
Re-run the installer with the -m
flag (and optionally -a
) to provide credentials.
The installer will automatically re-detect your configuration.
PHP version mismatch
The script automatically detects your installed PHP version,
but ensure that the PHP-FPM service (e.g., php8.3-fpm
) is active.
FAQ
Q: Why doesn’t the script ask for a MariaDB password by default?
A: Ubuntu 24.04’s MariaDB installation defaults to socket authentication,
allowing the local root
user to connect without a password.
The installer detects this automatically and skips password prompts when applicable.
Q: Can I run the installer multiple times?
A: Yes. Database and user creation use IF NOT EXISTS
, making them safe to rerun.
Existing WordPress and Nginx configuration files are replaced, but no data is deleted.
Q: Does this modify existing Nginx settings?
A: No. It adds a standalone host file in /etc/nginx/conf.d/
and validates configuration changes before applying them.
More Information
More guides and documentation can be found on wiki.x-files.dk
License
Licensed under the MIT License.