LINUX下NGINX+PHP+YAF環境搭建

本身搭建了一下NGINX+PHP+YAF的生產環境,在這裏記錄一下,避免遺忘php

yaf是一套用PHP擴展實現的PHP框架,底層用C語言實現,據yaf做者描述其效率是Zend的50-60倍,性能高而又不失開發效率。html

操做系統是CentOS release 6.5mysql

整個過程主要分爲三個部分:linux

1.編譯安裝PHPnginx

2.編譯安裝NGINXc++

3.編譯安裝YAFweb

 

1、編譯安裝PHPsql

1.下載PHP源碼,我這裏下載得版本是5.6.29(php-5.6.29.tar.gz)vim

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
 
2、編譯安裝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)
 
 
3、編譯安裝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了~
相關文章
相關標籤/搜索