Управление виртуальным хостами nginx
Модераторы: SLEDopit, Модераторы разделов
-
Yora
- Сообщения: 8
Управление виртуальным хостами nginx
Здравствуйте хотелось бы управлять виртуальными хостами через консоль(например, bash скрипт), а не редактировать конфиг. Может у кого есть готовое решение?
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Управление виртуальным хостами nginx
У меня связка апач + nginx. Обратите внимание, чтобы php исполнялись с правами user (т.е. работала секция mpm_itk_module), должен быть установлен apache2-mpm-itk.
Скрипт для создания хостов:
Для удаления:
Скрипт для создания хостов:
Код: Выделить всё
#!/bin/bash
IP=111.222.111.222
die(){
echo $1
exit 1
}
[[ "$1" == "" ]] && die "Specify site name"
mkdir -p /home/user/www/$1
chown user:user /home/user/www/$1
echo "<VirtualHost *:8080>
ServerName $1
DocumentRoot /home/user/www/$1
CustomLog /home/user/logs/$1.access.log combined
ErrorLog /home/user/logs/$1.error.log
ServerAlias www.$1
ServerAdmin info@$1
DirectoryIndex index.php
<IfModule mpm_itk_module>
AssignUserId user user
</IfModule>
php_admin_value open_basedir \"/home/user/tmp:.:/home/user/www/$1\"
php_admin_value sendmail_path \"/usr/sbin/sendmail -t -i -f webmaster@$1\"
php_admin_value upload_tmp_dir \"/home/user/tmp\"
php_admin_value session.save_path \"/home/user/tmp\"
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
AddType application/x-httpd-php-source .phps
</VirtualHost>" > /etc/apache2/sites-available/$1
a2ensite $1
[[ "$2" == "-e" ]] && vi /etc/apache2/sites-enabled/$1
/etc/init.d/apache2 reload
echo "server {
listen $IP:80;
server_name $1 www.$1;
location ~* ^/(webstat/|webmail/|phpmyadmin/) {
proxy_pass http://$IP:8080;
proxy_redirect http://$1:8080/ /;
proxy_set_header Host \$host;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP \$remote_addr;
}
location / {
proxy_pass http://$IP:8080;
proxy_redirect http://000.ru:8080/ /;
proxy_set_header Host \$host;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP \$remote_addr;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /home/user/www/$1;
access_log /home/user/logs/$1.access.nginx.log;
error_page 404 = @fallback;
}
location @fallback {
proxy_pass http://$IP:8080;
proxy_set_header Host \$host;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP \$remote_addr;
}
}" > /etc/nginx/sites-available/$1
ln -s /etc/nginx/sites-available/$1 /etc/nginx/sites-enabled/$1
/etc/init.d/nginx reload
echo $1 successfully added.Код: Выделить всё
#!/bin/bash
die(){
echo $1
exit 1
}
[[ `echo $1` == "" ]] && die "Specify site name"
a2dissite $1
rm /etc/apache2/sites-available/$1
rm /etc/nginx/sites*/$1
rm -r /home/user/www/$1
rm /home/user/logs/$1*
/etc/init.d/apache2 reload
/etc/init.d/nginx reload
echo $1 successfully deleted.UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.