From 89d9e4a98caa7f4da2aa95627d418dc4c23294c4 Mon Sep 17 00:00:00 2001 From: mikka Date: Thu, 3 Jan 2013 07:16:08 +0100 Subject: [PATCH] moved nginx plugin to a separate branch --- plugins/nginx/nginx.plugin.zsh | 185 ++++++++++++++++++++++++++++++ plugins/nginx/templates/plain_php | 27 +++++ plugins/nginx/templates/symfony2 | 27 +++++ 3 files changed, 239 insertions(+) create mode 100644 plugins/nginx/nginx.plugin.zsh create mode 100644 plugins/nginx/templates/plain_php create mode 100644 plugins/nginx/templates/symfony2 diff --git a/plugins/nginx/nginx.plugin.zsh b/plugins/nginx/nginx.plugin.zsh new file mode 100644 index 000000000..b2c2090c8 --- /dev/null +++ b/plugins/nginx/nginx.plugin.zsh @@ -0,0 +1,185 @@ +: ${NGINX_DIR:=/etc/nginx} +: ${NGINX_VHOST_TEMPLATE:=$ZSH/plugins/nginx/templates/symfony2} + +if [ $use_sudo -eq 1 ]; then + sudo="sudo" +else + sudo="" +fi + +# nginx basic completition + +_nginx_get_en_command_list () { + ls -a $NGINX_DIR/sites-available | awk '/^[a-z][a-z.-]+$/ { print $1 }' +} + +_nginx_get_dis_command_list () { + ls -a $NGINX_DIR/sites-enabled | awk '/^[a-z][a-z.-]+$/ { print $1 }' +} + +_nginx_en () { + compadd `_nginx_get_en_command_list` +} + +_nginx_dis () { + compadd `_nginx_get_dis_command_list` +} + +# Enabling a site +en () { + if [ ! $1 ]; then + echo "\033[337;41m\nThe name of the vhost is required!\n\033[0m"; + return + fi + + if [ ! -e $NGINX_DIR/sites-available/$1 ]; then + echo "\033[31m$1\033[0m doesn't exist"; + return + fi + + if [ ! -e $NGINX_DIR/sites-enabled/$1 ]; then + $sudo ln -s $NGINX_DIR/sites-available/$1 $NGINX_DIR/sites-enabled/$1; + if [ -e $NGINX_DIR/sites-enabled/$1 ]; then + echo "\033[32m$1\033[0m successfully enabled"; + else + echo "An error occured during the enabling of \033[31m$1\033[0m"; + fi + else + echo "\033[31m$1\033[0m is already enabled"; + fi +} +compdef _nginx_en en + +# Disabling a site +dis () { + if [ ! $1 ]; then + echo "\033[337;41m\nThe name of the vhost is required!\n\033[0m"; + return + fi + + if [ ! -e $NGINX_DIR/sites-enabled/$1 ]; then + echo "\033[31m$1\033[0m doesn't exist"; + else + $sudo rm -f $NGINX_DIR/sites-enabled/$1; + if [ ! -e $NGINX_DIR/sites-enabled/$1 ]; then + echo "\033[32m$1\033[0m successfully disabled"; + else + echo "An error occured during the disabling of \033[31m$1\033[0m"; + fi + fi +} +compdef _nginx_dis dis + +# Completition of vhost +_nginx_get_possible_vhost_list () { + ls -a $HOME/www | awk '/^[^.][a-z0-9._]+$/ { print $1 }' +} + +_nginx_vhost () { + compadd `_nginx_get_possible_vhost_list` +} + +# Parsing arguments +vhost () { + local user=$USER; + local template=$NGINX_VHOST_TEMPLATE + local tpl="non_existing_template" + local enable=1 + local write_hosts=0 + + while getopts ":lu:t:nwh" option + do + case $option in + l ) ls $NGINX_DIR/sites-enabled; return ;; + u ) user=$OPTARG ;; + t ) tpl=$OPTARG ;; + n ) enable=0 ;; + w ) write_hosts=1 ;; + h ) _vhost_usage; return ;; + esac + done + + shift $[ $OPTIND - 1 ] + local vhost=$1 + + if [ -z "$vhost" ]; then + echo "\033[337;41m\nThe name of the vhost is required!\n\033[0m" + return + fi + + if [ -e $ZSH/plugins/nginx/templates/$tpl ]; then + local template=$ZSH/plugins/nginx/templates/$tpl + elif [ -e $tpl ]; then + local template=$tpl + fi + + _vhost_generate $vhost $user + + if [ $enable -eq 1 ]; then + en $vhost + fi + + if [ $write_hosts -eq 1 ]; then + _write_hosts $vhost + fi +} +compdef _nginx_vhost vhost + +_vhost_usage () { + echo "Usage: vhost [options] [vhost_name]" + echo + echo "Options" + echo " -l Lists enabled vhosts" + echo " -u Sets the user - defaults to the current user ($USER)" + echo " -t Sets the template" + echo " -n Does not enable the generated vhost" + echo " -w Write the vhost to the /etc/hosts file pointing to 127.0.0.1 (writes it at the end of the first line actually)" + echo " -h Get this help message" + return +} + +# Generate config file +_vhost_generate () { + local user=$(cat /etc/passwd | grep $2 | awk -F : '{print $1 }') + + if [ ! $user ]; then + echo "User \033[31m$2\033[0m doesn't have an account on \033[33m$HOST\033[0m" + return + fi + + echo "Generating \033[32m$1\033[0m vhost for \033[33m$user\033[0m user" + + local user_id=$(cat /etc/passwd | grep $2 | awk -F : '{print $3 }') + local pool_port=1$user_id + + sed -e 's/{vhost}/'$1'/g' -e 's/{user}/'$user'/g' -e 's/{pool_port}/'$pool_port'/g' $template | tee > $1.tmp + + $sudo mv $1.tmp $NGINX_DIR/sites-available/$1 + + if [ -e $NGINX_DIR/sites-available/$1 ]; then + echo "\033[32m$1\033[0m vhost has been successfully created" + else + echo "An error occured during the creating of \033[31m$1\033[0m vhost" + fi +} + +# Write the /etc/hosts file +_write_hosts () { + temp=$HOME/hosts.temp + exec < /etc/hosts + while read line + do + if [ -e $temp ]; then + echo "$line" >> $temp; + else + echo "$line $1" > $temp; + fi + done + + $sudo mv $temp /etc/hosts; + + echo "\033[32m$1\033[0m vhost has been successfully written in /etc/hosts" +} + +alias ngt="$sudo nginx -t" +alias ngr="$sudo service nginx restart" diff --git a/plugins/nginx/templates/plain_php b/plugins/nginx/templates/plain_php new file mode 100644 index 000000000..cf470bf96 --- /dev/null +++ b/plugins/nginx/templates/plain_php @@ -0,0 +1,27 @@ +server { + root /home/{user}/www/{vhost}; + index index.php; + + server_name {vhost}; + + error_log /var/log/nginx/{vhost}.error.log; + access_log /var/log/nginx/{vhost}.access.log; + + location / { + try_files $uri $uri/ $uri/index.php; + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_index index.php; + fastcgi_pass unix:/var/run/php-fpm/{user}.socket; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTPS off; + } + + location ~ /\.ht { + deny all; + } +} diff --git a/plugins/nginx/templates/symfony2 b/plugins/nginx/templates/symfony2 new file mode 100644 index 000000000..eee5f2d5e --- /dev/null +++ b/plugins/nginx/templates/symfony2 @@ -0,0 +1,27 @@ +server { + root /home/{user}/www/{vhost}/web; + index app_dev.php; + + server_name {vhost}; + client_max_body_size 10M; + + error_log /var/log/nginx/{vhost}.error.log; + access_log /var/log/nginx/{vhost}.access.log; + + location / { + try_files $uri $uri/ /app_dev.php$uri /app_dev.php$is_args$args; + } + + # pass the PHP scripts to FastCGI server listening on unix sockets + location ~ ^/(app|app_dev|check)\.php(/|$) { + fastcgi_pass unix:/var/run/php-fpm/{user}.socket; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTPS off; + } + + location ~ /\.ht { + deny all; + } +}