If you’re using my bash script to create new nginx vhosts (with php-fpm support) you may also require an easy way to remove old vhosts you no longer need (along with all the configs associated with the vhost). I’ve put together this very simple bash script to automate the process:
#!/bin/bash # @author: Seb Dangerfield # http://www.sebdangerfield.me.uk/ # Created: 02/12/2012 # Modify the following to match your system NGINX_CONFIG='/etc/nginx/sites-available' NGINX_SITES_ENABLED='/etc/nginx/sites-enabled' PHP_INI_DIR='/etc/php5/fpm/pool.d' NGINX_INIT='/etc/init.d/nginx' PHP_FPM_INIT='/etc/init.d/php5-fpm' # --------------END SED=`which sed` CURRENT_DIR=`dirname $0` if [ -z $1 ]; then echo "No domain name given" exit 1 fi DOMAIN=$1 # check the domain is valid! PATTERN="^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$"; if [[ "$DOMAIN" =~ $PATTERN ]]; then DOMAIN=`echo $DOMAIN | tr '[A-Z]' '[a-z]'` echo "Removing vhost for:" $DOMAIN else echo "invalid domain name" exit 1 fi echo "What is the username for this site?" read USERNAME HOME_DIR=$USERNAME # Remove the user and their home directory userdel -rf $USERNAME # Delete the users group from the system groupdel $USERNAME # Delete the virtual host config rm -f $NGINX_CONFIG/$DOMAIN.conf rm -f $NGINX_SITES_ENABLED/$DOMAIN.conf # Delete the php-fpm config FPMCONF="$PHP_INI_DIR/$DOMAIN.pool.conf" rm -f $FPMCONF $NGINX_INIT reload $PHP_FPM_INIT restart echo -e "\nSite removed for $DOMAIN"
How to use it:
Please note that because it deletes the users home directory all users files will be deleted, so if you want to keep a copy of the files as a backup do this before running the script.
Simply copy the script from above into a new file called something like remove_php_site.sh. If your not using Debian/Ubuntu or have modified the default directories and users for PHP and Nginx then you will need to change the paths and Nginx user at the top of the script to match your system. You will need to change the permissions on the remove_php_site.sh file to make it executable (if it isn’t already):
chmod u+x remove_php_site.sh
Then run the remove_php_site.sh script passing to it the domain name as the only parameter.
It will then prompt you for the linux username used for this site and once that has been provided it will delete all the files related to that site and restart Nginx and PHP-FPM.