简体   繁体   English

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

[英]How to install PHP 7 on EC2 t2.micro Instance running Amazon Linux Distro

I want to install the latest PHP 7.0 on an AWS EC2 T2.Micro Instance.我想在 AWS EC2 T2.Micro 实例上安装最新的 PHP 7.0。 So far I have read that currently AWS do not support PHP 7. But hey.. This is just a virtual server in the cloud with me having the full control over its configuration, so there must be some way to get PHP 7 running on this one.到目前为止,我已经读到当前 AWS 不支持 PHP 7。但是嘿.. 这只是云中的一个虚拟服务器,我可以完全控制它的配置,所以必须有某种方法让 PHP 7 在这个上运行一。

Any help much appreciated.非常感谢任何帮助。

My box is as below我的盒子如下

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

You can now use the official php7 packages.您现在可以使用官方的 php7 包。 Here an easy to follow guide.这是一个易于遵循的指南。

1. Install Apache 2.4 and PHP 7.0 on Amazon Linux AMI 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. Modify DirectoryIndex to include index.php 2.修改DirectoryIndex以包含index.php

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

find this:找到这个:

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

and modify it to look like this:并将其修改为如下所示:

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

If a directory contains an index.html and an index.php, the server will serve the index.html with this setup.如果一个目录包含一个 index.html 和一个 index.php,服务器将使用此设置提供 index.html。 If you do not want that to happen, you have the following options:如果您不希望这种情况发生,您有以下选择:

Reverse the order, so index.php is served when both files exist:颠倒顺序,因此当两个文件都存在时提供index.php

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

Only use index.php as the DirectoryIndex:仅使用 index.php 作为 DirectoryIndex:

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

3. Start the Apache web server 3.启动Apache网络服务器

sudo service httpd start

4. Configure the Apache web server to start at each system boot 4. 配置 Apache Web 服务器在每次系统启动时启动

sudo chkconfig httpd on

5. Test your installation 5. 测试您的安装

Create phpinfo.php:创建 phpinfo.php:

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

Open your browser and enter your instance's public IP in the address bar followed by /phpinfo.php打开浏览器并在地址栏中输入实例的公共 IP,然后输入 /phpinfo.php

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

Note: Don't forget to allow incoming connections for HTTP (port 80) in the Security Groups of your instance, else your request will time out.注意:不要忘记在您的实例的安全组中允许 HTTP(端口 80)的传入连接,否则您的请求将超时。

I got this running on my instance.我在我的实例上运行了这个。 You need http2.2 for it to work with the webtatic repo.您需要 http2.2 才能使用 webtatic 存储库。 I had so many repos there were a bunch of different version incompatibilities.我有这么多的回购有一堆不同的版本不兼容。 I didn't keep great notes but looking at my history I basically did this:我没有留下很好的笔记,但看看我的历史,我基本上是这样做的:

# 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

Current answer to problem (not original version in question) - worth knowing since this is a bit simpler and php7 isn't available in the standard repos for Amazon Linux 2, and this didn't come up until I searched a bit harder:问题的当前答案(不是有问题的原始版本) - 值得了解,因为这有点简单,而且 php7 在 Amazon Linux 2 的标准存储库中不可用,直到我更努力地搜索才出现:

amazon-linux-extras install php7.2

The version of extras can be checked with a list command if v7.2 is no longer current:如果 v7.2 不再是最新版本,可以使用 list 命令检查附加版本的版本:

amazon-linux-extras list

There are now official php7 packages for aws linux as of July 14, 2016. See the announcement at https://forums.aws.amazon.com/ann.jspa?annID=3902截至 2016 年 7 月 14 日,现在有用于 aws linux 的官方 php7 软件包。请参阅https://forums.aws.amazon.com/ann.jspa?annID=3902 上的公告

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

The other answers seem to only work with Apache 2.2 but not 2.4.其他答案似乎只适用于 Apache 2.2 而不适用于 2.4。

Here's how I installed php7 on Amazon Linux running Apache 2.4:以下是我在运行 Apache 2.4 的 Amazon Linux 上安装 php7 的方法:

First, if php is already installed, then remove it:首先,如果已经安装了 php,则将其删除:

sudo yum remove php5*

Take note of the php5 packages that are being removed as you'll need to install the php7 versions of them.请注意正在删除的 php5 软件包,因为您需要安装它们的 php7 版本。 The php7 package names have a fairly direct and unambiguous mapping from their php5 counterparts as you'll see below.正如您将在下面看到的,php7 包名称与它们的 php5 对应包具有相当直接和明确的映射。 The rest of the instructions cover a classic LAMP stack and may be sufficient for your use-case.其余说明涵盖了经典的 LAMP 堆栈,可能足以满足您的用例。

Using instructions from http://www.spidersoft.com.au/2015/php-7-on-ami-linux-ec2/使用来自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

edit /etc/yum.repos.d/epel.repo and set enabled=1编辑/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

Now you should have php70-php-fpm installed, which you can use in conjunction with apache:现在您应该已经安装了 php70-php-fpm,您可以将其与 apache 结合使用:

Start the fpm daemon:启动 fpm 守护进程:

sudo service php70-php-fpm start

Switch Apache from prefork to mpm event worker (this is required because mod_php isn't thread safe) in /etc/httpd/conf.modules.d/00-mpm.conf :/etc/httpd/conf.modules.d/00-mpm.conf中将 Apache 从 prefork 切换到 mpm event worker(这是必需的,因为 mod_php 不是线程安全的):

LoadModule mpm_event_module modules/mod_mpm_event.so

Instruct apache to pass all php requests to php-fpm by adding the following lines in /etc/httpd/conf/httpd.conf通过在/etc/httpd/conf/httpd.conf添加以下行,指示 apache 将所有 php 请求传递给 php-fpm

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

Restart apache using sudo service httpd restart .使用sudo service httpd restart重新启动 apache。 If everything went ok you should be able to verify the installation by requesting a php file containing phpinfo() .如果一切顺利,您应该能够通过请求包含phpinfo()的 php 文件来验证安装。

If you have existing shell scripts that use php's cli interpreter and thus start with #!/usr/bin/php , you have to set up a symlink to /usr/bin/php since the binary is now named /usr/bin/php70 .如果您有使用 php 的 cli 解释器的现有 shell 脚本,因此以#!/usr/bin/php开头,您必须设置一个指向/usr/bin/php的符号链接,因为二进制文件现在被命名为/usr/bin/php70 . You can do this as follows:您可以按如下方式执行此操作:

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

For more info on how to configure php-fpm see https://wiki.apache.org/httpd/PHP-FPM有关如何配置 php-fpm 的更多信息,请参阅https://wiki.apache.org/httpd/PHP-FPM

I was installing PHP 7.0 on a production box that already has apache 2.4 and PHP 5.5.我在已经有 apache 2.4 和 PHP 5.5 的生产设备上安装 PHP 7.0。 I wanted to install PHP 7.0 alongside it in a way that would have no Server outage.我想以一种不会出现服务器中断的方式安装 PHP 7.0。 This is what I did.这就是我所做的。

# 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

This happily installed PHP 7 alongside PHP 5.5.这很高兴在 PHP 5.5 旁边安装了 PHP 7。 The trick was to tell apache to use 7.0.诀窍是告诉 apache 使用 7.0。 I'm not sure if this was the best way, but I achieved this by changing these 2 permalinks:我不确定这是否是最好的方法,但我通过更改以下 2 个固定链接实现了这一点:

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

At this point apache is still happily running 5.5.此时 apache 仍然愉快地运行 5.5。 Then when you restart apache it should be working with 7.0 (maybe 7.0.1).然后当您重新启动 apache 时,它应该可以使用 7.0(可能是 7.0.1)。 This is the no downtime way.这是没有停机时间的方式。 I'd still recommend doing what I did, which is to rebuild PROD on another instance (create a TEST server) and test it all once before actually doing it on PROD.我仍然建议做我所做的,即在另一个实例上重建 PROD(创建一个 TEST 服务器)并在实际在 PROD 上进行之前测试一次。 Good luck!祝你好运!

Oh, and right now the php command will still run 5.5.哦,现在php命令仍将运行 5.5。 You can either change any scripts or CRON jobs to point to php7 or change the default version by running您可以更改任何脚本或 CRON 作业以指向 php7 或通过运行更改默认版本

alternatives --config php

It's simple.这很简单。 Just:只是:

sudo amazon-linux-extras install -y php7.2

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

can follow this step-by-step guide for LAMP installation可以按照此分步指南进行 LAMP 安装

sudo yum update -y

sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd

sudo service httpd start

If you want a quick copy-paste install:如果您想要快速复制粘贴安装:

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 with:测试:

php70 -v

And if you want the executable to be php :如果您希望可执行文件为php

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

This thread helped me get close enough to finish it off, I'm sharing the commands and output that worked for me.这个线程帮助我接近完成它,我正在分享对我有用的命令和输出。

On Amazon Lightsail with Amazon Linux ( amzn1.x86_64 ), the following command list helped me rid the system of Apache 2.2 and PHP 5.3 to get to Apache 2.4 and PHP :在带有 Amazon Linux ( amzn1.x86_64 ) 的Amazon Lightsail上,以下命令列表帮助我摆脱了 Apache 2.2 和 PHP 5.3 系统,以使用 Apache 2.4 和 PHP

  1. Remove the current version of php and related tools:删除当前版本的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. Remove the current version of Apache ( note you should backup your conf and conf.d folder before doing this, imho; in my case, it was a new system setup so there was nothing of interest there ):删除当前版本的 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. Install Apache 2.4 (and start Apache)安装 Apache 2.4(并启动 Apache)

sudo yum install httpd24.x86_64

sudo service httpd start

  1. Install PHP 7安装 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!

The php 7 package name is php70w . php 7 包名称是php70w So what you can do is, install a Webtatic repo on you linux machine and install it from there.所以你可以做的是,在你的 linux 机器上安装一个 Webtatic repo 并从那里安装它。

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

By default, just few Yum Repo is enabled on RedHat EC2.默认情况下,RedHat EC2 上只启用了少数 Yum Repo。 To enable all, just type要启用所有,只需键入

yum-config-manager --enable rhui-REGION-rhel-*

and do a yum list now, you should be able to see this:现在做一个 yum 列表,你应该可以看到这个:

yum list |grep php7 yum 列表 |grep php7

Several answers should work here;在这里应该有几个答案; however, when I was installing mine, it would not render pages and would display text instead of rendered PHP.但是,当我安装我的时,它不会呈现页面并且会显示文本而不是呈现的 PHP。

To fix that, I ran为了解决这个问题,我跑了

sudo yum install php70-php-fpm

After that, everything started working.在那之后,一切都开始了。

Here is how I installed PHP 7.1 on Amazon Linux:以下是我在 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/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 https://gist.github.com/ihor/581d169886c29e7e17d01b0041167b01

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM