From 347297c1522676daaf111bc283ae395c1772f656 Mon Sep 17 00:00:00 2001 From: Rahul Bansal Date: Tue, 14 Aug 2012 11:34:20 +0530 Subject: [PATCH] Bringing all scatterd scripts at one place. A lot of refracting will be required :| --- README.md | 12 +++- config.php | 78 +++++++++++++++++++++++ create.php | 153 +++++++++++++++++++++++++++++++++++++++++++++ example.com | 24 +++++++ helper.php | 55 ++++++++++++++++ move.php | 156 ++++++++++++++++++++++++++++++++++++++++++++++ remove.php | 84 +++++++++++++++++++++++++ test.php | 11 ++++ touch.php | 99 +++++++++++++++++++++++++++++ zzz/make_site.sh | 65 +++++++++++++++++++ zzz/make_vhost.sh | 35 +++++++++++ zzz/restart.sh | 3 + 12 files changed, 774 insertions(+), 1 deletion(-) create mode 100755 config.php create mode 100755 create.php create mode 100755 example.com create mode 100755 helper.php create mode 100755 move.php create mode 100755 remove.php create mode 100755 test.php create mode 100755 touch.php create mode 100755 zzz/make_site.sh create mode 100755 zzz/make_vhost.sh create mode 100755 zzz/restart.sh diff --git a/README.md b/README.md index 949bdfa9..1f926ccb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,14 @@ rtAdmin ======= -Web-based Administration for WordPress sites running on Nginx, PHP, MySQL \ No newline at end of file +Admin tools for Nginx based wordpress sites management. + +This is work in PROGRESS. This will break things on your end most likely! + + +=== + +Notes: + +1. Folder /zzz contains some shell scripts by Pragati Sureka (a geekiest rtCamper) + diff --git a/config.php b/config.php new file mode 100755 index 00000000..6dd634c1 --- /dev/null +++ b/config.php @@ -0,0 +1,78 @@ + \ No newline at end of file diff --git a/create.php b/create.php new file mode 100755 index 00000000..8fc1be26 --- /dev/null +++ b/create.php @@ -0,0 +1,153 @@ + /dev/null"; +$result = system($command); + +//Error check +if ($result != '') { + die("\nError encountered while extracting latest wordpress in directory " . $domain['rootdir'] . "\n"); +} + +$command = "mv " . $domain['htdocs'] . "/wordpress/* " . $domain['htdocs'] . "/"; +echo "\n COMMAND :: $command \n"; +$result = system($command); + +//Error check +if ($result != '') { + die("\nError encountered while moving latest wordpress in directory " . $domain['rootdir'] . "\n" . $result); +} + +/** + * MySQL Creation + */ + +$command = "mysql -h " . $local_env['mysql_host'] . " -u " . $local_env['mysql_user'] . " -p" . $local_env['mysql_pass'] . " -e 'create database `'" . $domain['name'] . "'` '"; +$result = system($command); + +/* + * Create wp-config.php + */ +$wp_config_sample = $domain['htdocs'] . "/wp-config-sample.php"; + +$command = "sed s/database_name_here/{$domain['name']}/ $wp_config_sample | sed s/username_here/{$local_env['mysql_user']}/ | sed s/password_here/{$local_env['mysql_pass']}/ > {$domain['htdocs']}/wp-config.php"; + +$result = system($command); + +/** + * Chown + */ +$command = "chown -R " . $local_env['nginx_user'] . ":" . $local_env['nginx_group'] . " " . $domain['rootdir']; +echo "\n COMMAND :: $command \n"; +$result = system($command); + +//Error check +if ($result != '') { + die("\nError encountered while charging owner of " . $domain['rootdir'] . "\n" . $result); +} + + +/** + * ALL SEENS WELL - Restart nginx + */ +echo "\n Relaoding nginx configuration...\n\n"; +system('service nginx reload'); + +/** + * THE END + */ +//just echo URL for new domain like http://$domain +//user will click it and verify if its working fine! ;-) + +echo $domain['name'] . " Successfully created\n\n"; + +?> \ No newline at end of file diff --git a/example.com b/example.com new file mode 100755 index 00000000..1e6a2802 --- /dev/null +++ b/example.com @@ -0,0 +1,24 @@ +server{ + server_name example.com; + listen 80; + + access_log /var/www/example.com/logs/access.log main ; + error_log /var/www/example.com/logs/error.log; + + root /var/www/example.com/htdocs; + index index.php index.html index.htm; + + ## PHP with FATSCGI + location ~ \.php$ { + include /etc/nginx/fastcgi_params; + fastcgi_pass 127.0.0.1:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } + + #root dir + location / { + autoindex on; + try_files $uri $uri/ /index.php?q=$uri&$args; + } +} diff --git a/helper.php b/helper.php new file mode 100755 index 00000000..c81092d2 --- /dev/null +++ b/helper.php @@ -0,0 +1,55 @@ + $v) { +// echo "'$k' => '$v'\n"; +//} +?> \ No newline at end of file diff --git a/move.php b/move.php new file mode 100755 index 00000000..78590706 --- /dev/null +++ b/move.php @@ -0,0 +1,156 @@ + $domain + */ +function move_domain($usr_domain) { + global $local_env, $remote_env; + + if(trim($usr_domain) == ''){ + echo "\n CURRENT DOMAIN IS SKIPPED\n"; + return; + } + + /* + * Set domain environment values + */ + $domain['name'] = $usr_domain; + $domain['conf'] = $local_env['nginx_dir_sites_avilable'] . '/' . $domain['name']; + $domain['rootdir'] = $local_env['webroot'] . '/' . $domain['name']; + $domain['htdocs'] = $domain['rootdir'] . '/' . $local_env['htdocs'] ; + $domain['logs'] = $domain['rootdir'] . '/' . $local_env['logs'] ; + + /** + * Check if domain config file already exists + */ + if (file_exists($domain['conf'])) { + echo "\nConfiguration files for domain '" . $domain['name'] . "'already exists :: " . $domain['conf']; + echo "\nDo you want to overwrite previous configuration? [Y/N] (default=Y)"; + + if (in_array(strtolower(fgets(STDIN)), array('n', 'no'))) { + die("\nYou choose to terminate this script! Bye-Bye!!! \n"); + } + } + + /** + * At this point - either domain config file doesn't exist or user showed interest in overwriting it + * In either case... + * Create nginx conf for $domain in /etc/nginx/sites-available/$domain + * TODO :: Provide options to add supercache and/or w3total cache rules + */ + /** + * Create config file + */ + $nginx_conf = file_get_contents($local_env['default_conf']); + $nginx_conf = str_replace($local_env['default_domain'], $domain['name'], $nginx_conf); + file_put_contents($domain['conf'], $nginx_conf); + +//Error Check - if config file is created successfully or not + if (!file_exists($domain['conf'])) { + die("\nError encounterd while creating " . $domain['conf']); + } + + /** + * Linking config file + */ + echo "\nCreating Symbolic Link..\n"; + $command = "sudo ln -s " . $domain['conf'] . " " . $local_env['nginx_dir_sites_enabled']; + $result = system($command); + +//Error check - if linking config file succeed + if ($result != '') { + die("\nError encountered while creating script. Please check if file '" . $domain['conf'] . "'is created or not!\n"); + } + +//Go Ahead. +// echo "Nginx configuration for '" . $domain['name'] . "' is created successfully"; + + /** + * Create webroot dirs for new domain + */ +//create dirs + $result = system("mkdir " . $domain['rootdir']); + $result = system("mkdir " . $domain['htdocs']); + $result = system("mkdir " . $domain['logs']); + +//create log files + $result = system("touch " . $domain['logs'] . "/access.log"); + $result = system("touch " . $domain['logs'] . "/error.log"); + +//Error check + if ($result != '') { + die("\nError encountered while creating websites directories & files for " . $domain['name'] . "\n"); + } + + /** + * moving wordpress in new webroot dir + */ +//export remote db + $command = "rsync --exclude '*.iso' -avz {$remote_env['ssh_user']}@{$remote_env['host']}:{$remote_env['webroot']}/{$domain['name']}/htdocs/* {$domain['htdocs']}/"; + $result = system($command); + + + /** + * MySQL Moving + */ + $wp_config = get_defines($domain['htdocs'] . '/wp-config.php'); + + $command = "mysqldump -u {$wp_config['DB_USER']} -p{$wp_config['DB_PASSWORD']} -h {$remote_env['host']} --databases '{$wp_config['DB_NAME']}' > {$domain['rootdir']}/{$domain['name']}.sql"; +// echo "\n" . $command . "\n"; + $result = system($command); + + $command = "mysql -h {$local_env['mysql_host']} -u {$local_env['mysql_user']} -p{$local_env['mysql_pass']} < {$domain['rootdir']}/{$domain['name']}.sql"; +// echo "\n\n" . $command . "\n"; + $result = system($command); + + /* + * Create wp-config.php + */ + //this may not be needed as we already have wp-config.php present for remote WordPress + //@TODO we need to replace DB_HOST though + + + /** + * Chown + */ + $command = "chown -R " . $local_env['nginx_user'] . ":" . $local_env['nginx_group'] . " " . $domain['rootdir']; + echo "\n COMMAND :: $command \n"; + $result = system($command); + +//Error check + if ($result != '') { + die("\nError encountered while chaging owner of " . $domain['rootdir'] . "\n" . $result); + } +} +?> \ No newline at end of file diff --git a/remove.php b/remove.php new file mode 100755 index 00000000..4ce3c515 --- /dev/null +++ b/remove.php @@ -0,0 +1,84 @@ + diff --git a/test.php b/test.php new file mode 100755 index 00000000..a83076cf --- /dev/null +++ b/test.php @@ -0,0 +1,11 @@ + diff --git a/touch.php b/touch.php new file mode 100755 index 00000000..1587dd02 --- /dev/null +++ b/touch.php @@ -0,0 +1,99 @@ + \ No newline at end of file diff --git a/zzz/make_site.sh b/zzz/make_site.sh new file mode 100755 index 00000000..5b920803 --- /dev/null +++ b/zzz/make_site.sh @@ -0,0 +1,65 @@ +#!/bin/bash +#This script makes virtual host, site directories and log files +#Author : Pragati Sureka + +if [[ $(/usr/bin/id -u) -ne 0 ]]; then + echo "make_vsite:You need to run this script as root(or use sudo)" + exit +fi + +# Check for proper number of command line args. +if [ $# -ne 1 ] +then + echo "Usage: `basename $0` example.com" + echo " " + exit +fi + +sed s/[[:blank:]]*//g $1 > $1 + +#Script Variables +WEBROOT="/var/www" +SKELFILE="/etc/nginx/sites-available/example.com" +VSITEDIR="/etc/nginx/sites-available" +ESITEDIR="/etc/nginx/sites-enabled" +USER="www-data" +GROUP="www-data" +SERVER_RELOAD="service nginx restart" +WP_ZIP="/home/rtcamp/wordpress/latest.zip" #wordpress 3.0 + +#make directories and touch log files +mkdir $WEBROOT/$1 +mkdir $WEBROOT/$1/htdocs +mkdir $WEBROOT/$1/logs +touch $WEBROOT/$1/logs/error.log +touch $WEBROOT/$1/logs/access.log + +#download latest wordpress and extract it to proper location +cd $WEBROOT/$1 +#wget www.wordpress.org/latest.zip +unzip -q -o $WP_ZIP +mv wordpress/* htdocs/ +rm -rf $WEBROOT/$1/wordpress +#rm $WEBROOT/$1/latest.zip +chown -R $USER:$GROUP $WEBROOT/$1 +#chmod g+rw -R $WEBROOT/$1 + +#create database +mysql -u USER -pPASS -e 'create database `'$1'` ' + +#create wp-config.php file +CONFIGSAMPLE=$WEBROOT/$1/htdocs/wp-config-sample.php +sed s/database_name_here/$1/ $CONFIGSAMPLE | sed s/username_here/USER/ | sed s/password_here/PASS/ > $WEBROOT/$1/htdocs/wp-config.php + +#copy skeleton file and enable site +sed s/example.com/$1/ $SKELFILE > $VSITEDIR/$1 +ln -s $VSITEDIR/$1 $ESITEDIR/ +echo "127.0.0.1 $1" >> /etc/hosts +$SERVER_RELOAD +if [ $? -ne 0 ]; then + #rm -rf $WEBROOT/$1 + unlink $ESITEDIR/$1 + $SERVER_RELOAD + sed -i".bak" '$d' /etc/hosts + echo "ERROR CREATING PLEASE CONTACT pragati.sureka@rtcamp.com FOR ASSISTANCE!" +fi \ No newline at end of file diff --git a/zzz/make_vhost.sh b/zzz/make_vhost.sh new file mode 100755 index 00000000..e16eb614 --- /dev/null +++ b/zzz/make_vhost.sh @@ -0,0 +1,35 @@ +#!/bin/bash +#This script makes virtual host, site directories and log files +#Author : Pragati Sureka, rahul286 + +if [[ $(/usr/bin/id -u) -ne 0 ]]; then + echo "make_vsite:You need to this script as root(or use sudo)" + exit +fi + +#Script Variables +WEBROOT="/var/www" +SKELFILE="/etc/apache2/sites-available/skeleton" +VSITEDIR="/etc/apache2/sites-available" +USER="www-data" +GROUP="www-data" +SERVER_RELOAD="/etc/init.d/apache2 reload" + +#make directories and touch log files +mkdir $WEBROOT/$1 +mkdir $WEBROOT/$1/htdocs +mkdir $WEBROOT/$1/logs +touch $WEBROOT/$1/logs/error.log +touch $WEBROOT/$1/logs/custom.log + +#copy skeleton file and enable site +sed s/site/$1/ $SKELFILE > $VSITEDIR/$1 +a2ensite $1 &> /dev/null +echo "127.0.0.1 $1" >> /etc/hosts +$SERVER_RELOAD &> /dev/null +if [ $? -ne 0 ]; then + rm -rf $WEBROOT/$1 + a2dissite $1 + sed -i".bak" '$d' /etc/hosts + echo "ERROR CREATING PLEASE CONTACT pragati.sureka@rtcamp.com FOR ASSISTANCE!" +fi diff --git a/zzz/restart.sh b/zzz/restart.sh new file mode 100755 index 00000000..ade0275a --- /dev/null +++ b/zzz/restart.sh @@ -0,0 +1,3 @@ +service mysql stop +service php5-fpm restart +service mysql start