Видео смотреть бесплатно

Смотреть аниме видео

Официальный сайт travelspo 24/7/365

Смотреть видео бесплатно

rakoth 23.04.2010 15:48

Мой конфигApache Subdomains, users и ленивый админ.

Совсем не конфиг, зато к переименованой неделе ленивого админа подходит.
Преамбула: Наша фирма занимается разработкой/доработкой сайтов. Для крупный проектов заводим репу свинки, а мелкие(на которых по 1 человеку работает) каждый заливает на наш тестовый сервак по фтп.
Т.е. для каждого мелкого проекта создавать поддомен, БД, а ещё и правильно доступ пользователяю выдавать, и чтобы ещё и ничего лишнего сделать не мог.
Амбула:
1) содзать поддомен(каталог +запись в вирт.хостах апача)
2) в домашней директории создать каталог, примонтировать туда созданный каталог. Выдать права
3) Создать БД.
Всё. Легко алгоритмизируется, а руками - лень.
Плюс один раз перезагрузили сервак, все маунты слетели. Теперь ещё сохраняем заклинание монтирования в спец.файлик, чтобы всё потом починить (не хочу fstab захламлять)
Теперь создание поддомена
sudo addsub newsub coder
А с этим нащальнике справляется сам и меня не дёргает.
Но хотел не похвастать, а попросить совета:
Варианты как избавиться от sudo(разные-разные)
Красивости кода, вроде HEREDOC и оформления в целом.
Ну и так советы и камни

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/sh
if < -z $1 >; then
echo "Usage:\n$0 subdomain <user>"
echo "subdomain -- subdomain, you want to add to a site"
echo "user --user/uploader for this subdomain"
echo -e "This script will create a subdomain record,\n
add a folder name subdomain to /home/user/ and mount new subdomain there"
exit
fi

site=default
APACHECONFSUB=/etc/apache2/sites-available/
subdomain=$1
WWWROOT=/var/www/
domain=SITENAME.com
MOUNTFILE=/home/rakoth/bin/mountsubs.sh
MYSQLROOTUSER=root
MYSQLROOTPASS=root
DBPOSTFIX=_db
DBPREFIX=
if < -z $2 > ; then
#Doesn't work now.
user=`whoami`
my=true
else
my=false
user=$2
fi
echo "Using user $user"
isuser=`ls /home|grep $user`
if < -z $isuser > ; then
"No homefolder for user $user found! terminating"
exit
fi
testsub=`cat $APACHECONFSUB$site |grep $subdomain|grep -i ServerName`
if < -z $testsub > ; then
echo "Creating subdomain $subdomain"
echo "<VirtualHost *>" >> $APACHECONFSUB$site
echo " ServerName $subdomain.rhinoda.com" >> $APACHECONFSUB$site
echo " DocumentRoot /var/www/$subdomain/" >> $APACHECONFSUB$site
echo "</VirtualHost>" >> $APACHECONFSUB$site
else
echo "Subdomain $subdomain seems to be exist!"
fi
if $my ; then
mkdir ~/$subdomain
else
sudo -u $user mkdir /home/$user/$subdomain
fi
sudo mkdir $WWWROOT$subdomain
sudo chmod a+rwX $WWWROOT$subdomain
sudo mount $WWWROOT$subdomain /home/$user/$subdomain -o bind
echo "sudo mount $WWWROOT$subdomain /home/$user/$subdomain -o bind" > $MOUNTFILE
echo "Done. Put files to /home/$user/$subdomain/"

if ! < -z $3 > ; then
echo "create database $DBPREFIX$subdomain$DBPOSTFIX"|mysql -u$MYSQLROOTUSER -p$MYSQLROOTPASS
MAXCOUNT=4
count=1
RANGE=9
number=
while < "$count" -le $MAXCOUNT >
do
n=$RANDOM
let "n %= $RANGE"
let "number=$number$n"
let "count += 1"
done
echo "grant all on $DBPREFIX$subdomain$DBPOSTFIX.* to $subdomain@'localhost' identified by '$subdomain$number'"|mysql -u$MYSQLROOTUSER -p$MYSQLROOTPASS
echo -e "DB: $DBPREFIX$subdomain$DBPOSTFI\nUSERNAME:$subdomain\nPW:$subdomain$number"
fi
</user>




Тэги: apache shell
+ 0 -
Похожие Поделиться

rakoth 23.04.2010 15:49 #
+ 0 -
Опа... Вроде, выбирал раздел Мой конфиг...
А теперь править не могу! Забавно.
rakoth 23.04.2010 18:12 #
+ 0 -
ЫЫЫ. Теперь комментарий зохаван кем-то!
Заново:
  • if < -z $2 > ; then
    #Doesn't work now.
    user=`whoami`
    my=true
    else
    my=false
    user=$2
    fi

    sudo заменят имя пользователя на root, а планировалось, что пустой параметр означает себя. Как это можно обойти?
  • Что-нибудь простое, но более серьёзное для генерации пароля на БД мускула
  • Узнать домашнюю директорию пользоватедля по имени.
    Пока только такой вариант есть:
    grep rakoth /etc/passwd | sed -e s"/^\(\w\+:\\)\{2\}\(<0-9>\+:\)\{2\}\w\+,<0-9>\+,\w\+,://" | sed -e s"/:.*$//"
    /home/rakoth

    Но его я уже через пару месяце не смогу разогнуть. Есть вариант проще?
kstep 23.04.2010 19:22 #
+ 1 -

awk -F ':' "/^$USER:/ { print \$6 }" /etc/passwd
realpath ~$USER
kstep 23.04.2010 19:23 #
+ 0 -
Второй вариант на поверку только в zsh.
kstep 23.04.2010 19:27 #
+ 0 -

kstep@whitebook:pts/1~.^_^% sudo sh
sh-4.1# echo $USER
root
sh-4.1# echo $UID
0
sh-4.1# echo $SUDO_USER
kstep
sh-4.1# echo $SUDO_UID
1001
sh-4.1#
kstep 23.04.2010 19:30 #
+ 0 -

kstep@whitebook:pts/2~.^_^% sudo sh
sh-4.1# echo ${SUDO_USER:-$USER}
kstep
Brun 23.04.2010 18:18 #
+ 0 -
Я тоже ленивый. Структура раздачи виртальных хостов другая. Но на основании Вашего наверно настало време сделать подобное для себя.
Спасибо.
Сделаю свой поделюсь.
kstep 23.04.2010 19:33 #
+ 1 -
Heredoc:

sh-4.1# cat <<HERE > test.txt
> one
> two
> three
> HERE
sh-4.1# cat test.txt
one
two
three
sh-4.1#
kstep 23.04.2010 19:36 #
+ 2 -
Нет:


sudo mkdir $WWWROOT$subdomain
sudo chmod a+rwX $WWWROOT$subdomain


Да:


sudo mkdir -m a+rwX $WWWROOT$subdomain
kstep 23.04.2010 19:40 #
+ 2 -
Пароль на базу подбирается на раз-два-три.
Возможный вариант генерации пароля:


base64 < /dev/urandom | head -n 1 | cut -c5-16 | tr -c "<:alnum:>\n" "-"
kstep 23.04.2010 19:48 #
+ 0 -
И не надо ручками создавать виртуальный хост каждый раз.
rakoth 23.04.2010 21:04 #
+ 0 -
Вот примерно этого я и хотел! Много и по делу. Огромное человеческое спасибо, особенно за последнюю ссылку. Будем покопать.
rakoth 23.04.2010 21:05 #
+ 0 -
Это у меня только сегодня вилункс шутит? То сообщения теряются, то не туда пишутся...
exelens 24.04.2010 13:10 #
+ 0 -
Ты просто смотри внимательнее куда тыкаешь и куда пишешь коммент.
kstep 24.04.2010 13:03 #
+ 0 -
Только что заметил:
echo "sudo mount $WWWROOT$subdomain /home/$user/$subdomain -o bind" > $MOUNTFILE

Перезаписывает $MOUNTFILE, так что там всегда будет команда для монтирования только последнего созданного хоста. Надо > заменить на >>.

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн