it-swarm.com.de

Wie installiere ich nginx 1.9.15 auf Amazon Linux Distribution?

Ich versuche, die neueste Version von nginx (> = 1.9.5) auf einem frischen Amazon-Linux zu installieren, um http2 zu nutzen. Ich habe die hier beschriebenen Anweisungen befolgt -> http://nginx.org/en/linux_packages.html

Ich habe eine Repo-Datei /etc/yum.repos.d/nginx.repo mit folgendem Inhalt erstellt:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

Wenn ich yum update und yum install nginx ausführe, erhalte ich Folgendes:

nginx x86_64 1:1.8.1-1.26.amzn1 amzn-main 557 k

Es scheint, dass es immer noch aus dem Amzn-Main-Repo holt. Wie installiere ich eine neuere Version von Nginx?

- edit - Ich habe der nginx.repo-Datei "priority = 10" hinzugefügt und jetzt kann ich 1.9.15 mit yum install nginx mit folgendem Ergebnis installieren:

Loaded plugins: priorities, update-motd, upgrade-helper
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 1:1.9.15-1.el7.ngx will be installed
--> Processing Dependency: systemd for package: 1:nginx-1.9.15-1.el7.ngx.x86_64
--> Processing Dependency: libpcre.so.1()(64bit) for package: 1:nginx-1.9.15-1.el7.ngx.x86_64
--> Finished Dependency Resolution
Error: Package: 1:nginx-1.9.15-1.el7.ngx.x86_64 (nginx)
           Requires: libpcre.so.1()(64bit)
Error: Package: 1:nginx-1.9.15-1.el7.ngx.x86_64 (nginx)
           Requires: systemd
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
7
wiesson

Sie erhalten eine Fehlermeldung, weil diese Nginx-RPMs für RHEL7 und nicht für Amazon Linux erstellt wurden. Amazon Linux ist eine seltsame Mischung aus RHEL6, RHEL7 und Fedora. Sie sollten sich mit Amazon in Verbindung setzen und sie bitten, eine geeignete Nginx19-Drehzahl zu erstellen, die speziell für ihre Distribution entwickelt wurde.

1
carlwgeorge

Wenn Sie AWS Linux2 verwenden, müssen Sie nginx aus dem AWS "Extras Repository" installieren. So zeigen Sie eine Liste der verfügbaren Pakete an:

# View list of packages to install
Amazon-linux-extras list

Sie sehen eine Liste ähnlich der folgenden:

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 ]

Verwenden Sie zum Installieren den Befehl Amazon-linux-extras install wie folgt:

Sudo Amazon-linux-extras install nginx1.12

Weitere Details finden Sie hier: https://aws.Amazon.com/Amazon-linux-2/faqs/ .

21
Dan Sterrett

Zum Zeitpunkt des Schreibens ist die neueste im AWS yum repo verfügbare Version von nginx 1.8.

Das Beste, was Sie jetzt tun können, ist, eine neuere Version aus dem Quellcode zu erstellen.

Das AWS Linux AMI verfügt bereits über die erforderlichen Build-Tools.

Zum Beispiel, basierend auf Nginx 1.10 (ich habe angenommen, dass Sie als regulärer ec2-user angemeldet sind. Allen Benutzern, die Superuser-Rechte benötigen, wird Sudo vorangestellt.)

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

Sie benötigen dann eine Servicedatei, damit Sie nginx starten/stoppen und beim Booten laden können.

Hier ist eine, die der obigen Konfiguration entspricht. Gib es in /etc/rc.d/init.d/nginx ein:

#!/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

Stellen Sie die Service-Datei so ein, dass sie ausführbar ist:

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

Jetzt kann es losgehen mit:

Sudo service nginx start

So laden Sie es automatisch beim Booten:

Sudo chkconfig nginx on

Vergessen Sie nicht, /etc/nginx/nginx.conf entsprechend Ihren Anforderungen zu bearbeiten und Sudo service nginx reload auszuführen, um die Änderungen zu aktualisieren.

12
Lee Benson

Beachten Sie, dass es keine 1.10 gibt, nach denen Sie suchen. Sie können die Liste hier sehen

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

Nachdem Sie yum update verwendet haben, können Sie mit yum search nginx die verschiedenen Versionen anzeigen und eine bestimmte auswählen:

yum search nginx

auf Centos 6 gibt

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

Ich habe zwei Versionen zur Auswahl, 1.6 und 1.8.

1
Harry