如何在运行Amazon Linux Distro的EC2 t2.micro实例上安装PHP 7

我想在AWS EC2 T2.Micro实例上安装最新的PHP 7.0。 到目前为止,我已经读过,目前AWS不支持PHP 7.但是,嘿..这只是一个虚拟服务器在云端,我完全控制其configuration,所以必须有一些方法让PHP 7运行在这个一。

任何帮助非常感谢。

我的箱子如下

$ 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) ) 

Solutions Collecting From Web of "如何在运行Amazon Linux Distro的EC2 t2.micro实例上安装PHP 7"

你现在可以使用官方的php7包。 这里很容易遵循指导。

1.在Amazon Linux AMI上安装Apache 2.4和PHP 7.0

 # 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.修改DirectoryIndex以包含index.php

 sudo nano /etc/httpd/conf/httpd.conf 

找到这个:

 <Ifmodulee dir_module> DirectoryIndex index.html </Ifmodulee> 

并修改它看起来像这样:

 <Ifmodulee dir_module> DirectoryIndex index.html index.php </Ifmodulee> 

如果一个目录包含一个index.html和一个index.php,服务器将通过这个设置来提供index.html。 如果你不希望发生这种情况,你有以下选择:

颠倒顺序,所以当两个文件都存在时, index.php被提供:

  <Ifmodulee dir_module> DirectoryIndex index.php index.html </Ifmodulee> 

只能使用index.php作为DirectoryIndex:

 <Ifmodulee dir_module> DirectoryIndex index.php </Ifmodulee> 

3.启动Apache Web服务器

 sudo service httpd start 

4.将Apache Web服务器配置为在每次系统引导时启动

 sudo chkconfig httpd on 

5.测试你的安装

创建phpinfo.php:

 echo '<?php print phpinfo();' | sudo tee --append /var/www/html/phpinfo.php 

打开浏览器并在地址栏中输入实例的公有IP,然后输入/phpinfo.php

 Example: http://xxx.xxx.xxx.xxx/phpinfo.php 

注意:不要忘记在您的实例的安全组中允许HTTP(端口80)的传入连接,否则您的请求将超时。

我在我的实例上运行。 您需要使用http2.2来与webtatic回购协同工作。 我有这么多的回购有一堆不同版本不兼容。 我没有保留很好的笔记,但看着我的历史,我基本上是这样做的:

 # 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 

截至2016年7月14日,现在有官方的php7软件包供aws linux使用。查看公告https://forums.aws.amazon.com/ann.jspa?annID=3902

要列出可用的软件包,请运行yum list php70 *

我在一个已经有apache 2.4和PHP 5.5的生产环境中安装PHP 7.0。 我想以一种没有服务器中断的方式安装PHP 7.0。 这就是我所做的。

 # 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 

这愉快地安装了PHP 7和PHP 5.5。 诀窍是告诉Apache使用7.0。 我不确定这是否是最好的方法,但我通过改变这两个固定链接来实现:

 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 

在这一点上,Apache仍然很乐意运行5.5。 然后,当你重新启动apache时, 应该使用7.0(也许是7.0.1)。 这是没有宕机的方式。 我仍然建议我做什么,这是在另一个实例上重建PROD(创建一个TEST服务器),然后在PROD上进行实际测试。 祝你好运!

哦,现在php命令仍然会运行5.5。 您可以更改任何脚本或CRON作业指向php7或通过运行更改默认版本

 alternatives --config php 

其他答案似乎只适用于Apache 2.2而不是2.4。

以下是我在运行Apache 2.4的Amazon Linux上安装php7的方法:

首先,如果php已经安装,那么删除它:

 sudo yum remove php5* 

请注意正在被删除的php5包,因为您需要安装它们的php7版本。 php7包的名字有一个相当直接和明确的映射,从他们的php5对应,你会看到下面。 其余的说明涵盖了经典的LAMP堆栈,可能足以满足您的使用情况。

使用http://www.spidersoft.com.au/2015/php-7-on-ami-linux-ec2/上的说&#x660E;

 wget http://mirrors.mediatemple.net/remi/enterprise/remi-release-6.rpm sudo yum install remi-release-6.rpm 

编辑/etc/yum.repos.d/epel.repo并设置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 

现在你应该安装php70-php-fpm,你可以和apache一起使用:

启动fpm守护进程:

 sudo service php70-php-fpm start 

/etc/httpd/conf.modules.d/00-mpm.conf中将Apache从prefork切换到mpm事件工作器(这是必需的,因为mod_php不是线程安全的):

 Loadmodulee mpm_event_module modules/mod_mpm_event.so 

指示apache通过在/etc/httpd/conf/httpd.conf添加以下行来将所有php请求传递给php-fpm

 <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> DirectoryIndex /index.php index.php 

使用sudo service httpd restart重新启动apache。 如果一切正常,您应该可以通过请求一个包含phpinfo()的php文件来验证安装。

如果你有现成的使用php的cli解释器的shell脚本,并且以#!/usr/bin/php开头,你必须建立一个到/usr/bin/php的符号链接,因为这个二进制文件现在被命名为/usr/bin/php70 。 你可以这样做,如下所示:

 sudo ln -s /usr/bin/php70 /usr/bin/php 

有关如何配置php-fpm的更多信息,请参阅https://wiki.apache.org/httpd/PHP-FPM

如果你想快速复制粘贴安装:

 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 

测试:

 php70 -v 

如果你想要的可执行文件是php

 ln -s /usr/bin/php70 /usr/local/bin/php php -v 

这个线程帮助我接近完成它,我分享命令和输出为我工作。

在使用Amazon Linux的Amazon Lightsailamzn1.x86_64 )上,以下命令列表帮助我摆脱了Apache 2.2和PHP 5.3的系统,进入Apache 2.4和PHP

  1. 删除当前版本的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 
  1. 删除当前版本的Apache( 注意,在做这个之前,你应该备份你的confconf.d文件夹,在我的情况下,这是一个新的系统设置,所以没有什么兴趣 ):

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 
  1. 安装Apache 2.4(并启动Apache)

sudo yum install httpd24.x86_64

sudo service httpd start

  1. 安装PHP 7

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! 

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html

可以按照这个LAMP安装的分步指南

 sudo yum update -y sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd sudo service httpd start 

php 7包的名字是php70w 。 所以你可以做的是,在你的linux机器上安装一个Webtatic仓库,并从那里安装它。

 rpm -ivh https://mirror.webtatic.com/yum/el6/latest.rpm yum clean all yum install --enablerepo=webtatic php70w 

几个答案应该在这里工作; 然而,当我安装我的,它不会呈现页面,并会显示文字,而不是呈现PHP。

为了解决这个问题,我跑了

sudo yum install php70-php-fpm

之后,一切开始工作。

以下是我在Amazon Linux上安装PHP 7.1的方法:

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