User Tools

Site Tools


create_site

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
create_site [2013/04/22 16:20]
kyxap
create_site [2015/02/26 10:30]
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 71: Line 78:
     if [[ $logs ]]; then     if [[ $logs ]]; then
         local log_block="​LogLevel warn         local log_block="​LogLevel warn
-    ErrorLog $LOGSDIR/error_log +    ErrorLog $LOGSDIR/apache_error_log 
-    CustomLog $LOGSDIR/access_log ​combined"​+    CustomLog $LOGSDIR/apache_access_log ​combined"​
     fi     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 110: Line 117:
     $log_block     $log_block
 </​VirtualHost>​ </​VirtualHost>​
-        ​+
 EOF EOF
     fi     fi
Line 118: Line 125:
 { {
     if [[ $logs ]]; then     if [[ $logs ]]; then
-        local log_block="​access_log $LOGSDIR/access_log+        local log_block="​access_log $LOGSDIR/nginx_access_log
-      error_log $LOGSDIR/error_log;"+      error_log $LOGSDIR/nginx_error_log;"
     fi     fi
  
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
 } }
  
Line 193: Line 227:
     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
 +}
 +
 +function enable_logrotate
 +{
 +    if [[ ! -d "/​etc/​logrotate.d/​vhosts"​ ]]; then
 +        mkdir -p /​etc/​logrotate.d/​vhosts
 +    fi
 +
 +        cat > $TMPCONFDIR/​logrotate.$domain << EOF
 +$LOGSDIR/​*_log {
 +    daily
 +    missingok
 +    rotate 52
 +    compress
 +    delaycompress
 +    notifempty
 +    create 0644 root root
 +    sharedscripts
 +    prerotate
 +        if [ -d /​etc/​logrotate.d/​httpd-prerotate ]; then \\
 +            run-parts /​etc/​logrotate.d/​httpd-prerotate;​ \\
 +        fi; \\
 +    endscript
 +    postrotate
 +        /​etc/​init.d/​apache2 reload > /dev/null
 +        [ ! -f /​var/​run/​nginx.pid ] || kill -USR1 `cat /​var/​run/​nginx.pid`
 +    endscript
 +}
 +EOF
 +
 +    if [[ $logs ]]; then
 +        # install logrotate
 +        if [[ -f "/​etc/​logrotate.d/​vhosts/​$domain"​ ]]; then
 +            echo "​Domain $domain already exists in /​etc/​logrotate.d/​vhosts/​$domain"​
 +            exit 1
 +        else
 +            cp $TMPCONFDIR/​logrotate.$domain /​etc/​logrotate.d/​vhosts/​$domain
 +        fi
 +    fi
 +}
 +
  
 read_domain read_domain
Line 199: 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_apache_vhost
 enable_nginx_vhost enable_nginx_vhost
 +enable_named_vhost
 +
 +enable_logrotate
 +
 </​code>​ </​code>​
  
-=== Простейший скрипт для добавления виртхоста и днс-записи на сервер с Debian, если отсутствует панель управления. + 
-Необходимо предварительно создать пользователя //http//+=== Простейший скрипт для добавления виртхоста и днс-записи на сервер с Debian, если отсутствует панель управления. ​(2009 год, возможно устарело) === 
- ===+Необходимо предварительно создать пользователя //http//
  
 <​code=bash>​ <​code=bash>​
create_site.txt · Last modified: 2015/09/24 18:46 by kyxap