设为首页 收藏本站
查看: 989|回复: 0

[经验分享] LINUX下NGINX+PHP+YAF环境搭建

[复制链接]

尚未签到

发表于 2017-12-23 09:02:18 | 显示全部楼层 |阅读模式
  自己搭建了一下NGINX+PHP+YAF的生产环境,在这里记录一下,避免遗忘
  yaf是一套用PHP扩展实现的PHP框架,底层用C语言实现,据yaf作者描述其效率是Zend的50-60倍,性能高而又不失开发效率。

  操作系统是CentOS>  整个过程主要分为三个部分:
  1.编译安装PHP
  2.编译安装NGINX
  3.编译安装YAF
  一、编译安装PHP
  1.下载PHP源码,我这里下载得版本是5.6.29(php-5.6.29.tar.gz)

http://www.php.net/downloads.php
2.安装各依赖包
yum -y install gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel
3.解压源码包至当前目录
tar zxvf php-5.6.29.tar.gz
4.进入解压的文件夹编译PHP源码
cd php-5.6.29
5.生成makefile文件并构建
./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --with-bz2 --with-readline --without-sqlite3 --without-pdo-sqlite --with-pear
注释:
--prefix=/usr/local/php 程序安装的路径
--with-config-file-path=/etc/       php.ini 文件路径
--enable-fpm 编译 PHP-FastCGI管理器
在阿里云上编译时,因为内存过小,报了[ext/fileinfo/libmagic/apprentice.lo]的错,加上--disable-fileinfo编译选项后编译通过
其他编译选项查阅相关文章(http://www.t086.com/code/php/2.3.php.php)
make
make install
中间过程中报错,大多数情况可能是缺少依赖包所导致
6.将源代码目录中的php.ini-development(开发),php.ini-production(生产)复制到 --with-config-file-path 指定的目录,并改名为php.ini.
7.将PHP程序加入环境变量,方便直接作为命令调用
vim /etc/profile
在末尾加入
PATH=$PATH:/usr/local/php/bin
export PATH
要使改动立即生效执行
. /etc/profile 或 source /etc/profile
查看环境变量
echo $PATH
查看php版本
php -v
8.配置启动php-fpm
配置php-fpm
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
启动php-fpm
sudo /usr/local/php/sbin/php-fpm
二、编译安装NGINX
1.下载NGINX源码,我这里下载的版本是nginx-1.1.8(nginx-1.1.8.tar.gz)
http://nginx.org/
2.安装依赖包
yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel
3.解压源码包
tar xf nginx-1.1.8.tar.gz
cd nginx-1.1.8
4.生成makefile与构建
./configure --prefix=/usr/local/nginx
注释:
--prefix=/usr/local/nginx 主程序安装目录
还有很多其他编译选项,请查阅其他相关资料
make
make install
5.修改配置文件
cd /usr/local/nginx/conf
对nginx的主配置文件nginx.conf进行修改
location / {
root web根目录;
index index.html index.htm index.php;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME web根目录$fastcgi_script_name;
include fastcgi_params;
}
6.启动nginx
./usr/local/nginx/sbin/nginx
7.通过ps命令观察nginx是否启动成功
ps -elf | grep nginx
nginx启动的过程中还遇见了一个端口占用的问题,启动时报如下错
Starting nginx daemon: nginx[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

[emerg]: still could not bind()

  nginx already running.

原因是对80端口重复绑定,在配置中把ipv6的80端口绑定注释掉以后就好了(http://bbs.archlinuxcn.org/viewtopic.php?id=420)
三、编译安装YAF
1.下载yaf源码,这里下载的是2.3.3版本(yaf-2.3.3.tgz)
http://pecl.php.net/package/yaf
这里有两个坑,
最开始是用3.0.4版本编译的,但是3.0.4需要PHP7的支持,所以就歇菜了
用2.2.9版本编译出错,上网查了下yaf作者建议直接用2.3.3版本,于是换2.3.3版本就直接成功了,囧
2.给PHP添加动态扩展
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
3.在上面所提到的php.ini文件中加入
extension=yaf.so
4.重启PHP-FPM
至此,基本环境搭建结束,然后就可以按照http://www.laruence.com/manual/中所述写一个hello world了~  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-427070-1-1.html 上篇帖子: Keepalived+Nginx+Tomcat配置高可用负载均衡系统示例 下篇帖子: Nginx使用教程(六):使用Nginx缓存之FastCGI缓存
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表