This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
create_site [2013/06/18 14:46] kyxap |
create_site [2015/09/24 18:46] (current) kyxap |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | === Добавление вхоста в apache+nginx === | + | {{tag>debian squeeze ubuntu bash vhost user logrotate apache nginx}}====== Добавление вхоста в apache+nginx ====== |
- | Овнер должен быть предварительно создан. | + | |
+ | FIXME | ||
+ | Переписать этот ужас. | ||
+ | |||
+ | Только Debian. | ||
+ | Пользователь, которому принадлежат сайты, должен быть предварительно создан. | ||
<code=bash> | <code=bash> | ||
Line 46: | Line 51: | ||
LOGSDIR="$DOMAIN_DIR/logs" | LOGSDIR="$DOMAIN_DIR/logs" | ||
TMPCONFDIR="/opt/scripts/www_configs" | TMPCONFDIR="/opt/scripts/www_configs" | ||
+ | |||
+ | # can be set as IP='111.111.111.111' | ||
+ | IP=`ip route get 8.8.8.8 | head -1 | awk '{print $NF}'` | ||
if [[ ! -d $TMPCONFDIR ]]; then | if [[ ! -d $TMPCONFDIR ]]; then | ||
Line 58: | Line 66: | ||
if [[ ! -d $DOCROOT ]]; then | if [[ ! -d $DOCROOT ]]; then | ||
mkdir -p $DOCROOT | mkdir -p $DOCROOT | ||
+ | chown -R $user:$user $DOCROOT | ||
fi | fi | ||
- | chown $user:$user $DOCROOT | + | if [[ ! -d $LOGSDIR ]]; then |
- | + | mkdir -p $LOGSDIR | |
- | if [[ ! -d $LOGSDIR ]]; then | + | fi |
- | mkdir -p $LOGSDIR | + | |
- | fi | + | |
} | } | ||
Line 78: | Line 85: | ||
cat > $TMPCONFDIR/apache.$domain << EOF | cat > $TMPCONFDIR/apache.$domain << EOF | ||
- | <VirtualHost *:82> | + | <VirtualHost 127.0.0.1:82> |
<IfModule mpm_itk_module> | <IfModule mpm_itk_module> | ||
AssignUserId $user $user | AssignUserId $user $user | ||
Line 154: | Line 161: | ||
EOF | EOF | ||
fi | fi | ||
+ | } | ||
+ | |||
+ | function generate_named_vhost | ||
+ | { | ||
+ | serial=`/bin/date +"%Y%m%d%k"` | ||
+ | |||
+ | cat >$TMPCONFDIR/named.$domain<< EOF | ||
+ | \$TTL 10800 | ||
+ | @ IN SOA ns1.$domain. root.$domain. ( | ||
+ | $serial ; serial | ||
+ | 10800 ; refresh | ||
+ | 3600 ; retry | ||
+ | 604800 ; expire | ||
+ | 3600 ) ; minimum | ||
+ | ; NS | ||
+ | IN NS ns1.$domain. | ||
+ | IN NS ns2.$domain. | ||
+ | ; MX | ||
+ | IN MX 10 mx1.$domain. | ||
+ | ; records | ||
+ | ns1 IN A $IP | ||
+ | ns2 IN A $IP | ||
+ | mx1 IN A $IP | ||
+ | www IN A $IP | ||
+ | $domain. IN A $IP | ||
+ | |||
+ | EOF | ||
} | } | ||
function enable_apache_vhost | function enable_apache_vhost | ||
{ | { | ||
- | if [[ -f "/etc/apache2/sites-available/$domain" ]]; then | + | if [[ -f "/etc/apache2/sites-available/${domain}.conf" ]]; then |
- | echo "Domain $domain already exists in /etc/apache2/sites-available/$domain" | + | echo "Domain $domain already exists in /etc/apache2/sites-available/${domain}.conf" |
exit 1 | exit 1 | ||
else | else | ||
- | cp $TMPCONFDIR/apache.$domain /etc/apache2/sites-available/$domain | + | cp $TMPCONFDIR/apache.$domain /etc/apache2/sites-available/${domain}.conf |
a2ensite $domain | a2ensite $domain | ||
if [[ -z `apache2ctl configtest` ]]; then | if [[ -z `apache2ctl configtest` ]]; then | ||
Line 192: | Line 226: | ||
fi | fi | ||
+ | } | ||
+ | |||
+ | function enable_named_vhost | ||
+ | { | ||
+ | [[ -d "/etc/bind/zones" ]] || mkdir -p "/etc/bind/zones" | ||
+ | |||
+ | if [[ -f "/etc/bind/zones/$domain.conf" ]]; then | ||
+ | echo "Zone $domain already exists in /etc/bind/zones/$domain.conf" | ||
+ | exit 1 | ||
+ | else | ||
+ | cp $TMPCONFDIR/named.$domain /etc/bind/zones/$domain.conf | ||
+ | |||
+ | cat >>/etc/bind/named.conf.local<< EOF | ||
+ | zone "$domain" { | ||
+ | type master; | ||
+ | file "/etc/bind/zones/$domain.conf"; | ||
+ | }; | ||
+ | |||
+ | EOF | ||
+ | |||
+ | if [[ -z `/usr/sbin/named-checkconf` && -z `/usr/sbin/named-checkzone -q $domain /etc/bind/zones/$domain.conf` ]] ; then | ||
+ | /usr/sbin/rndc reload | ||
+ | echo "bind9: $domain enabled" | ||
+ | else | ||
+ | echo "Errors detected, please solve it manually!" | ||
+ | exit 1 | ||
+ | fi | ||
+ | fi | ||
} | } | ||
Line 200: | Line 262: | ||
fi | fi | ||
- | if [[ -f $LOGSDIR/nginx_access_log ]]; then | ||
cat > $TMPCONFDIR/logrotate.$domain << EOF | cat > $TMPCONFDIR/logrotate.$domain << EOF | ||
- | $LOGSDIR/*_log { | + | $LOGSDIR/*_log { |
daily | daily | ||
missingok | missingok | ||
Line 222: | Line 283: | ||
} | } | ||
EOF | EOF | ||
- | fi | + | |
- | | + | |
if [[ $logs ]]; then | if [[ $logs ]]; then | ||
# install logrotate | # install logrotate | ||
Line 234: | Line 294: | ||
fi | fi | ||
} | } | ||
+ | |||
read_domain | read_domain | ||
Line 240: | Line 301: | ||
init_vars | init_vars | ||
+ | |||
generate_apache_vhost | generate_apache_vhost | ||
generate_nginx_vhost | generate_nginx_vhost | ||
+ | generate_named_vhost | ||
+ | |||
+ | enable_apache_vhost | ||
+ | enable_nginx_vhost | ||
+ | enable_named_vhost | ||
enable_logrotate | enable_logrotate | ||
Line 248: | Line 315: | ||
- | === Простейший скрипт для добавления виртхоста и днс-записи на сервер с Debian, если отсутствует панель управления. === | + | === Простейший скрипт для добавления виртхоста и днс-записи на сервер с Debian, если отсутствует панель управления. (2009 год, возможно устарело) === |
Необходимо предварительно создать пользователя //http// | Необходимо предварительно создать пользователя //http// | ||