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> |