How to install nginx 1.9.15 on amazon linux disto How to install nginx 1.9.15 on amazon linux disto nginx nginx

How to install nginx 1.9.15 on amazon linux disto


If you're using AWS Linux2, you have to install nginx from the AWS "Extras Repository". To see a list of the packages available:

# View list of packages to installamazon-linux-extras list

You'll see a list similar to:

0  ansible2   disabled  [ =2.4.2 ]1  emacs   disabled  [ =25.3 ]2  memcached1.5   disabled  [ =1.5.1 ]3  nginx1.12   disabled  [ =1.12.2 ]4  postgresql9.6   disabled  [ =9.6.6 ]5  python3   disabled  [ =3.6.2 ]6  redis4.0   disabled  [ =4.0.5 ]7  R3.4   disabled  [ =3.4.3 ]8  rust1   disabled  [ =1.22.1 ]9  vim   disabled  [ =8.0 ]10  golang1.9   disabled  [ =1.9.2 ]11  ruby2.4   disabled  [ =2.4.2 ]12  nano   disabled  [ =2.9.1 ]13  php7.2   disabled  [ =7.2.0 ]14  lamp-mariadb10.2-php7.2   disabled  [ =10.2.10_7.2.0 ]

Use the amazon-linux-extras install command to install it, like:

sudo amazon-linux-extras install nginx1.12

More details are here: https://aws.amazon.com/amazon-linux-2/faqs/.


At the time of writing, the latest version of nginx available from the AWS yum repo is 1.8.

The best thing to do for now is to build any newer version from source.

The AWS Linux AMI already has the necessary build tools.

For example, based on the Nginx 1.10 (I've assumed you're logged in as the regular ec2-user. Anything needing superuser rights is preceded with sudo)

cd /tmp #so we can clean-up easilywget http://nginx.org/download/nginx-1.10.0.tar.gztar zxvf nginx-1.10.0.tar.gz && rm -f nginx-1.10.0.tar.gzcd nginx-1.10.0sudo yum install pcre-devel openssl-devel #required libs, not installed by default./configure \  --prefix=/etc/nginx \  --conf-path=/etc/nginx/nginx.conf \  --pid-path=/var/run/nginx.pid \  --lock-path=/var/run/nginx.lock \  --with-http_ssl_module \  --with-http_v2_module \  --user=nginx \  --group=nginxmakesudo make installsudo groupadd nginxsudo useradd -M -G nginx nginxrm -rf nginx-1.10.0

You'll then want a service file, so that you can start/stop nginx, and load it on boot.

Here's one that matches the above config. Put it in /etc/rc.d/init.d/nginx:

#!/bin/sh## nginx - this script starts and stops the nginx daemon## chkconfig:   - 85 15# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \#               proxy and IMAP/POP3 proxy server# processname: nginx# config:      /etc/nginx/nginx.conf# config:      /etc/sysconfig/nginx# pidfile:     /var/run/nginx.pid# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0nginx="/etc/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/etc/nginx/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/run/nginx.lockmake_dirs() {   # make required directories   user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`   if [ -z "`grep $user /etc/passwd`" ]; then       useradd -M -s /bin/nologin $user   fi   options=`$nginx -V 2>&1 | grep 'configure arguments:'`   for opt in $options; do       if [ `echo $opt | grep '.*-temp-path'` ]; then           value=`echo $opt | cut -d "=" -f 2`           if [ ! -d "$value" ]; then               # echo "creating" $value               mkdir -p $value && chown -R $user $value           fi       fi   done}start() {    [ -x $nginx ] || exit 5    [ -f $NGINX_CONF_FILE ] || exit 6    make_dirs    echo -n $"Starting $prog: "    daemon $nginx -c $NGINX_CONF_FILE    retval=$?    echo    [ $retval -eq 0 ] && touch $lockfile    return $retval}stop() {    echo -n $"Stopping $prog: "    killproc $prog -QUIT    retval=$?    echo    [ $retval -eq 0 ] && rm -f $lockfile    return $retval}restart() {    configtest || return $?    stop    sleep 1    start}reload() {    configtest || return $?    echo -n $"Reloading $prog: "    killproc $nginx -HUP    RETVAL=$?    echo}force_reload() {    restart}configtest() {  $nginx -t -c $NGINX_CONF_FILE}rh_status() {    status $prog}rh_status_q() {    rh_status >/dev/null 2>&1}case "$1" in    start)        rh_status_q && exit 0        $1        ;;    stop)        rh_status_q || exit 0        $1        ;;    restart|configtest)        $1        ;;    reload)        rh_status_q || exit 7        $1        ;;    force-reload)        force_reload        ;;    status)        rh_status        ;;    condrestart|try-restart)        rh_status_q || exit 0            ;;    *)        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"        exit 2esac

Set the service file to be executable:

sudo chmod 755 /etc/rc.d/init.d/nginx

Now you can start it with:

sudo service nginx start

To load it automatically on boot:

sudo chkconfig nginx on

Finally, don't forget to edit /etc/nginx/nginx.conf to match your requirements and run sudo service nginx reload to refresh the changes.


Note, there is no 1.10 where you're looking. You can see the list here

http://nginx.org/packages/mainline/centos/7/x86_64/RPMS/

After you yum update use yum search nginx to see the different versions you have and choose a specific one:

yum search nginx

on centos 6 gives

nginx.x86_64 : A high performance web server and reverse proxy servernginx16.x86_64 : A high performance web server and reverse proxy servernginx18.x86_64 : A high performance web server and reverse proxy server

I have two versions to choose from, 1.6 and 1.8.