nginx_ensite
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:A script to enable or disable a site in nginx.
# nginx_ensite and nginx_dissite for quick virtual host enabling and disabling

## Description

This is a shell (Bash) script that replicates for
[nginx](http://wiki.nginx.org) the [Debian](http://debian.org)
`a2ensite` and `a2dissite` for enabling and disabling sites as virtual
hosts in Apache 2.2/2.4.

The original `a2ensite` and `a2dissite` is written in
Perl. `a2dissite` is a symbolic link to `a2ensite`. Here I followed
the same approach, i.e., `nginx_dissite` is a symbolic link to
`nginx_ensite`.

The script allows for arbitrary paths for the nginx configuration
directories. This is particularly useful not only to those on Mac, but
also in a microservice approach where each service has it's own vhost
configuration, for example.

Th deafult startup program is `service`. Feel free to pass another
program. For example using nginx to send a `SIGHUP` to reload the
configuration you just pass the option `-s nginx` to the script.

## Installation

### Automatic

```
git clone https://github.com/perusio/nginx_ensite.git
cd nginx_ensite
sudo make install
```

### Manual

Just drop the script and the symbolic link in `/usr/sbin` or other
location appropriate for your system. Meaning: `cp nginx_* /usr/sbin`.
That's it you're done.

Note that the script assumes a specific file system topology for your
`nginx` configuration. Here's the rundown:

 1. All virtual hosts configuration files are by default under
    `/etc/nginx/sites-available`. For example the virtual host `foobar`
    is configured through a file in `/etc/nginx/sites-available`.

 2. After running the script with `foobar` as argument: `nginx_ensite
    foobar`. A symbolic link `/etc/nginx/sites-enabled/foobar ->
    /etc/nginx/sites-available/foobar` is created. Note that if the
    `/etc/nginx/sites-enabled` directory doesn't exist the script
    creates it.

 3. The script invokes `nginx -t` to test if the configuration is
    correct. If the test fails no symbolic link is created and an error
    is signaled.

 4. If everything is correct now just reload nginx, in Debian based
    systems that means invoking `service nginx reload` (default
    startup program name is `service`).

 5. Now point the browser to the newly configured host and everything
    should work properly assuming your configuration is sensible.

 6. To disable the site just run `nginx_dissite foobar`. Reload nginx
    to update the running environment.

## Requirements

The script is written in Bash and uses what I believe to be some Bash
specific idioms. I never tested it in other shells. You're welcomed to
try it in any other shell. Please do tell me how it went.

It requires also [awk](http://en.wikipedia.org/wiki/AWK). The original
`awk` (usually called BWK awk) from Bell Labs will do if you don't
have [gawk](http://www.gnu.org/software/gawk) (Gnu awk).  IN OS X and
*BSD the former is the default `awk`. The script should work in *BSD,
OS X and GNU/Linux.

## Command Completion

There's a Bash script for automatic completion of sites to be
enabled and disabled located in the `bash_completion.d` directory.

To make use of it you should:

 1. Source the script to Bash by issuing either `source
    nginx-ensite` or `. nginx-ensite`.

 2. Now when you invoke `nginx_ensite` the sites under
    `/etc/nginx/sites-available` will appear as hypothesis for
    completion. For `nginx_dissite` you get all the sites listed in
    `/etc/nginx/sites-enabled` as possible completions.

 3. To get the completion script to be sourced upon login please
    copy it to `/etc/bash_completion.d/` or whatever location your
    shell environment uses to place all the completion
    scripts. `/etc/bash_completion.d/` is the location in Debian
    (hence also in Ubuntu) of Bash completion scripts.

## Manual pages

Two UNIX manual pages are included in the man directory. They should
be copied to a proper directory in your system. Something along the
lines of `/usr/share/man/man8` or `/usr/local/share/man/man8`.

Here's an [online](http://github.perusio.org/nginx_ensite/) version of
the manpage.


## Security & Trust

The script is signed with my GPG key. Just do `gpg --keyserver
keys.gnupg.net --recv-keys 4D722217`. Verify by issuing `gpg --verify
nginx_ensite.sig`.

## Acknowledgments

Thanks to the many people that have contributed to this script. You're
the stuff Free Software is made of.

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。