2025-10-16 17:19:17 +02:00
2025-10-16 17:19:17 +02:00
2025-10-16 17:19:17 +02:00
2025-10-16 17:19:17 +02:00
2025-10-16 17:19:17 +02:00

WordPress for Ubuntu 24.04 Server

OS Shell WebServer PHP DB App License

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.


If you dont 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 as root (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 doesnt the script ask for a MariaDB password by default?
A: Ubuntu 24.04s 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.


Description
No description provided
Readme 34 KiB
Languages
Shell 100%