J'essaie d'installer la dernière version de nginx (> = 1.9.5) sur un nouvel Amazon linux pour utiliser http2. J'ai suivi les instructions décrites ici -> http://nginx.org/en/linux_packages.html
J'ai créé un fichier de référentiel /etc/yum.repos.d/nginx.repo
avec ce contenu:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
Si je lance yum update
et yum install nginx
j'obtiens ceci:
nginx x86_64 1:1.8.1-1.26.amzn1 amzn-main 557 k
Il semblerait que cela se trouve toujours dans le dépôt principal amzn-main. Comment installer une nouvelle version de nginx?
- edit - J'ai ajouté "priority = 10" au fichier nginx.repo et je peux maintenant installer 1.9.15 avec yum install nginx
avec le résultat suivant:
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
Vous obtenez une erreur car ces RPM nginx sont générés pour RHEL7, pas Amazon Linux. Amazon Linux est un hybride étrange de RHEL6, RHEL7 et Fedora. Vous devez contacter Amazon et leur demander de créer un RPM nginx19 approprié spécialement conçu pour leur distribution.
Si vous utilisez AWS Linux2, vous devez installer nginx à partir du "Référentiel des extras" AWS. Pour voir une liste des forfaits disponibles:
# View list of packages to install
Amazon-linux-extras list
Vous verrez une liste similaire à:
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 ]
Utilisez la commande Amazon-linux-extras install
pour l'installer, par exemple:
Sudo Amazon-linux-extras install nginx1.12
Plus de détails sont ici: https://aws.Amazon.com/Amazon-linux-2/faqs/ .
Au moment de la rédaction de ce document, la dernière version de nginx disponible à partir du référentiel AWS yum est la 1.8.
La meilleure chose à faire pour le moment est de construire une version plus récente à partir des sources.
AWS Linux AMI dispose déjà des outils de génération nécessaires.
Par exemple, basé sur Nginx 1.10 (je suppose que vous êtes connecté en tant que ec2-user
normal. Tout ce qui nécessite des droits de superutilisateur est précédé de 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
Vous aurez ensuite besoin d'un fichier de service pour pouvoir démarrer/arrêter nginx et le charger au démarrage.
En voici un qui correspond à la configuration ci-dessus. Mettez-le dans /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
Définissez le fichier de service pour qu'il soit exécutable:
Sudo chmod 755 /etc/rc.d/init.d/nginx
Maintenant, vous pouvez commencer avec:
Sudo service nginx start
Pour le charger automatiquement au démarrage:
Sudo chkconfig nginx on
Enfin, n'oubliez pas de modifier /etc/nginx/nginx.conf
pour répondre à vos exigences et exécutez Sudo service nginx reload
pour actualiser les modifications.
Notez qu'il n'y a pas de 1.10 où vous cherchez. Vous pouvez voir la liste ici
http://nginx.org/packages/mainline/centos/7/x86_64/RPMS/
Après avoir utilisé yum update
, utilisez yum search nginx
pour voir les différentes versions que vous possédez et choisissez-en une spécifique:
yum search nginx
sur centos 6 donne
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
J'ai deux versions au choix, 1.6 et 1.8.