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