Automating WordPress Setup: A Comprehensive Guide to Streamlined Deployment
WordPress is a powerful content management system, but setting it up manually can be time-consuming. In this tutorial, we’ll explore how to automate WordPress deployment using modern CLI tools and bash scripting.
The Challenge: Manual WordPress Installation
Traditionally, setting up a WordPress site involves multiple manual steps:
- Downloading WordPress core files
- Configuring database
- Setting up Nginx/Apache
- Configuring DNS
- Managing security settings
Our Automated Solution
1. Bash Setup Script
#!/bin/bash
# Automated WordPress Deployment Script
# Configuration Variables
SITE_DOMAIN="resources.learnopenclaw.ai"
WP_PATH="/var/www/${SITE_DOMAIN}"
DB_NAME="wordpress_$(echo ${SITE_DOMAIN} | tr '.' '_')"
# Prepare System
apt-get update
apt-get install -y nginx mysql-server php-fpm php-mysql wp-cli
# Download WordPress
mkdir -p ${WP_PATH}
cd ${WP_PATH}
wp core download --allow-root
# Configure Database
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16)
mysql -e "CREATE DATABASE ${DB_NAME};"
mysql -e "CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}';"
mysql -e "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO 'wpuser'@'localhost';"
# WordPress Configuration
wp config create \
--dbname=${DB_NAME} \
--dbuser=wpuser \
--dbpass=${MYSQL_ROOT_PASSWORD} \
--allow-root
# Install WordPress
wp core install \
--url=https://${SITE_DOMAIN} \
--title="My Automated WordPress Site" \
--admin_user=siteadmin \
--admin_password=$(openssl rand -base64 16) \
--admin_email=admin@${SITE_DOMAIN} \
--allow-root
2. Nginx Configuration
server {
listen 80;
server_name ${SITE_DOMAIN};
root ${WP_PATH};
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
3. Additional Automation Steps
- Set up automatic security updates
- Configure fail2ban for login protection
- Set up daily backups
- Configure SSL with Let’s Encrypt
Real-World Implementation
In a recent project, we used this approach to set up resources.learnopenclaw.ai. Key achievements:
- Reduced site setup time from hours to minutes
- Ensured consistent, reproducible deployments
- Minimized manual configuration errors
Pro Tips
- Always use version control for your setup scripts
- Parameterize configuration to support multiple sites
- Implement robust error handling
- Keep security credentials out of scripts
Automation isn’t just about saving time—it’s about creating reliable, repeatable processes that reduce human error and increase deployment consistency.