Skip to content

Instantly share code, notes, and snippets.

@thejsj
Last active January 1, 2016 09:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thejsj/8126749 to your computer and use it in GitHub Desktop.
Save thejsj/8126749 to your computer and use it in GitHub Desktop.
Create a Wordpress installation through the command line with its corresponding MySQL database.
#!/bin/bash
# Creating Wordpress Instalation
THIS_YEAR=$(date +%Y)
if [[ -z "$1" ]]; then
PROJECT_NAME=$1
fi;
if [[ -z "$PROJECT_NAME" ]]; then
read -p "Wordpress Project Name : " PROJECT_NAME
fi;
DATABASE_NAME=${PROJECT_NAME//-/_}
USER_NAME=${DATABASE_NAME:0:15}
echo "PROJECT_NAME : ${PROJECT_NAME}"
echo "DATABASE_NAME : ${DATABASE_NAME}"
echo "USER_NAME : ${USER_NAME}"
mkdir ~/Sites/${THIS_YEAR}/${PROJECT_NAME}
cd ~/Sites/${THIS_YEAR}/${PROJECT_NAME}
wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv ./wordpress/* ./
rm ~/Sites/${THIS_YEAR}/${PROJECT_NAME}/latest.tar.gz
rmdir ./wordpress/
# Ask For Database
echo -n "Create Database for WP instalation with Project Name ? (y/n) > "
if read -t 60 response_create_db; then
if [ 'y' = "$response_create_db" ]; then
echo -n "Root MySQL Password ? > "
if read -t 60 mysql_pass; then
NEW_PASSWORD=$(env LC_CTYPE=C tr -dc "a-zA-Z0-9-_\$\?" < /dev/urandom | head -c 10)
mysql -u root -p${mysql_pass} -e "CREATE DATABASE IF NOT EXISTS ${PROJECT_NAME}";
mysql -u root -p${mysql_pass} -e "DROP USER ${PROJECT_NAME}";
mysql -u root -p${mysql_pass} -e "GRANT ALL PRIVILEGES ON ${PROJECT_NAME}.* TO '${PROJECT_NAME}'@'localhost' IDENTIFIED BY '${NEW_PASSWORD}';"
mysql -u root -p${mysql_pass} -e "FLUSH PRIVILEGES;" # Is this really necesary? Probably not.
fi;
fi;
# Re-Write WP-Config
echo -n "Change Config File ? (y/n) > "
if read -t 60 change_config_file; then
cp ~/Sites/${THIS_YEAR}/${PROJECT_NAME}/wp-config-sample.php ~/Sites/${THIS_YEAR}/${PROJECT_NAME}/wp-config.php
#
# /** The name of the database for WordPress */
# define('DB_NAME', 'database_name_here');
#
# /** MySQL database username */
# define('DB_USER', 'username_here');
#
# /** MySQL database password */
# define('DB_PASSWORD', 'password_here');
#
echo "/** The name of the database for WordPress */" >> ~/Sites/${THIS_YEAR}/${PROJECT_NAME}/wp-config.php
echo "define('DB_NAME', '$PROJECT_NAME');" >> ~/Sites/${THIS_YEAR}/${PROJECT_NAME}/wp-config.php
echo "/** MySQL database username */" >> ~/Sites/${THIS_YEAR}/${PROJECT_NAME}/wp-config.php
echo "define('DB_USER', '$PROJECT_NAME');" >> ~/Sites/${THIS_YEAR}/${PROJECT_NAME}/wp-config.php
echo "/** MySQL database password */" >> ~/Sites/${THIS_YEAR}/${PROJECT_NAME}/wp-config.php
echo "define('DB_PASSWORD', '$NEW_PASSWORD');" >> ~/Sites/${THIS_YEAR}/${PROJECT_NAME}/wp-config.php
fi;
fi;
cd ~/Sites/scripts/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment