Rahul Bansal
13 years ago
12 changed files with 774 additions and 1 deletions
@ -1,4 +1,14 @@ |
|||||
rtAdmin |
rtAdmin |
||||
======= |
======= |
||||
|
|
||||
Web-based Administration for WordPress sites running on Nginx, PHP, MySQL |
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) |
||||
|
|
||||
|
@ -0,0 +1,78 @@ |
|||||
|
<?php |
||||
|
|
||||
|
/* This will have configuration */ |
||||
|
// Report all PHP errors (see changelog) |
||||
|
error_reporting(E_ALL); |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* local environment values |
||||
|
*/ |
||||
|
$local_env['host'] = '191.168.1.199'; #ip of machine, this will be added to nginx config |
||||
|
$local_env['webroot'] = '/var/www'; #all websites will go hear |
||||
|
$local_env['htdocs'] = 'htdocs'; #name of directory which will act as document-root for a site |
||||
|
$local_env['logs'] = 'logs'; #name of directory which will store log files for a site |
||||
|
|
||||
|
$local_env['nginx_dir'] = '/etc/nginx'; #nginx conf dir |
||||
|
$local_env['nginx_user'] = 'www-data'; #nginx user |
||||
|
$local_env['nginx_group'] = 'www-data'; #nginx group |
||||
|
|
||||
|
$local_env['nginx_dir_sites_avilable'] = '/etc/nginx/sites-available'; #sites-avaialble |
||||
|
$local_env['nginx_dir_sites_enabled'] = '/etc/nginx/sites-enabled'; #sites-enable |
||||
|
|
||||
|
$local_env['default_conf'] = 'example.com'; #example configuration for wordpress |
||||
|
$local_env['default_domain'] = 'example.com'; #default domain in example.com |
||||
|
|
||||
|
$local_env['mysql_host'] = 'localhost'; #mysql host |
||||
|
$local_env['mysql_user'] = 'USER'; #mysql user |
||||
|
$local_env['mysql_pass'] = 'PASS'; #mysql pass |
||||
|
|
||||
|
$local_env['wp_latest'] = 'latest.zip'; #latest WordPress zip file |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* remote env - in scenario where you want to use move.php |
||||
|
* assumes - (1) remote DB allows remote connection |
||||
|
* (2) nginx & sites directory-structure is same |
||||
|
*/ |
||||
|
$remote_env['webroot'] = '/var/www'; //remote webroot - assuming similar directory sturcture |
||||
|
$remote_env['host'] = 'REMOTE_DBHOST'; //this is |
||||
|
$remote_env['ssh_user'] = 'REMOTE_DBUSER'; |
||||
|
$remote_env['ssh_pass'] = 'REMOTE_DBPASS'; |
||||
|
|
||||
|
|
||||
|
/*** YOU CAN IGNORE ANYTHING BELOW THIS LINE **/ |
||||
|
|
||||
|
$hello = <<<EOF |
||||
|
.----------------. .----------------. .----------------. .----------------. .----------------. .----------------. |
||||
|
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. | |
||||
|
| | _______ | || | _________ | || | ______ | || | __ | || | ____ ____ | || | ______ | | |
||||
|
| | |_ __ \ | || | | _ _ | | || | .' ___ | | || | / \ | || ||_ \ / _|| || | |_ __ \ | | |
||||
|
| | | |__) | | || | |_/ | | \_| | || | / .' \_| | || | / /\ \ | || | | \/ | | || | | |__) | | | |
||||
|
| | | __ / | || | | | | || | | | | || | / ____ \ | || | | |\ /| | | || | | ___/ | | |
||||
|
| | _| | \ \_ | || | _| |_ | || | \ `.___.'\ | || | _/ / \ \_ | || | _| |_\/_| |_ | || | _| |_ | | |
||||
|
| | |____| |___| | || | |_____| | || | `._____.' | || ||____| |____|| || ||_____||_____|| || | |_____| | | |
||||
|
| | | || | | || | | || | | || | | || | | | |
||||
|
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' | |
||||
|
'----------------' '----------------' '----------------' '----------------' '----------------' '----------------' |
||||
|
EOF; |
||||
|
|
||||
|
echo $hello; |
||||
|
|
||||
|
/*** OK enough now. This is second & last time I am reminding YOU CAN IGNORE ANYTHING BELOW THIS LINE **/ |
||||
|
|
||||
|
/* Useful test to avoid time-wastage */ |
||||
|
if($local_env['mysql_user'] == 'USER' || $local_env['mysql_pass'] == 'PASS'){ |
||||
|
die("Please enter mysql username & password before running this script."); |
||||
|
} |
||||
|
|
||||
|
if(file_exists($local_env['wp_latest'])){ |
||||
|
echo "Latest WordPress is not present at " . $local_env['wp_latest'] ; |
||||
|
echo "Let me try downloading it…\n"; |
||||
|
$command = "wget http://wordpress.org/latest.zip -O " . $local_env['wp_latest'] ; |
||||
|
if(file_exists($local_env['wp_latest'])){ |
||||
|
die ("this is second time I'm checking for WordPress but its missing at path " . $local_env['wp_latest'] . |
||||
|
"\n Please fix it first and then try running scripts here"); |
||||
|
} |
||||
|
} |
||||
|
?> |
@ -0,0 +1,153 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
CREATE A SITE WITH WORDPRESS |
||||
|
*/ |
||||
|
|
||||
|
include_once('config.pgp'); |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* prompt user to eneter domain name |
||||
|
*/ |
||||
|
|
||||
|
echo "Enter a domain name which needs to be migrated...\n"; |
||||
|
$usr_domain = (trim(fgets(STDIN))); |
||||
|
echo "You have entered :: $usr_domain \n"; |
||||
|
|
||||
|
/* |
||||
|
* 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 encountered 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"); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* extract wordpress in new webroot dir |
||||
|
*/ |
||||
|
$command = "unzip -q -o " . $local_env['wp_latest'] . " -d " . $domain['htdocs'] . " > /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"; |
||||
|
|
||||
|
?> |
@ -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; |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
<?php |
||||
|
|
||||
|
/** |
||||
|
* Helper file contains function to parse a given file and return all DEFINEed values in input file |
||||
|
* @ref - http://stackoverflow.com/questions/645862/regex-to-parse-define-contents-possible |
||||
|
*/ |
||||
|
|
||||
|
function is_constant($token) { |
||||
|
return $token == T_CONSTANT_ENCAPSED_STRING || $token == T_STRING || |
||||
|
$token == T_LNUMBER || $token == T_DNUMBER; |
||||
|
} |
||||
|
|
||||
|
function strip($value) { |
||||
|
return preg_replace('!^([\'"])(.*)\1$!', '$2', $value); |
||||
|
} |
||||
|
|
||||
|
function get_defines($filename) { |
||||
|
$wpconf = file_get_contents($filename); |
||||
|
$tokens = token_get_all($wpconf); |
||||
|
$token = reset($tokens); |
||||
|
while ($token) { |
||||
|
if (is_array($token)) { |
||||
|
if ($token[0] == T_WHITESPACE || $token[0] == T_COMMENT || $token[0] == T_DOC_COMMENT) { |
||||
|
// do nothing |
||||
|
} else if ($token[0] == T_STRING && strtolower($token[1]) == 'define') { |
||||
|
$state = 1; |
||||
|
} else if ($state == 2 && is_constant($token[0])) { |
||||
|
$key = $token[1]; |
||||
|
$state = 3; |
||||
|
} else if ($state == 4 && is_constant($token[0])) { |
||||
|
$value = $token[1]; |
||||
|
$state = 5; |
||||
|
} |
||||
|
} else { |
||||
|
$symbol = trim($token); |
||||
|
if ($symbol == '(' && $state == 1) { |
||||
|
$state = 2; |
||||
|
} else if ($symbol == ',' && $state == 3) { |
||||
|
$state = 4; |
||||
|
} else if ($symbol == ')' && $state == 5) { |
||||
|
$defines[strip($key)] = strip($value); |
||||
|
$state = 0; |
||||
|
} |
||||
|
} |
||||
|
$token = next($tokens); |
||||
|
} |
||||
|
return $defines; |
||||
|
} |
||||
|
|
||||
|
//print_r(get_defines('/var/www/cp.rtcamp.info/htdocs/wp-config.php')); |
||||
|
|
||||
|
//foreach ( as $k => $v) { |
||||
|
// echo "'$k' => '$v'\n"; |
||||
|
//} |
||||
|
?> |
@ -0,0 +1,156 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
MOVE A WORDPRESS SITE |
||||
|
THIS SCRIPT IS REALLY BROKEN. |
||||
|
*/ |
||||
|
|
||||
|
include_once('config.pgp'); |
||||
|
|
||||
|
|
||||
|
echo "\nEnter one or more domain names(s) which needs to be migrated...\n"; |
||||
|
echo "You can separate domain names by comma (,)...\n"; |
||||
|
echo "Example: google.com, yahoo.com,apple.com\n"; |
||||
|
|
||||
|
$usr_domain = (trim(fgets(STDIN))); |
||||
|
|
||||
|
$domain_arr = explode(",", $usr_domain); |
||||
|
|
||||
|
foreach($domain_arr as $domain){ |
||||
|
echo "****************************************************************************"; |
||||
|
echo "\n\nMoving :: $domain \n\n"; |
||||
|
move_domain(trim($domain)); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* ALL SEENS WELL - Restart nginx |
||||
|
*/ |
||||
|
echo "\n Relaoding nginx configuration...\n\n"; |
||||
|
system('service nginx reload'); |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* Function to move a single domain |
||||
|
* @param <type> $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); |
||||
|
} |
||||
|
} |
||||
|
?> |
@ -0,0 +1,84 @@ |
|||||
|
<?php |
||||
|
/** |
||||
|
* prompt user to eneter domain name |
||||
|
*/ |
||||
|
echo "Enter a domain name which needs to be removed...\n"; |
||||
|
$usr_domain = (trim(fgets(STDIN))); |
||||
|
echo "You have entered :: $usr_domain \n"; |
||||
|
|
||||
|
if(strlen($usr_domain) == 0 ){ |
||||
|
die("input cannot be empty!\n"); |
||||
|
} |
||||
|
|
||||
|
if(strpos($usr_domain,"..") !== false ){ |
||||
|
die("directory traversal is not allowed\n"); |
||||
|
} |
||||
|
|
||||
|
if(strpos($usr_domain,"\\") !== false ){ |
||||
|
die("domain cannot contain \\ !"); |
||||
|
} |
||||
|
/* |
||||
|
* 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 |
||||
|
*/ |
||||
|
echo "\n Domain Name - " . $domain['name'] . |
||||
|
"\n Webroot Dir - " . realpath($domain['rootdir']) . |
||||
|
"\n Database Name - " . $domain['name'] ; |
||||
|
|
||||
|
echo "\nDo you want to remove this domain, related files and databases for sure? [Y/N] (default=N): "; |
||||
|
|
||||
|
if ( strtolower(trim(fgets(STDIN))) != "y" ) { |
||||
|
die("\nYou choose to terminate this script! The domain is NOT removed! \n"); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* At this point - user has confirmed domain removal |
||||
|
//Drop Database |
||||
|
/** |
||||
|
* MySQL Database Deletion |
||||
|
*/ |
||||
|
|
||||
|
$command = "mysql -h " . $local_env['mysql_host'] . " -u " . $local_env['mysql_user'] . " -p" . $local_env['mysql_pass'] . " -e 'drop database `'" . $domain['name'] . "'` '"; |
||||
|
$result = system($command); |
||||
|
|
||||
|
|
||||
|
//remove htdocs |
||||
|
if(file_exists(realpath($domain['rootdir']))){ |
||||
|
if(dirname(realpath($domain['rootdir']))=="/var/www") |
||||
|
system("rm -rf ". realpath($domain['rootdir'])); |
||||
|
else |
||||
|
die("Try something else!"); |
||||
|
}else{ |
||||
|
echo "\n Directory " . $domain['rootdir'] . " doesn't exists\n"; |
||||
|
} |
||||
|
//delete database |
||||
|
$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); |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* Remove config file |
||||
|
*/ |
||||
|
if(file_exists($local_env['nginx_dir_sites_enabled']."/".$domain['name']) OR file_exists($local_env['nginx_dir_sites_avilable']."/".$domain['name'])){ |
||||
|
unlink($local_env['nginx_dir_sites_enabled']."/".$domain['name']); |
||||
|
unlink($local_env['nginx_dir_sites_avilable']."/".$domain['name']); |
||||
|
|
||||
|
/** |
||||
|
* ALL SEENS WELL - Restart nginx |
||||
|
*/ |
||||
|
echo "\n Issuing nginx reboot command...\n\n"; |
||||
|
system('service nginx restart'); |
||||
|
}else{ |
||||
|
echo "\nNginx config files for this domain do not exist\n"; |
||||
|
} |
||||
|
|
||||
|
?> |
@ -0,0 +1,11 @@ |
|||||
|
<?php |
||||
|
|
||||
|
/* |
||||
|
* To change this template, choose Tools | Templates |
||||
|
* and open the template in the editor. |
||||
|
*/ |
||||
|
fwrite(STDOUT, "Enter your name\n"); // Output - prompt user |
||||
|
$name = fgets(STDIN); // Read the input |
||||
|
fwrite(STDOUT, "Hello $name"); // Output - Some text |
||||
|
exit(0); // Script ran OK |
||||
|
?> |
@ -0,0 +1,99 @@ |
|||||
|
<?php |
||||
|
|
||||
|
/** |
||||
|
* prompt user to eneter domain name |
||||
|
*/ |
||||
|
echo "Enter a domain name which needs to be migrated...\n"; |
||||
|
$usr_domain = (trim(fgets(STDIN))); |
||||
|
echo "You have entered :: $usr_domain \n"; |
||||
|
|
||||
|
/* |
||||
|
* 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! Poor you! :D \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 encounterd whie 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"); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 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); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* ALL SEENS WELL - Restart nginx |
||||
|
*/ |
||||
|
echo "\n Issuing nginx reboot command...\n\n"; |
||||
|
system('service nginx restart'); |
||||
|
?> |
@ -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 " <example.com should be replaced by actual domain name>" |
||||
|
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 |
@ -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 |
@ -0,0 +1,3 @@ |
|||||
|
service mysql stop |
||||
|
service php5-fpm restart |
||||
|
service mysql start |
Loading…
Reference in new issue