Linux+nginx+MySQL+cacti网站服务器的搭建(4)

(四) 安装php

[root@demeter data]# wget -c http://cn.php.net/get/php-5.3.6.tar.bz2/from/this/mirror
[root@demeter data]# tar jxvf php-5.3.6.tar.bz2
[root@demeter data]# cd php-5.3.6
[root@demeter php-5.3.6]# ./configure

报错:

configure: error: xml2-config not found. Please check your libxml2 installation.

解决:

因为没有装libxml2-devel

[root@demeter php-5.3.6]# rpm -qa|grep libxml
libxml2-2.6.26-2.1.2.8.el5_5.1
libxml2-python-2.6.26-2.1.2.8.el5_5.1
[root@demeter php-5.3.5]# yum install libxml2-devel
[root@demeter php-5.3.6]# yum install glibc-devel
[root@demeter php-5.3.6]# yum install expat-devel
[root@demeter php-5.3.6]# yum install freetype-devel
[root@demeter php-5.3.6]# yum install libpng-devel
[root@demeter php-5.3.6]# yum install libjpeg-6b-37
[root@demeter php-5.3.6]# yum install zlib-devel
[root@demeter php-5.3.6]# yum install curl-devel
[root@demeter php-5.3.6]# yum install libjpeg-devel
[root@demeter php-5.3.6]# yum install openldap-devel
[root@demeter php-5.3.6]# yum install libmcrypt
[root@demeter php-5.3.6]# yum install libmcrypt-devel
[root@demeter php-5.3.6]# yum install libtool-ltdl
[root@demeter php-5.3.6]# cd /usr/lib
[root@localhost lib]# ln -s libltdl.so.3 libltdl.so
[root@demeter data]# wget –c http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
[root@demeter data]# tar zxvf libiconv-1.13.1.tar.gz
[root@demeter data]# cd libiconv-1.13
[root@demeter libiconv-1.13.1]# ./configure --prefix=/usr/local
[root@demeter libiconv-1.13.1]# make
[root@demeter libiconv-1.13.1]# make install

[root@demeter libiconv-1.13.1]# cd ../php-5.3.6
[root@demeter php-5.3.6]# ./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr --with-mysqli=/usr/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap
[root@demeter php-5.3.6]# make ZEND_EXTRA_LIBS='-liconv'
[root@demeter php-5.3.6]# make install

make的时候有时候会报错:

error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

解决办法如下:在/etc/ld.so.conf中加一行/usr/local/lib

[root@localhost lib]# ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

[root@demeter php-5.3.6]# cp php.ini-production /usr/local/webserver/php/etc/php.ini
 

1) 安装memcache


安装php的扩展模块memcache

[root@localhost data]# wget –c http://pecl.php.net/get/memcache-2.2.6.tgz
[root@localhost data]# tar zxvf memcache-2.2.6.tgz
[root@localhost data]# cd memcache-2.2.6
[root@demeter memcache-2.2.6]# /usr/local/webserver/php/bin/phpize
[root@demeter memcache-2.2.6]# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
[root@demeter memcache-2.2.6]# make
[root@demeter memcache-2.2.6]# make install

2) 安装eaccelerator

eaccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍。

[root@demeter data]# wget –c http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2

[root@demeter data]# tar jxvf eaccelerator-0.9.6.1.tar.bz2
[root@demeter data]# /usr/local/webserver/php/bin/phpize
[root@demeter data]# cd eaccelerator-0.9.6
[root@demeter eaccelerator-0.9.6]#
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/webserver/php/bin/php-config
[root@demeter eaccelerator-0.9.6]# make
[root@demeter eaccelerator-0.9.6]# make install

3) 安装扩展模块PDO_MYSQL

[root@demeter data]# wget -c http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
[root@demeter data]# tar zxvf PDO_MYSQL-1.0.2.tgz
[root@demeter data]# cd PDO_MYSQL-1.0.2
[root@demeter PDO_MYSQL-1.0.2]# /usr/local/webserver/php/bin/phpize
[root@demeter PDO_MYSQL-1.0.2]# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/
[root@demeter PDO_MYSQL-1.0.2]# make
[root@demeter PDO_MYSQL-1.0.2]# make install

4) 配置php及对扩展模块的支持

1. 修改php.ini文件

查找/usr/local/webserver/php/etc/php.ini中的extension_dir = “./”

修改为:

extension_dir = “/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/”

并在此行后增加以下几行,然后保存:

extension = “memcache.so”

extension = “pdo_mysql.so”

extension = “imagick.so”

#设置php扩展模块的路径及名称

output_buffering = on

#可以显示遇到的错误,提供调试错误的信息,不要把有些错误放在buffer里不显示

cgi.fix_pathinfo=0

#设置为0,从SCRIPT_FILENAME里取出真正的脚本名,当设置为1的时候会可能会出现错误,

防止Nginx文件类型错误解析漏洞。

 

2. 配置eaccelerator加速PHP

设置php支持扩展模块eaccelerator

[root@demeter eaccelerator-0.9.6]# mkdir -p /usr/local/webserver/eaccelerator_cache

[root@demeter eaccelerator-0.9.6]# vim /usr/local/webserver/php/php.ini

#在末尾加上以下代码:

[eaccelerator]
zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

3. 配置php

[root@demeter ~]# cd /usr/local/webserver/php/etc
[root@demeter etc]# cp php-fpm.conf.default php-fpm.conf
[root@demeter etc]# vim php-fpm.conf

修改:

; pm.start_servers = 20 为 pm.start_servers = 20
; pm.min_spare_servers = 5 为 pm.min_spare_servers = 5
; pm.start_servers = 20 为  pm.start_servers = 20
[root@demeter etc]# ulimit -SHn 65535
[root@demeter etc]# /usr/local/webserver/php/sbin/php-fpm

5) 修改nginx的配置文件,使得支持php

为nginx创建用户及用户组

[root@demeter ~]# groupadd www
[root@demeter ~]# useradd www -g www
[root@demeter etc]# vim /usr/local/webserver/nginx/conf/nginx.conf
user  www www;
worker_processes  8;

error_log  /usr/local/webserver/nginx/logs/error.log;
pid        /usr/local/webserver/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;
    server {
        listen       80 default_server;
        server_name  wwroot;                      #server name
        rewrite ^ http://www.domain.com$request_uri?;    #如果出现错误将跳转到这个页面
        location / {
            root /usr/local/webserver/nginx/html;        #网站的根目录
            index  index.html index.htm index.php;     #支持的主页的文件类型要加上index.php
        }

所有的root都要改为“/usr/local/webserver/nginx/html”

      location ~ .php$ {
         root          /usr/local/webserver/nginx/html;
         fastcgi_pass   192.168.15.250:9000;
         fastcgi_index  index.php;
         fastcgi_param  SCRIPT_FILENAME /usr/local/webserver/nginx/html$fastcgi_script_name;
         include        /usr/local/webserver/nginx/conf/fastcgi_params;
        }

注意:此处的fastcgi_param 值中的$document_root代表/usr/local/webserver/nginx/html,必须要写,要不然就会出错,不能辨认php脚本;

用root用户重新启动就生效了:

[salleyzhao@demeter nginx]$ ./sbin/nginx -s reload

此时即可打开测试页测试了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注