Skip to content

Instantly share code, notes, and snippets.

@rjekic
Forked from bgallagh3r/wp.sh
Last active June 16, 2022 12:18
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save rjekic/2d04423bd167f8e7afd26f8982609378 to your computer and use it in GitHub Desktop.
Save rjekic/2d04423bd167f8e7afd26f8982609378 to your computer and use it in GitHub Desktop.
Wordpress: Bash Install Script using wp-cli
#!/bin/bash -e
clear
echo "============================================"
echo "WordPress Install Script"
echo "============================================"
# Gathering database login credentials from user input
read -p "Database Host: " dbhost
read -p "Database Name: " dbname
read -p "Database User: " dbuser
read -sp "Database Password: " dbpass
echo
# Create new database using provided credentials
read -p "Create new database with provided credentials? (y/n): " new_db
if [ "$new_db" == y ] ; then
mysql -u$dbuser -p$dbpass<<EOF
CREATE DATABASE IF NOT EXISTS $dbname;
GRANT ALL PRIVILEGES ON $dbname.* TO '$dbuser'@'localhost';
ALTER DATABASE $dbname CHARACTER SET utf8 COLLATE utf8_general_ci;
EOF
fi
echo
# Starting the Wordpress installation process
clear
echo "==================================="
echo "Choose Wordpress installation mode:"
echo "==================================="
echo
echo "1. Install Wordpress using wp-cli"
echo "2. Install Wordpress without wp-cli"
echo
read -p "Choose install method: " install_method
if [ "$install_method" == 1 ]; then
# Starting the Wordpress installation process using wp-cli
echo "==================================="
echo "Please wait while we install wp-cli"
echo "==================================="
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
cp wp-cli.phar /usr/bin/wp
echo "=========================="
echo "Finished installing wp-cli"
echo "=========================="
echo
read -p "Install wordpress in a new directory (y/n): " new
if [ "$new" == y ] ; then
read -p "Name of the wordpress directory: " dir_name
mkdir -p $dir_name
cd $dir_name
fi
# Download the latest wordpress package using wp-cli
wp core download --allow-root
# Creating wp-config file using credentials defined on lines 8-11
wp core config --dbhost=$dbhost --dbname=$dbname --dbuser=$dbuser --dbpass=$dbpass --allow-root
chmod 644 wp-config.php
# Entering details of the new Wordpress site
clear
echo "======================================================="
echo "Ready to install Wordpress. Just enter few more details"
echo "======================================================="
read -p "Website url: " url
read -p "Website title: " title
read -p "Admin username: " admin_name
read -sp "Admin password: " admin_pass
echo
read -p "Admin email: " admin_email
echo
read -p "Run install? (y/n): " run_wp_install
if [ "$run_wp_install" == n ] ; then
exit
else
echo "============================================"
echo "A robot is now installing WordPress for you."
echo "============================================"
echo
# Installing Wordpress site using credentials defined on lines 71-76
wp core install --url=$url --title="$title" --admin_name=$admin_name --admin_password=$admin_pass --admin_email=$admin_email --allow-root
fi
else
# download wordpress
curl -O https://wordpress.org/latest.tar.gz
# unzip wordpress
tar -zxvf latest.tar.gz
# change dir to wordpress
cd wordpress
# copy file to parent dir
cp -rf . ..
# move back to parent dir
cd ..
# remove files from wordpress folder
rm -R wordpress
# create wp config
cp wp-config-sample.php wp-config.php
# set database details with perl find and replace
perl -pi -e "s/database_name_here/$dbname/g" wp-config.php
perl -pi -e "s/username_here/$dbuser/g" wp-config.php
perl -pi -e "s/password_here/$dbpass/g" wp-config.php
# set WP salts
perl -i -pe'
BEGIN {
@chars = ("a" .. "z", "A" .. "Z", 0 .. 9);
push @chars, split //, "!@#$%^&*()-_ []{}<>~\`+=,.;:/?|";
sub salt { join "", map $chars[ rand @chars ], 1 .. 64 }
}
s/put your unique phrase here/salt()/ge
' wp-config.php
# create uploads folder and set permissions
mkdir wp-content/uploads
chmod 775 wp-content/uploads
echo "Cleaning..."
# remove zip file
rm latest.tar.gz
echo "========================="
echo "Installation is complete."
echo "========================="
fi
@rjekic
Copy link
Author

rjekic commented Jan 13, 2020

Based on the work of bgallagh3r. This is the modified version of his script with the added support for the Wordpress installation using wp-cli.

@Powerbless
Copy link

i get a error:
/wp.sh: 11: read: Illegal option -s

@rjekic
Copy link
Author

rjekic commented Jan 25, 2020

This error is shell related. You need to make the script executable (chmod +x) and then run it like this:
./wp.sh
or with explicit naming of shell like this:
bash wp.sh

Could you try running the script this way and share the result here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment