nginx-init-ubuntu
Status
Current release: v3.9.0
Previous stable release v3.8.0
Notes: v3.8.0 has been stable for the last several months without issues. v3.9.0 while stable, is new.
Info
Tried and true Nginx init script.
Ubuntu, Vagrant, and Docker tested!
You may also want to use the AnsibleShipyard ansible-nginx playbook.
Simple ansible playbook sits in this repository.
Author: Jason Giedymin <jasong -at- apache -=dot=- org>
Check out my other repos!
Support
Rest assured that this repo will be maintained indefinitely beyond Ubuntu LTS and systemd adoption into Ubuntu stable.
Last tested with:
- Ubuntu 14.xx (works with prior versions)
- nginx-1.7.9 (works with prior versions)
Notes
It is recommended to install Nginx by doing a full compile & build. Not all package repositories keep their branches updated. For security it is your duty to maintain a good working environment and thus includes all interfacing applications. This script works turn-key with the default compile of nginx. It is fully recommended that you go through the variables contained within this script if you have a custom compiled build.
A great resource is the Nginx Wiki.
Basic Install
Basic install instructions, use sudo if necessary for the below (depends on your setup/security).
# [optional as you may have these installed]
sudo apt-get install libpcre3-dev zlib1g-dev
mkdir -p ~/temp/nginx-install
cd ~/temp/nginx-install
# download/curl/wget nginx
wget http://nginx.org/download/nginx-1.7.9.tar.gz
tar -xvf nginx-1.7.9.tar.gz
cd nginx-1.7.9/
./configure
make
sudo make install
#copy/download/curl/wget the init script
sudo wget https://raw.githubusercontent.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
service nginx status # to poll for current status
service nginx stop # to stop any servers if any
service nginx start # to start the server
#[optional]
sudo update-rc.d -f nginx defaults
#[optional remove the upstart script]
sudo update-rc.d -f nginx remove
Advanced Configuration
If you need to override the values within the script you should use /etc/default/nginx
.
You can override any of these values:
Variable | Function |
---|---|
PATH | Path environment variable |
NGINXPATH | Root path where installed |
DAEMON | Path to Deamon binary |
PS | Process name |
PIDNAME | Lets you do $PS-slave |
PIDFILE | Pid file |
PIDSPATH | Default PID location |
DESCRIPTION | Process description |
RUNAS | User to run as |
NGINX_CONF_FILE | Config file path |
For instance, if you needed to change the description of the server during logging:
# Edit [/etc/default/nginx] and add the below line
DESCRIPTION="My Awesome Nginx Server..."
# Next run the below command:
sudo service nginx restart
# Output of running restart with nginx defaults file:
* Stopping My Super Nginx Server... [ OK ]
* Starting My Super Nginx Server... [ OK ]
# Notice that is says "My Super Nginx Server..." as opposed to the default
# "Nginx Server...".
The NGINXPATH value should point to your installation of Nginx, the default is /usr/local/nginx
It's likely you'll need to update the NGINXPATH value if you didn't install from source. Eg, if you install Nginx using apt-get on Ubuntu nginx will be installed to /etc/nginx
# Changing NGINXPATH when Nginx was installed with apt-get
NGINXPATH=/etc/nginx
Testing
Tests run as part of the deployment scripts integration-tests.yml
.
To start make sure you have vagrant, and ansible installed.
Download the Ubuntu base box:
vagrant box add ubuntu-14.10 https://cloud-images.ubuntu.com/vagrant/utopic/current/utopic-server-cloudimg-amd64-vagrant-disk1.box
Run vagrant:
vagrant up
Manually provision again:
vagrant provision
Using with Docker
A basic Dockerfile will arrive shortly for testing, but note that I focued my efforts on creating an nginx ansible role. This repo has a Dockerfile which will install Nginx along with nginx-init-ubuntu
(this repo) using ansible. Until the basic testing Dockerfile is in place here please refer to the ansible role and it's Dockerfile -- if your looking for stability.
If your looking for a more production and developer friendly Dockerfile, look here.
When using the ansible role mentioned above you will need to set nginx_docker_override
to True
as the role will detect if running within a Dockerfile. This is to prevent nginx running in daemon
mode.
A copy of nginx-init-ubuntu is present in the ansible role.
Contributions
Contributions are welcome!