Je souhaite installer le dernier PHP 7.0 sur une instance AWS EC2 T2.Micro. À ce jour, j’ai lu qu’AWS ne prend actuellement pas en charge PHP 7. Mais hey .. Ceci est juste un serveur virtuel dans le nuage avec moi ayant le contrôle complet de sa configuration, il doit donc y avoir un moyen de faire tourner PHP 7 sur celui-ci.
Toute aide très appréciée.
Ma boîte est comme ci-dessous
$ cat /etc/*-release
---------------------------------------
NAME="Amazon Linux AMI"
VERSION="2015.09"
ID="amzn"
ID_LIKE="rhel Fedora"
VERSION_ID="2015.09"
PRETTY_NAME="Amazon Linux AMI 2015.09"
ANSI_COLOR="0;33"
CPE_NAME="[*not significant*]"
HOME_URL="http://aws.Amazon.com/Amazon-linux-AMI/"
Amazon Linux AMI release 2015.09
$ uname -a
---------------------------------------
Linux ip-xxx-xxx-xxx-xxx 4.1.13-18.26.amzn1.x86_64 #1 [date] x86_64 x86_64 x86_64 GNU/Linux
$ uname -mrs
---------------------------------------
Linux 4.1.13-18.26.amzn1.x86_64 x86_64
$ cat /proc/version
---------------------------------------
Linux version 4.1.13-18.26.amzn1.x86_64 (mockbuild@gobi-build-64010) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) )
Vous pouvez maintenant utiliser les paquets officiels php7. Voici un guide facile à suivre.
1. Installez Apache 2.4 et PHP 7.0 sur Amazon AMI)
# Remove current Apache & php
Sudo yum remove httpd* php*
# Install Apache 2.4
Sudo yum install httpd24
# Install PHP 7.0
# automatically includes php70-cli php70-common php70-json php70-process php70-xml
Sudo yum install php70
# Install additional commonly used php packages
Sudo yum install php70-Gd
Sudo yum install php70-imap
Sudo yum install php70-mbstring
Sudo yum install php70-mysqlnd
Sudo yum install php70-opcache
Sudo yum install php70-pdo
Sudo yum install php70-pecl-apcu
2. Modifiez DirectoryIndex pour inclure index.php
Sudo nano /etc/httpd/conf/httpd.conf
trouve ça:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
et le modifier pour ressembler à ceci:
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
Si un répertoire contient un index.html et un index.php, le serveur servira le index.html avec cette installation. Si vous ne voulez pas que cela se produise, vous avez les options suivantes:
Inverser l'ordre, donc index.php est servi quand les deux fichiers existent:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
Utilisez uniquement index.php comme DirectoryIndex:
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>
. Démarrer le serveur Web Apache
Sudo service httpd start
4. Configurez le serveur Web Apache pour qu'il démarre à chaque démarrage du système
Sudo chkconfig httpd on
5. Testez votre installation
Créez phpinfo.php:
echo '<?php print phpinfo();' | Sudo tee --append /var/www/html/phpinfo.php
Ouvrez votre navigateur et entrez l'adresse IP publique de votre instance dans la barre d'adresse, suivie de /phpinfo.php
Example: http://xxx.xxx.xxx.xxx/phpinfo.php
Remarque: N'oubliez pas d'autoriser les connexions entrantes pour HTTP (port 80) dans le Groupes de sécurité de votre instance, sinon votre demande expirera.
Je l'ai en cours d'exécution sur mon instance. Vous avez besoin de http2.2 pour que cela fonctionne avec le référentiel webtatic. J'ai eu tellement de repos qu'il y avait un tas d'incompatibilités de versions différentes. Je n'ai pas gardé de bonnes notes, mais en regardant mon histoire, j'ai essentiellement fait ceci:
# Remove current php & Apache
Sudo service httpd stop
Sudo yum remove httpd* php*
# Remove any third party repos that aren't relevant
Sudo yum repolist
Sudo yum remove remi-safe
# Install Standard Apache for Amazon AMI
Sudo yum install httpd #specify http22 if you get a different version
# Download webtatic
mkdir -p /tmp/php7
cd /tmp/php7
wget https://mirror.webtatic.com/yum/el6/latest.rpm
# Install webtatic repo
Sudo yum install latest.rpm
Sudo vi /etc/yum.repos.d/webtatic.repo 'set repo enables
Sudo yum clean all
# Install base php7
Sudo yum install --enablerepo=webtatic php70w
php -v #Should say something like PHP 7.0.2 (cli) (built: Jan 9 2016 16:09:32) ( NTS )
Sudo yum install php70w-opcache
Sudo yum install php70w-xml
Sudo yum install php70w-pdo
Sudo yum install php70w-mysqlnd
Sudo yum install php70w-Gd
Sudo yum install php70w-apcu
Sudo yum install php70w-pecl-apcu
Sudo yum install php70w-mbstring
Sudo yum install php70w-imap
# Restart Apache
Sudo service httpd restart
Réponse actuelle au problème (pas la version originale en question) - à savoir, car c'est un peu plus simple et que php7 n'est pas disponible dans le dépôt standard pour Amazon Linux 2, et cela ne s'est pas produit avant d'avoir cherché un peu plus difficile:
Amazon-linux-extras install php7.2
La version des extras peut être vérifiée avec une commande list si la v7.2 n’est plus actuelle:
Amazon-linux-extras list
Il y a maintenant des paquets php7 officiels pour aws linux à compter du 14 juillet 2016. Voir l'annonce à l'adresse https://forums.aws.Amazon.com/ann.jspa?annID=3902
Pour lister les paquets disponibles, lancez yum list php70 *
J'installais PHP 7.0 sur une machine de production qui possède déjà Apache 2.4 et PHP 5.5. Je voulais installer PHP 7.0 à côté de lui d'une manière qui n'aurait aucune panne de serveur. C'est ce que j'ai fait.
# Install PHP 7.0
# automatically includes php70-cli php70-common php70-json php70-process php70-xml
Sudo yum install php70
# Install additional commonly used php packages
Sudo yum install php70-Gd
Sudo yum install php70-imap
Sudo yum install php70-mbstring
Sudo yum install php70-mysqlnd
Sudo yum install php70-opcache
Sudo yum install php70-pecl-apcu
Ceci installe heureusement PHP 7 aux côtés de PHP 5.5. Le truc était de dire à Apache d’utiliser 7.0. Je ne savais pas si c’était la meilleure façon, mais J'ai réalisé cela en changeant ces 2 permaliens:
ln -sf /etc/httpd/conf.d/php-conf.7.0 /etc/alternatives/php.conf
ln -sf /etc/httpd/conf.modules.d/15-php-conf.7.0 /etc/alternatives/10-php.conf
À ce stade, Apache exécute encore avec enthousiasme la version 5.5. Ensuite, lorsque vous redémarrez Apache, cela devrait fonctionner avec 7.0 (peut-être 7.0.1). Ceci est le moyen sans temps d'arrêt. Je recommande quand même de faire ce que j'ai fait, à savoir reconstruire PROD sur une autre instance (créer un serveur TEST) et tout tester une fois avant de le faire réellement sur PROD. Bonne chance!
Oh, et pour le moment, la commande php continuera à exécuter la version 5.5. Vous pouvez changer n'importe quel script ou travail CRON pour qu'il pointe vers php7 ou changer la version par défaut en lançant
alternatives --config php
Les autres réponses ne semblent fonctionner qu'avec Apache 2.2 mais pas avec 2.4.
Voici comment j'ai installé php7 sur Amazon Linux sous Apache 2.4:
Premièrement, si php est déjà installé, supprimez-le:
Sudo yum remove php5*
Prenez note des paquets php5 qui sont en train d'être supprimés car vous devrez en installer les versions php7. Les noms de paquetages php7 ont un mappage assez direct et non ambigu de leurs homologues de php5 comme vous le verrez ci-dessous. Le reste des instructions couvre une pile LAMP classique et peut être suffisant pour votre cas d'utilisation.
Utilisation des instructions de http://www.spidersoft.com.au/2015/php-7-on-AMI-linux-ec2/
wget http://mirrors.mediatemple.net/remi/enterprise/remi-release-6.rpm
Sudo yum install remi-release-6.rpm
éditez /etc/yum.repos.d/epel.repo
et réglez enabled=1
Sudo yum upgrade -y
Sudo yum install php70 php70-php-fpm php70-php-xml php70-php-pdo php70-php-mysqlnd php70-php-Gd php70-php-pecl-apcu php70-php-mbstring php70-php-mcrypt php70-php-opcache
Vous devriez maintenant avoir installé php70-php-fpm, que vous pouvez utiliser avec Apache:
Démarrez le démon fpm:
Sudo service php70-php-fpm start
Basculez Apache de prefork vers le gestionnaire d'événements mpm (requis, car mod_php n'est pas thread-safe) dans /etc/httpd/conf.modules.d/00-mpm.conf
:
LoadModule mpm_event_module modules/mod_mpm_event.so
Demandez à Apache de transmettre toutes les requêtes php à php-fpm en ajoutant les lignes suivantes dans /etc/httpd/conf/httpd.conf
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
DirectoryIndex /index.php index.php
Redémarrez Apache en utilisant Sudo service httpd restart
. Si tout s'est bien passé, vous devriez pouvoir vérifier l'installation en demandant un fichier php contenant phpinfo()
.
Si vous avez des scripts Shell existants qui utilisent l'interpréteur cli de php et commencent ainsi par #!/usr/bin/php
, Vous devez configurer un lien symbolique vers /usr/bin/php
Car le fichier binaire s'appelle maintenant /usr/bin/php70
. Vous pouvez le faire comme suit:
Sudo ln -s /usr/bin/php70 /usr/bin/php
Pour plus d'informations sur la configuration de php-fpm, voir https://wiki.Apache.org/httpd/PHP-FPM
http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html
peut suivre ce guide étape par étape pour l'installation de LAMP
Sudo yum update -y
Sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd
Sudo service httpd start
Si vous voulez une installation rapide copier-coller:
wget http://mirrors.mediatemple.net/remi/enterprise/remi-release-6.rpm
Sudo yum install -y remi-release-6.rpm
Sudo yum update -y
Sudo yum install -y --enablerepo=epel php70
Test avec:
php70 -v
Et si vous voulez que l'exécutable soit php
:
ln -s /usr/bin/php70 /usr/local/bin/php
php -v
Par défaut, seuls quelques-uns Yum Repo est activé sur RedHat EC2. Pour tout activer, tapez simplement
yum-config-manager --enable rhui-REGION-rhel-*
et faites une liste de yum maintenant, vous devriez pouvoir voir ceci:
yum list | grep php7
C'est simple. Juste:
Sudo Amazon-linux-extras install -y php7.2
Ce fil m'a aidé à me rapprocher suffisamment pour terminer, je partage les commandes et la sortie qui ont fonctionné pour moi.
Sur Amazon Lightsail avec Amazon Linux ( amzn1.x86_64 ), la liste de commandes suivante m’a aidé à débarrasser le système d’Apache 2.2 et PHP 5.3 pour obtenir Apache 2.4 et PHP :
Sudo yum remove php*
==============================================================================================================================================
Package Arch Version Repository Size
==============================================================================================================================================
Removing:
php x86_64 5.3.29-1.8.amzn1 @amzn-main 7.4 M
php-cli x86_64 5.3.29-1.8.amzn1 @amzn-main 6.4 M
php-common x86_64 5.3.29-1.8.amzn1 @amzn-main 6.3 M
php-devel x86_64 5.3.29-1.8.amzn1 @amzn-main 9.9 M
php-Gd x86_64 5.3.29-1.8.amzn1 @amzn-main 669 k
php-mbstring x86_64 5.3.29-1.8.amzn1 @amzn-main 4.1 M
php-mcrypt x86_64 5.3.29-1.8.amzn1 @amzn-main 92 k
php-mysql x86_64 5.3.29-1.8.amzn1 @amzn-main 445 k
php-pdo x86_64 5.3.29-1.8.amzn1 @amzn-main 381 k
php-xml x86_64 5.3.29-1.8.amzn1 @amzn-main 625 k
Transaction Summary
==============================================================================================================================================
Remove 10 Packages
conf
et conf.d
dossier avant de faire cela, à l’heure; dans mon cas, il s’agissait d’une nouvelle configuration du système, il n’y avait donc aucun intérêt à ce sujet):
Sudo yum remove http*
==============================================================================================================================================
Package Arch Version Repository Size
==============================================================================================================================================
Removing:
httpd x86_64 2.2.31-1.8.amzn1 @amzn-main 3.0 M
httpd-devel x86_64 2.2.31-1.8.amzn1 @amzn-main 534 k
httpd-tools x86_64 2.2.31-1.8.amzn1 @amzn-main 135 k
Transaction Summary
==============================================================================================================================================
Remove 3 Packages
Sudo yum install httpd24.x86_64
Sudo service httpd start
Sudo yum install php70
==============================================================================================================================================
Package Arch Version Repository Size
==============================================================================================================================================
Installing:
php70 x86_64 7.0.13-1.19.amzn1 amzn-updates 3.3 M
Installing for dependencies:
php70-cli x86_64 7.0.13-1.19.amzn1 amzn-updates 4.7 M
php70-common x86_64 7.0.13-1.19.amzn1 amzn-updates 1.2 M
php70-json x86_64 7.0.13-1.19.amzn1 amzn-updates 65 k
php70-process x86_64 7.0.13-1.19.amzn1 amzn-updates 79 k
php70-xml x86_64 7.0.13-1.19.amzn1 amzn-updates 309 k
Transaction Summary
==============================================================================================================================================
Install 1 Package (+5 Dependent packages)
Total download size: 9.6 M
Installed size: 31 M
Is this ok [y/d/N]: y
Downloading packages:
(1/6): php70-7.0.13-1.19.amzn1.x86_64.rpm | 3.3 MB 00:00
(2/6): php70-cli-7.0.13-1.19.amzn1.x86_64.rpm | 4.7 MB 00:00
(3/6): php70-common-7.0.13-1.19.amzn1.x86_64.rpm | 1.2 MB 00:00
(4/6): php70-json-7.0.13-1.19.amzn1.x86_64.rpm | 65 kB 00:00
(5/6): php70-process-7.0.13-1.19.amzn1.x86_64.rpm | 79 kB 00:00
(6/6): php70-xml-7.0.13-1.19.amzn1.x86_64.rpm | 309 kB 00:00
----------------------------------------------------------------------------------------------------------------------------------------------
Total 14 MB/s | 9.6 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : php70-json-7.0.13-1.19.amzn1.x86_64 1/6
Installing : php70-process-7.0.13-1.19.amzn1.x86_64 2/6
Installing : php70-xml-7.0.13-1.19.amzn1.x86_64 3/6
Installing : php70-cli-7.0.13-1.19.amzn1.x86_64 4/6
Installing : php70-common-7.0.13-1.19.amzn1.x86_64 5/6
Installing : php70-7.0.13-1.19.amzn1.x86_64 6/6
Verifying : php70-7.0.13-1.19.amzn1.x86_64 1/6
Verifying : php70-common-7.0.13-1.19.amzn1.x86_64 2/6
Verifying : php70-json-7.0.13-1.19.amzn1.x86_64 3/6
Verifying : php70-process-7.0.13-1.19.amzn1.x86_64 4/6
Verifying : php70-xml-7.0.13-1.19.amzn1.x86_64 5/6
Verifying : php70-cli-7.0.13-1.19.amzn1.x86_64 6/6
Installed:
php70.x86_64 0:7.0.13-1.19.amzn1
Dependency Installed:
php70-cli.x86_64 0:7.0.13-1.19.amzn1 php70-common.x86_64 0:7.0.13-1.19.amzn1 php70-json.x86_64 0:7.0.13-1.19.amzn1
php70-process.x86_64 0:7.0.13-1.19.amzn1 php70-xml.x86_64 0:7.0.13-1.19.amzn1
Complete!
Le nom du paquet php 7 est php70w. Vous pouvez donc installer un dépôt Webtatic sur votre machine linux et l’installer à partir de là.
rpm -ivh https://mirror.webtatic.com/yum/el6/latest.rpm
yum clean all
yum install --enablerepo=webtatic php70w
Plusieurs réponses devraient fonctionner ici; cependant, lorsque j'installais le mien, il ne rendrait pas les pages et afficherait du texte au lieu de PHP.
Pour résoudre ce problème, j'ai couru
Sudo yum install php70-php-fpm
Après cela, tout a commencé à fonctionner.
Voici comment j'ai installé PHP 7.1 sur Amazon Linux:
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm
yum-config-manager --enable remi-php71
wget ftp://195.220.108.108/linux/epel/6/x86_64/Packages/s/scl-utils-20120229-1.el6.x86_64.rpm
rpm -Uvh scl-utils-20120229-1.el6.x86_64.rpm
yum install php71
https://Gist.github.com/ihor/581d169886c29e7e17d01b0041167b01