linux下php源码安装(nginx服务器篇)
来源:互联网 发布:c 查询网络北京时间 编辑:程序博客网 时间:2024/05/26 08:41
安装PHP依赖:
# sudo -s
以下zend opcache安装和配置转载自:http://www.laogui.com/Zend-Opcache
大家知道目前PHP的缓存插件一般有三个:APC、eAccelerator、XCache,但未来它们可能都会消失,因为PHP 5.5已经集成Zend Opcache,功能和前三者相似但又有少许不同,缓存速度据说比它们更快(注意:只是据说,我没测试过)。
这几个PHP加速插件的主要原理都相同,就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的,像drupal这种庞大的CMS,每次打开一个页面要调用数十个PHP文件,执行数万行代码,效率可想而知,在安装APC等加速器后打开页面的速度明显加快。
Zend Opcache 已经集成在了PHP 5.5里面,编译安装PHP5.5的时候加上--enable-opcache就行了。但也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,未来会取消对5.2的支持,下面是我在PHP 5.4下的安装方法:
依次执行下面的命令
wget http://pecl.php.net/get/zendopcache-7.0.2.tgz
tar xzf zendopcache-7.0.2.tgz
cd zendopcache-7.0.2
phpize
如果找不到phpize 的话自己找PHP路径,我的在/usr/local/php/bin/phpize,下面这行也要按你的php.ini路径自行修改
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
如果显示Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/ 表示安装完成,下面要修改php的配置文件让它生效
在 php.ini 的最后面加入下面几行
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20100525/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
128意思是给它分配128M内存,
重启nginx服务器和php-fpm 管理器, 然后在nginx服务器根目录下新建test.php文件,
文件内容为:
<?php echo phpinfo(); ?>
在浏览器输入localhost/test.php 可以看到如下画面:
页面的下面可以看到的运行状态
如果嫌这个不直观可以装个PHP文件查看,地址在https://gist.github.com/ck-on/4959032,把上面的代码保存为一个php文件放到你的网站目录下面打开就可以看到:
命中率100%。
Zend Opcache因为最近才出来,现在还是测试版,相信在未来几年会越来越流行,现在真没多少人用。目前测试来看还比较稳定,我已经在 vbulletin论坛下运行了几天,不过没看出和APC、xcache有啥区别,只是最近我的APC老让apache崩溃(可能是apache和php版本太新的原因),想换个试试,毕竟Zend Opcache和APC都是php官方的,值得信赖。
# sudo -s
# LANG=C
# yum -y install gcc automake autoconflibtool make
# yum -y install gccgcc-c++glibc
# yum -y install libmcrypt-devel mhash-devel libxslt-devel \libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \krb5 krb5-devel libidn libidn-devel openssl openssl-devel
yum install -y libpng*
yum install -y libjpeg*
yum install -y libXpm*
yum install -y freetype*
yum install -y zlib*安装PHP# wget http://cn2.php.net/distributions/php-5.4.7.tar.gztar zvxf php-5.4.7.tar.gzcd php-5.4.7# ./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt \--enable-mbstring --with-curl --with-mysql --with-mysqli --enable-pdo=shared --with-pdo-mysql=shared, /usr/local/mysql \--enable-inline-optimization --with-bz2 --enable-sockets \--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \--with-mhash --enable-zip --with-pcre-regex\--with-gd --enable-gd-native-ttf --with-png-dir=/usr/lib64/ --with-zlib-dir=/lib64/ --with-ttf \
--with-jpeg-dir=/usr/lib64/ --with-freetype-dir=/usr/lib64/ --with-xpm-dir=/usr/lib64/ \
# make# make installphp配置文件(php解压包源码目录中进行复制)# cp php.ini-development /usr/local/php/lib/php.ini打开 php.ini:
vim /usr/local/php/lib/php.ini修改为如下所示:cgi.fix_pathinfo=0date.timezone = Asia/Shanghaimysql.default_socket = /tmp/mysqld.sockpdo_mysql.default_socket= /tmp/mysqld.sockmysqli.default_socket =/tmp/mysqld.sock 注意修改了php配置文件后,php-fpm进程需要重新加载配置文件或者重启一下。 /tmp/mysqld.sock是mysql启动后的sock文件路径.
如果www用户不存在,创建www用户。
[root@iZ286pkhut4Z src]# groupadd www
[root@iZ286pkhut4Z src]# useradd -g www www
创建php-fpm配置文件(php-fpm是fastcgi主进程,可以启动和管理多个php-cgi子进程)(fastcgi模型是由一个主进程和多个子进程构成,这个主进程进行管理这些子进程)
[root@iZ286pkhut4Z src]# cd /usr/local/php[root@iZ286pkhut4Z php]# cp etc/php-fpm.conf.default etc/php-fpm.conf[root@iZ286pkhut4Z php]# vi etc/php-fpm.confuser = wwwgroup = wwwlisten = 127.0.0.1:9000编辑配置文件php-fpm.conf,只需修改上述三个指令,然后保存。
把php安装目录的权限设置成www用户和用户组:
# chmod u+w /usr/local/php
# chown -R www:www /usr/local/php
php-fpm 如何关闭 重启?php-fpm 启动:[root@iZ286pkhut4Z php]# ./sbin/php-fpm[root@iZ286pkhut4Z php]# ps -ef | grep php-fpmroot 21100 1 0 13:04 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)www 21101 21100 0 13:04 ? 00:00:00 php-fpm: pool wwwwww 21102 21100 0 13:04 ? 00:00:00 php-fpm: pool wwwphp-fpm 关闭:
kill -INT 21100
php-fpm 重启:
kill -USR2 21100
php安装完毕,下面是nginx中的fast-cgi配置
--------------------------------------------------------------------------------------------------------------------------------------------
nginx安装方式,自己打开链接看看。
在nginx安装完毕后:(1) 创建一个供www.domain.com虚拟主机使用的目录:server_names_hash_bucket_size 128;[root@iZ286pkhut4Z src]# mkdir -p /data0/htdocs/www[root@iZ286pkhut4Z src]# chmod +w /data0/htdocs/www[root@iZ286pkhut4Z src]# chown -R www:www /data0/htdocs/www(2)在/data0/htdocs/www目录下安装thinkphp3.2.2框架#cd /data0/htdocs/www# wget https://github.com/liu21st/thinkphp/archive/master.zip解压缩thinkphp3.2.2# unzip thinkphp-master.zip# cd thinkphp-master解压文件全部移动到www目录下# mv * ../# cd ..删除这个空目录# rm -rf think-master更改thinkphp框架文件的user为www用户# chown -R www:www /data0/htdocs/www/*# ls Application composer.json index.php Public README.md ThinkPHP这样就安装好thinkphp框架了.(3)配置thinkphp的URL模式为1pathinfo模式# vim /data0/htdocs/www/ThinkPHP/Conf/convention.php修改URL_MODEL => 1(4)nginx配置文件修改worker_processes 2;# vim /usr/local/nginx/conf/nginx.conf
user www;
error_log logs/error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;keepalive_timeout 65;
tcp_nopush on;
tcp_nodelay on;
#fastcgi
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#gzip on;
server {
listen 80;
server_name www.domain.com domain.com;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# \.php 只处理动态请求,对于静态资源请求由下面的 location匹配和处理
location ~ \.php {
root /data0/htdocs/www;
fastcgi_pass 127.0.0.1:9000;
#包含nginx服务器传递给fastcgi程序的参数,php中通过$_SERVER['参数名']可获取
include fastcgi.conf;
#定义变量$fastcgi_script_name_new赋值为$fastcgi_script_name变量
set $path_info "";
set $fastcgi_script_name_new $fastcgi_script_name;
#判断url是否是pathinfo形式的,如果是则把这个url分割成两部分,index.php入口文件之后的pathinfo部分存入$path_info变量中,剩下的部分和$document_root根目录定位index.php入口文件在文件系统中的绝对路径 .
if ($fastcgi_script_name ~* "^(.+\.php)(/.+)$" ) {
set $fastcgi_script_name_new $1;
set $path_info $2;
}
#对fastcgi.conf中的SCRIPT_FILENAME和SCRIPT_NAME fastcgi参数进行重写,目的是指定入口文件在文件系统中的绝对路径给script_filename参数,让fastcgi知道index.php文件位置。
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name_new;
fastcgi_param SCRIPT_NAME $fastcgi_script_name_new;
#定义一个新的nginx服务器传递给fastcgi的参数PATH_INFO,thinkphp需要这个入口文件index.php后的pathinfo信息
fastcgi_param PATH_INFO $path_info;
}
# 用来匹配静态资源,如果不是静态资源就重写,然后重新轮训所有的location块,由上面的location块匹配后动态处理这个请求
location / {
root /data0/htdocs/www;
index index.php index.html index.htm;
if (!-e $request_filename){
rewrite ^(.*)$ /index.php$1 last;
}
}
}
}
上述就是nginx配置文件,
(4)在/data0/htdocs/www目录下加入404.html文件和50x.html文件,因为在nginx.conf配置文件中配置了这两个文件。
(5)启动php-fpm和nginx
# /usr/local/php/sbin/php-fpm
# /usr/local/nginx/sbin/nginx
(6)测试nginx和thinkphp是否搭配好了。
在浏览器中输入 www.domain.com, 会显示如下内容::)
欢迎使用 ThinkPHP!
[ 您现在访问的是Home模块的Index控制器 ]
(7) 让thinkphp能够连接数据库
1. 没有安装PDO扩展时,thinkphp需要这个扩展 。
PDO安装错误:configure: error: Cannot find php_pdo_driver.h.
安装pdo_mysql必须先安装pdo模块,先装pdo模块吧
下面是PHP 加速插件 Zend Opcache安装和配置
------------------------------------------------------------------
以下zend opcache安装和配置转载自:http://www.laogui.com/Zend-Opcache
大家知道目前PHP的缓存插件一般有三个:APC、eAccelerator、XCache,但未来它们可能都会消失,因为PHP 5.5已经集成Zend Opcache,功能和前三者相似但又有少许不同,缓存速度据说比它们更快(注意:只是据说,我没测试过)。
这几个PHP加速插件的主要原理都相同,就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的,像drupal这种庞大的CMS,每次打开一个页面要调用数十个PHP文件,执行数万行代码,效率可想而知,在安装APC等加速器后打开页面的速度明显加快。
Zend Opcache 已经集成在了PHP 5.5里面,编译安装PHP5.5的时候加上--enable-opcache就行了。但也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,未来会取消对5.2的支持,下面是我在PHP 5.4下的安装方法:
依次执行下面的命令
wget http://pecl.php.net/get/zendopcache-7.0.2.tgz
tar xzf zendopcache-7.0.2.tgz
cd zendopcache-7.0.2
phpize
如果找不到phpize 的话自己找PHP路径,我的在/usr/local/php/bin/phpize,下面这行也要按你的php.ini路径自行修改
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
如果显示Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/ 表示安装完成,下面要修改php的配置文件让它生效
在 php.ini 的最后面加入下面几行
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20100525/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
128意思是给它分配128M内存,
重启nginx服务器和php-fpm 管理器, 然后在nginx服务器根目录下新建test.php文件,
文件内容为:
<?php echo phpinfo(); ?>
在浏览器输入localhost/test.php 可以看到如下画面:
页面的下面可以看到的运行状态
如果嫌这个不直观可以装个PHP文件查看,地址在https://gist.github.com/ck-on/4959032,把上面的代码保存为一个php文件放到你的网站目录下面打开就可以看到:
命中率100%。
Zend Opcache因为最近才出来,现在还是测试版,相信在未来几年会越来越流行,现在真没多少人用。目前测试来看还比较稳定,我已经在 vbulletin论坛下运行了几天,不过没看出和APC、xcache有啥区别,只是最近我的APC老让apache崩溃(可能是apache和php版本太新的原因),想换个试试,毕竟Zend Opcache和APC都是php官方的,值得信赖。
0 0
- linux下php源码安装(nginx服务器篇)
- linux下php源码安装(apache服务器篇)
- Linux下源码安装Nginx服务器
- Linux下源码方式安装Nginx和PHP(FastCGI)
- linux环境下源码安装nginx,并搭建PHP 环境
- Linux下安装Nginx服务器
- Linux下安装Nginx服务器
- Linux下安装Nginx服务器
- Linux下安装Nginx服务器
- linux下 源码安装nginx
- linux下源码安装nginx
- linux下安装源码Nginx
- linux 源码包安装LNMP(linux+nginx+mysql+php)服务器环境
- LINUX下源码安装php
- [Linux]在Mac下配置Linux服务器并安装Nginx+PHP
- linux(centos)下安装nginx服务器
- Linux下Nginx服务器安装教程
- linux下PHP5.3.5+nginx源码安装
- android 清空屏幕以及ProterDuffXfermode.Mode.clear
- hdu 2101
- MySQL触发器基本操作
- C10K问题
- freescale LTIB
- linux下php源码安装(nginx服务器篇)
- hdu 2105
- 为Linux应用构造有限状态机
- 多路径软件(UltraPath)功能特点
- 元组的学习
- Oracle 初始化参数&性能视图
- 查询和停止正在运行的job
- Cocos2dx 学习(一) 内存管理机制
- Facelets UI 标签参考