среда, 18 июля 2012 г.

Создание сайта из шаблона, пользователя и БД

Работа с башем, MySQL-ем.
Скрипт по переданным ему параметрам создает БД, пользователя в системе и в БД, берет шаблоны сайтов nginx-а и apache и на основании их создает conf-файлы.


#!/bin/bash

# Create database
/usr/bin/mysql -u root -pXXXXX -e 
   "CREATE DATABASE "$1" CHARACTER SET utf8 COLLATE utf8_general_ci;"
# Create database user
/usr/bin/mysql -u root -pXXXXX -e 
   "CREATE USER '"$2"'@'localhost' IDENTIFIED BY '"$3"' ;"
/usr/bin/mysql -u root -pXXXXX -e 
   "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON "$1".* TO '"$2"'@'localhost' ;"

# Create directories
/bin/mkdir /var/www/vhosts/$4
/bin/mkdir /var/www/vhosts/$4/www/
/bin/mkdir /var/www/vhosts/$4/tmp/
/bin/mkdir /var/www/vhosts/$4/cgi/

# Create system user
/usr/sbin/useradd -b /var/www/vhosts/$4 -g www-data -s /bin/bash $2
/bin/echo $2:$3|/usr/sbin/chpasswd
/bin/chown -R $2:www-data /var/www/vhosts/$4

# Create conf files from template
/bin/bash -c "/bin/sed -e 's/CHANGEME/"$4"/g' 
   /etc/httpd/sites-available/template > /etc/httpd/sites-available/"$4
/bin/ln -s /etc/httpd/sites-available/$4 /etc/httpd/sites-enabled/$4
/bin/bash -c "/bin/sed -e 's/CHANGEME/"$4"/g' 
   /etc/nginx/sites-available/template > /etc/nginx/sites-available/"$4
/bin/ln -s /etc/nginx/sites-available/$4 /etc/nginx/sites-enabled/$4


вызывать его надо примерно так:

[root@localhost]# script.sh DBName username password sitename.com

воскресенье, 8 июля 2012 г.

sed и cut за работой

Чтоб не забыть или потерять.
Задача: есть файл с настройками DNS-зон, из него надо выдергивать названия этих зон и по ним создавать конфиг для nginx-а из шаблона.
Готовый результат:


#!/bin/bash

for i in $(grep 'zone' /etc/named/conf.local | sed -e 's/zone "//g' | sed -e 's/" {//g')
do
  echo $i
  if ! [ -e /etc/nginx/sites-available/$i ]; then
    /bin/bash -c "/bin/sed -e 's/CHANGEME/"$i"/g' 
     /etc/nginx/sites-available/template > /etc/nginx/sites-available/"$i
    /bin/ln -s /etc/nginx/sites-available/$i /etc/nginx/sites-enabled/$i
  fi
done;
/etc/init.d/nginx restart
 

Самый большой интерес представляет первая строчка, которая в for. Вот ее же вариант, только с использованием cut. Спасибо за помощь Грузину!

grep 'zone' conf.local | cut -d " " -f 2 | cut -d "\"" -f 2
 

Еще надо на awk сделать для коллекции.