linux php+tidy的安装过程
?
?今天杯具了,拿到一台只有apache+tomcat的机器,要安装php+tidy扩展+memcache,因为之前也安装过,但是从未记录过,所以今天记录一下
?
memcache之前安装过,并用随笔的方式记录下来了,所以这里也不做记录了
?
rpm 包搜索网站
?
①、RedHat AS4 & CentOS 4
http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/
http://mirrors.163.com/centos/4/os/x86_64/CentOS/RPMS/
②、RedHat AS5 & CentOS 5
http://mirrors.163.com/centos/5/os/i386/CentOS/
http://mirrors.163.com/centos/5/os/x86_64/CentOS/
③、RPM包搜索网站
http://rpm.pbone.net/
http://www.rpmfind.net/
?
首先去http://www.php.net寻找安装包,这里我们寻找.tar.gz的二进制包包吧,
?
一番查找,找到了:
点击downloads,

?
如下图所示的our releases page链接

?
我想用php5.2.5
?
我们选择的安装目录是/usr/local/webserver/php/
?
下载地址是:wget http://museum.php.net/php5/php-5.2.5.tar.gz
?
下载其它包
wget http://php-fpm.org/downloads/php-5.2.5-fpm-0.5.7.diff.gz
wgethttp://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0
wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0
wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0
wget?
编译安装PHP 5.2.14所需的支持库:
?
tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1/
./configure --prefix=/usr/local
make
make install
cd ../
tar zxvf libmcrypt-2.5.8.tar.gz编译安装PHP(FastCGI模式)
?
tar zxvf php-5.2.5.tar.gz
gzip -cd php-5.2.5-fpm-0.5.7.diff.gz | patch -d php-5.2.5 -p1
cd php-5.2.5/
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/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
make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-dist /usr/local/webserver/php/etc/php.ini
cd ../
?
?
编译安装PHP5扩展模块
?
tidy??? Release 1.2 for?PHP Version: PHP 4.3.0 or newer
这里有?http://pecl.php.net/package/tidy
wget http://pecl.php.net/get/tidy-1.2.tgz
?
memcache
?
这里有
http://pecl.php.net/package/memcache
?wget http://pecl.php.net/get/memcache-2.2.5.tgz
?
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make && make install
cd ../
?
tar -xvzfcd tidy-1.2
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make && make install
cd ../
修改php.ini文件
手工修改:查找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./"
修改为extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"
并在此行后增加以下几行,然后保存:
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "imagick.so"
再查找output_buffering = Off
修改为output_buffering = On
再查找; cgi.fix_pathinfo=0
修改为cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞。
自动修改:若嫌手工修改麻烦,可执行以下shell命令,自动完成对php.ini文件的修改:
sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "pdo_mysql.so"\nextension = "imagick.so"\n#' /usr/local/webserver/php/etc/php.ini
sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/webserver/php/etc/php.ini
sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /usr/local/webserver/php/etc/php.ini
sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /usr/local/webserver/php/etc/php.ini
创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):
在/usr/local/webserver/php/etc/目录中创建php-fpm.conf文件:
rm -f /usr/local/webserver/php/etc/php-fpm.conf
vi /usr/local/webserver/php/etc/php-fpm.conf
输入以下内容(如果您安装 Nginx + PHP 用于程序调试,请将以下的<value name="display_errors">0</value>改为<value name="display_errors">1</value>,以便显示PHP错误信息,否则,Nginx 会报状态为500的空白错误页):
<configuration>
??All relative paths in this config are relative to php's install prefix
??<section name="global_options">
????Pid file
????<value name="pid_file">/usr/local/webserver/php/logs/php-fpm.pid</value>
????Error log file
????<value name="error_log">/usr/local/webserver/php/logs/php-fpm.log</value>
????Log level
????<value name="log_level">notice</value>
????When this amount of php processes exited with SIGSEGV or SIGBUS ...
????<value name="emergency_restart_threshold">10</value>
????... in a less than this interval of time, a graceful restart will be initiated.
????Useful to work around accidental curruptions in accelerator's shared memory.
????<value name="emergency_restart_interval">1m</value>
????Time limit on waiting child's reaction on signals from master
????<value name="process_control_timeout">5s</value>
????Set to 'no' to debug fpm
????<value name="daemonize">yes</value>
??</section>
??<workers>
????<section name="pool">
??????Name of pool. Used in logs and stats.
??????<value name="name">default</value>
??????Address to accept fastcgi requests on.
??????Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
??????<value name="listen_address">127.0.0.1:9000</value>
??????<value name="listen_options">
????????Set listen(2) backlog
????????<value name="backlog">-1</value>
????????Set permissions for unix socket, if one used.
????????In Linux read/write permissions must be set in order to allow connections from web server.
????????Many BSD-derrived systems allow connections regardless of permissions.
????????<value name="owner"></value>
????????<value name="group"></value>
????????<value name="mode">0666</value>
??????</value>
??????Additional php.ini defines, specific to this pool of workers.
??????<value name="php_defines">
????????<value name="sendmail_path">/usr/sbin/sendmail -t -i</value>
????????<value name="display_errors">0</value>
??????</value>
??????Unix user of processes
??????<value name="user">www</value>
??????Unix group of processes
??????<value name="group">www</value>
??????Process manager settings
??????<value name="pm">
????????Sets style of controling worker process count.
????????Valid values are 'static' and 'apache-like'
????????<value name="style">static</value>
????????Sets the limit on the number of simultaneous requests that will be served.
????????Equivalent to Apache MaxClients directive.
????????Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
????????Used with any pm_style.
????????<value name="max_children">128</value>
????????Settings group for 'apache-like' pm style
????????<value name="apache_like">
??????????Sets the number of server processes created on startup.
??????????Used only when 'apache-like' pm_style is selected
??????????<value name="StartServers">20</value>
??????????Sets the desired minimum number of idle server processes.
??????????Used only when 'apache-like' pm_style is selected
??????????<value name="MinSpareServers">5</value>
??????????Sets the desired maximum number of idle server processes.
??????????Used only when 'apache-like' pm_style is selected
??????????<value name="MaxSpareServers">35</value>
????????</value>
??????</value>
??????The timeout (in seconds) for serving a single request after which the worker process will be terminated
??????Should be used when 'max_execution_time' ini option does not stop script execution for some reason
??????'0s' means 'off'
??????<value name="request_terminate_timeout">0s</value>
??????The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
??????'0s' means 'off'
??????<value name="request_slowlog_timeout">0s</value>
??????The log file for slow requests
??????<value name="slowlog">logs/slow.log</value>
??????Set open file desc rlimit
??????<value name="rlimit_files">65535</value>
??????Set max core size rlimit
??????<value name="rlimit_core">0</value>
??????Chroot to this directory at the start, absolute path
??????<value name="chroot"></value>
??????Chdir to this directory at the start, absolute path
??????<value name="chdir"></value>
??????Redirect workers' stdout and stderr into main error log.
??????If not set, they will be redirected to /dev/null, according to FastCGI specs
??????<value name="catch_workers_output">yes</value>
??????How much requests each process should execute before respawn.
??????Useful to work around memory leaks in 3rd party libraries.
??????For endless request processing please specify 0
??????Equivalent to PHP_FCGI_MAX_REQUESTS
??????<value name="max_requests">1024</value>
??????Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
??????Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
??????Makes sense only with AF_INET listening socket.
??????<value name="allowed_clients">127.0.0.1</value>
??????Pass environment variables like LD_LIBRARY_PATH
??????All $VARIABLEs are taken from current environment
??????<value name="environment">
????????<value name="HOSTNAME">$HOSTNAME</value>
????????<value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
????????<value name="TMP">/tmp</value>
????????<value name="TMPDIR">/tmp</value>
????????<value name="TEMP">/tmp</value>
????????<value name="OSTYPE">$OSTYPE</value>
????????<value name="MACHTYPE">$MACHTYPE</value>
????????<value name="MALLOC_CHECK_">2</value>
??????</value>
????</section>
??</workers>
</configuration>
9、启动php-cgi进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www:
ulimit -SHn 65535/usr/local/webserver/php/sbin/php-fpm start
注:/usr/local/webserver/php/sbin/php-fpm还有其他参数,包括:start|stop|quit|restart|reload|logrotate,修改php.ini后不重启php-cgi,重新加载配置文件使用reload。
?
?
?
?
?
?
?
?
?
?
?
?
?
?