在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文件放置在该目录即可。