在AmazonLinux上搭建nginx+PHP5.6+PHP-fpm+PHP-redis环境

我在AmazonLinux上创建了一个nginx+PHP5.6+PHP-fpm+PHP-redis环境,并记录了当时的注意事项。另外,我使用了socket连接php-fpm,并从remi仓库下载了PHP-redis,因为它在AmazonLinux仓库中找不到。

环境

    • AmazonLinux

 

    • nginx(AmazonLinuxリポジトリ)

 

    • PHP5.6(AmazonLinuxリポジトリ)

 

    • PHP-fpm(AmazonLinuxリポジトリ)

 

    PHP-redis(remiリポジトリ)

请参考

    • CentOSにてnginxでPHPを動かす

 

    nginx + php-fpm socketで接続する

nginx

这里的描述比较概括。

# install
$sudo yum install nginx -y
# start service
$sudo service nginx start
# confirm web page can be downloaded
$wget http://localhsot
# set run level
$sudo chkconfig nginx on
$sudo chkconfig --list nginx

安装 PHP5.6 并通过 PHP-fpm 进行连接。

以下是参考网站提供的资料,几乎相同的内容,但路径略有区别,因此我会将其记录下来。请注意,文档根目录的设置为/var/www/。

安装PHP5.6和php-fpm。

$sudo yum install php56 php56-fpm -y

创建一个用于获取PHP信息的PHP文件。

<?php
    phpinfo();
?>

将php-fpm的配置更改。将user和group从apache更改为nginx。

- user = apache
+ user = nginx

- group = apache
+ group = nginx

更改nginx的配置

  http {
-   index index.html index.htm;
+   index index.php
      server {
-       root /usr/share/nginx/html; 
+       root /var/www;

-       #location ~ \.php$ {
-       #    root           html;
-       #    fastcgi_pass   127.0.0.1:9000;
-       #    fastcgi_index  index.php;
-       #    fastcgi_param  SCRIPT_FILENAME/scripts$fastcgi_script_name;
-       #    include        fastcgi_params;
-       #}
+       location ~ \.php$ {
+       root           /var/www;
+       fastcgi_pass   127.0.0.1:9000;
+       fastcgi_index  index.php;
+       fastcgi_param  SCRIPT_FILENAME /var/www$fastcgi_script_name;
+       include        fastcgi_params;
+     }

重新启动php-fpm,并设置自动启动

$sudo service php-fpm start
$sudo chkconfig php-fpm on
$sudo chkconfig php-fpm --list php-fpm

重启nginx

$sudo service nginx restart

确认设定

$curl -s http://localhost/phpinfo.php |grep "PHP Version"
<tr><td class="e">PHP Version </td><td class="v">5.6.8 </td></tr>

可以确认 PHP 版本为 5.6.8,使用的是 PHP 5.6 系列。

将nginx和php-fpm的连接改为使用socket连接

这也是一个几乎与上述内容相同的参考版本。我们将使用socket连接nginx和php-fpm。

更改php-fpm配置

-   listen = 127.0.0.1:9000
+   listen =  /var/run/php-fpm/php-fpm.sock

-   ;listen.owner = nobody
-   ;listen.group = nobody
+   listen.owner = nginx  
+   listen.group = nginx

更改Nginx的配置

-   fastcgi_pass   127.0.0.1:9000;
+   fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;

重新启动服务

$sudo service php-fpm restart
$sudo service nginx restart

确认设置

$curl -s http://localhost/phpinfo.php |grep "PHP Version"

只要能够像刚才一样获取就可以了。

安装PHP-redis应用

截至2015年5月28日,Amazon Linux仓库中没有PHP56-redis的软件包。(尽管有PHP55可用…)

根据以上内容,需要使用除了Amazon Linux仓库以外的资源,本例中将使用Remi仓库。

首先,我們使用rpm來安裝名為SCL-Util的套件,此套件在安裝過程中是必需的。

$wget http://mirror.centos.org/centos/6/SCL/x86_64/scl-utils/scl-utils-20120927-11.el6.centos.alt.x86_64.rpm
$sudo rpm -ivh scl-utils-20120927-11.el6.centos.alt.x86_64.rpm

而且,还需要事先安装其他必要的软件包。

$sudo yum install php56-pecl-igbinary

以下是向remi存储库中添加的步骤。

$wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$sudo rpm -ivh remi-release-6.rpm

由于现在可以使用remi存储库,因此我们将安装php-redis。

$sudo yum --enablerepo=remi,remi-php56 install php56-php-pecl-redis.x86_64

一旦安装完成,我认为会在以下位置存在so文件

$ls /opt/remi/php56/root/usr/lib64/php/modules/redis.so

我們將在 /usr/lib64/php/5.6/modules/ 資料夾中創建符號連結,這些模組是通過 AmaozonLinux 安裝的。

$sudo ln -s /opt/remi/php56/root/usr/lib64/php/modules/redis.so /usr/lib64/php/5.6/modules/redis.so

最后,我们将放置类似以下内容的Redis配置文件。

; Enable redis extension module
extension = redis.so

; phpredis can be used to store PHP sessions.
; To do this, uncomment and configure below

; RPM note : save_handler and save_path are defined
; for mod_php, in /etc/httpd/conf.d/php.conf
; for php-fpm, in /opt/remi/php56/root/etc/php-fpm.d/*conf

;session.save_handler = redis
;session.save_path = "tcp://host1:6379?weight=1, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2"

由于准备工作已完成,我们将重新启动服务并进行确认。

$sudo service php-fpm restart
$sudo service nginx restart

请查看phpinfo确认是否已加载了Redis模块。

$curl -s http://localhost/phpinfo.php |grep redis
/etc/php-5.6.d/50-redis.ini,
<h2><a name="module_redis">redis</a></h2>
<tr><td class="e">Registered save handlers </td><td class="v">files user redis  </td></tr>
This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file:  LICENSE

我确认调用了Redis的模块。

如果要构建php-redis

本次我们使用了remi仓库,但也会提供编译的方法。

在建立时需要预先安装所需的东西。

$sudo yum groupinstall "Development Tools"
$sudo yum install php56-devel

下载源代码

$git clone https://github.com/phpredis/phpredis.git

我会按照GitHub页面上的指示进行构建尝试。

$phpize
$./configure
$make
$sudo make install
Installing shared extensions:     /usr/lib64/php/5.6/modules/

当编译完成后,将在/usr/lib64/php/5.6/modules/目录下放置一个.so文件。只需将适用于redis的ini文件放置在该目录即可。

广告
将在 10 秒后关闭
bannerAds