Skip to content

Instantly share code, notes, and snippets.

@bgallagh3r
Last active October 2, 2024 09:42
Show Gist options
  • Save bgallagh3r/2853221 to your computer and use it in GitHub Desktop.
Save bgallagh3r/2853221 to your computer and use it in GitHub Desktop.
Wordpress: Bash Install Script -- Downloads latest WP version, updates wp-config with user supplied DB name, username and password, creates and CHMOD's uploads dir, copies all the files into the root dir you run the script from, then deletes itself!
#!/bin/bash -e
clear
echo "============================================"
echo "WordPress Install Script"
echo "============================================"
echo "Database Name: "
read -e dbname
echo "Database User: "
read -e dbuser
echo "Database Password: "
read -s dbpass
echo "run install? (y/n)"
read -e run
if [ "$run" == n ] ; then
exit
else
echo "============================================"
echo "A robot is now installing WordPress for you."
echo "============================================"
#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
#remove bash script
rm wp.sh
echo "========================="
echo "Installation is complete."
echo "========================="
fi
@Urano-Gonzalez
Copy link

Urano-Gonzalez commented Jun 5, 2020

Simple, direct, and reliable

@ericmil87
Copy link

Great work. Thanks!

@carlHandy
Copy link

I took this a step further by allowing it to configure my nginx server block. See here:

https://gitlab.com/snippets/1988869

@onyxcode
Copy link

I wish there was something this simple for bind9 as well haha

@aliwaseem
Copy link

Add this to your ~/.bashrc
alias wpinstall="curl -L -o 'wp.sh' https://gist.githubusercontent.com/bgallagh3r/2853221/raw/f3e2f2fa3048bbeb6d35799af068965bc5fd9b26/wp.sh && bash wp.sh" then source ~/.bashrc Go into a dir you want to install WP in and just type wpinstall It's that easy!

Update:
I've updated the URL to the gist in this comment, WP changed the latest.tar.gz to use HTTPS (finally) as such trying to grab a copy from http::// broke the script

Update: July 8 2015
I've modified the script to add the salts automatically now thanks to @emirpprime's fork.
the new command should be alias wpinstall="curl -L -o 'wp.sh' https://gist.githubusercontent.com/bgallagh3r/2853221/raw/eb5070c1a4f06dc106847f2e53f1b207f8ec7cad/wp.sh && bash wp.sh"

Note that my script does NOT create the MySQL database for you as I currently use WHM/cPanel on our server to manage databases. If you want that functionality please use @emirpprime's fork here: https://gist.github.com/emirpprime/37ef1f355ec5a7ecbb8f.

I think the link above for @emirpprime's fork is broken. A google search suggest that he has changed his github handle?
I think the new link is: https://gist.github.com/phlbnks/37ef1f355ec5a7ecbb8f

@levpa
Copy link

levpa commented Sep 29, 2020

Hi pal! I think you must add a database host URL to the script. Usually, it's localhost in wp-config.php and not work for me.

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