This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
create_site [2013/04/22 16:20] 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 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 | ||
| } | } | ||
| 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 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> | ||