How to install nginx 1.9.15 on amazon linux disto

前端 未结 4 759
傲寒
傲寒 2020-12-18 18:48

I try to install the latest version of nginx (>= 1.9.5) on a fresh amazon linux to make use of http2. I followed the instructions that are described here -> http://nginx.org

相关标签:
4条回答
  • 2020-12-18 19:27

    You're getting error because those nginx RPMs are built for RHEL7, not Amazon Linux. Amazon Linux is a weird hybrid of RHEL6, RHEL7, and Fedora. You should contact Amazon and ask them to create a proper nginx19 RPM specifically built for their distro.

    0 讨论(0)
  • 2020-12-18 19:31

    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 server
    nginx16.x86_64 : A high performance web server and reverse proxy server
    nginx18.x86_64 : A high performance web server and reverse proxy server
    

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

    0 讨论(0)
  • 2020-12-18 19:35

    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 easily
    wget http://nginx.org/download/nginx-1.10.0.tar.gz
    tar zxvf nginx-1.10.0.tar.gz && rm -f nginx-1.10.0.tar.gz
    cd nginx-1.10.0
    sudo 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=nginx
    make
    sudo make install
    sudo groupadd nginx
    sudo useradd -M -G nginx nginx
    rm -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 0
    
    nginx="/etc/nginx/sbin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/etc/nginx/nginx.conf"
    
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
    lockfile=/var/run/nginx.lock
    
    make_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 2
    esac
    

    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.

    0 讨论(0)
  • 2020-12-18 19:40

    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 install
    amazon-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/.

    0 讨论(0)
提交回复
热议问题