21 Jan 2016 16:52:53
Автоматическая настройка виртуального хоста Nginx с помощью bash скрипта
Скрипт для автоматической настройки виртуального хоста для сервера nginx.Задачи:
- По шаблону создавать конфиг виртуального хоста.
- Иметь возможность задавать имя documen root.
- Добавлять имя хоста и локальный адрес 127.0.0.1 в конфиг ос.
- Хранить конфиги виртуальных хостов раздельно с настройками сервера.
- Перезагружать демон и выдавать сообщение об успехе.
#!/bin/bash # Created by Pavel Ruban # Contacts: http://pavelruban.org echo 'start processing nginx virtual host...' cat /etc/nginx/vhosts/vhost_template | sed s/\$1/$1/g | sed s/\$2/$2/g > /etc/nginx/vhosts/$1.conf echo '127.0.0.1 '$1' www.'$1 >> /etc/hosts systemctl restart nginx echo 'virtual host have been created successfull!'По адресу на файл vhost_template находится шаблон виртуального хоста который можно в любое время быстро настроить под свои нужды. Его содержимое:
server { listen 80; server_name $1 www.$1; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; error_log /http/log notice; connection_pool_size 200m; large_client_header_buffers 4 200m; client_max_body_size 200m; keepalive_timeout 10m; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; location = /50x.html { root /usr/share/nginx/html; } root /http/$2; location / { index index.php; try_files $uri @rewrite; } location = /favicon.ico { log_not_found off; access_log off; } location ~ sites/.*?/files/.*?\.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; try_files $uri @rewrite; } location @rewrite { # You have 2 options here # For D7 and above: # Clean URLs are handled in drupal_environment_initialize(). rewrite ^ /index.php last; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi.conf; try_files $uri = 404; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; } }
Также в /etc/nginx/nginx.conf в секцию http {} нужно дописать include до ваших виртуальных хостов, чтобы хосты автоматически подключались.
include /etc/nginx/vhosts/*.conf;
Баш скрипт я назвал vhc (от аббревиатуры virtual host create), использовать его можно следующим образом - в консоле вызываете скрипт, передаете ему два аргумента - первый имя хоста, второй имя document root директории. И ваш хост поднят.
Пример:
vhc myhost.com myhost_old_data