CentOS 6.5編譯安裝PHP 5.4.25

apache的安裝參考

http://fengwan.blog.51cto.com/508652/1360429

MySQL的安裝參考

http://fengwan.blog.51cto.com/508652/1363566

一.環境準備

apache的安裝路徑爲/webserver/httpd

MySQL的安裝路徑爲/webserver/mysql

1.依賴包的安裝

[root@WebServer ~]# yum install -y gd-devel ncurses-devel libxml2-devel bzip2-devel libcurl-devel curl-devel libjpeg-devel libpng-devel freetype-devel net-snmp-devel

2.PHP支持庫的安裝

用到的軟件有

eaccelerator-eaccelerator-42067ac.tar.gz
ImageMagick.tar.gz
imagick-3.1.2.tgz
libevent-2.0.21-stable.tar.gz
libiconv-1.14.tar.gz

libmcrypt-2.5.8.tar.gz
mcrypt-2.6.8.tar.gz
memcache-2.2.7.tgz
memcached-1.4.17.tar.gz
mhash-0.9.9.9.tar.gz
php-5.4.25.tar.gz

[root@WebServer ~]# tar zxvf libiconv-1.14.tar.gz
[root@WebServer ~]# cd libiconv-1.14
[root@WebServer libiconv-1.14]# ./configure --prefix=/webserver/libiconv
[root@WebServer libiconv-1.14]# make && make install
[root@WebServer libiconv-1.14]# cd ..
[root@WebServer ~]# tar zxvf libmcrypt-2.5.8.tar.gz
[root@WebServer ~]# cd libmcrypt-2.5.8
[root@WebServer libmcrypt-2.5.8]# ./configure
[root@WebServer libmcrypt-2.5.8]# make && make install
[root@WebServer libmcrypt-2.5.8]# /sbin/ldconfig
[root@WebServer libmcrypt-2.5.8]# cd libltdl/
[root@WebServer libltdl]# ./configure --enable-ltdl-install
[root@WebServer libltdl]# make && make install
[root@WebServer libltdl]# cd ../..
[root@WebServer ~]# tar zxvf mhash-0.9.9.9.tar.gz
[root@WebServer ~]# cd mhash-0.9.9.9
[root@WebServer mhash-0.9.9.9]# ./configure
[root@WebServer mhash-0.9.9.9]# make && make install
[root@WebServer mhash-0.9.9.9]# cd /usr/lib64/
[root@WebServer lib64]# ln -s /usr/local/lib/* .
[root@WebServer lib64]# ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
[root@WebServer lib64]# cd
[root@WebServer ~]# tar zxvf mcrypt-2.6.8.tar.gz
[root@WebServer ~]# cd mcrypt-2.6.8
[root@WebServer mcrypt-2.6.8]# /sbin/ldconfig
[root@WebServer mcrypt-2.6.8]# ./configure
[root@WebServer mcrypt-2.6.8]# make && make install
[root@WebServer mcrypt-2.6.8]# cd ..

二.開始編譯安裝PHP

1.解壓PHP並進入安裝目錄

[root@WebServer ~]# tar zxvf php-5.4.25.tar.gz
[root@WebServer ~]# cd php-5.4.25

2.編譯PHP

[root@WebServer php-5.4.25]# ./configure --prefix=/webserver/php --with-config-file-path=/webserver/php/etc --with-apxs2=/webserver/httpd/bin/apxs --with-mysql=/webserver/mysql/ --with-mysqli=/webserver/mysql/bin/mysql_config --with-pdo-mysql=/webserver/mysql/ --with-iconv-dir=/webserver/libiconv/ --disable-phar --with-pcre-regex --with-zlib --with-bz2 --enable-calendar --with-curl --enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-mhash --enable-mbstring --with-mcrypt --enable-pcntl --enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6 --with-gettext

另外一個版本

./configure --prefix=/usr/local/php5.5.32 --with-config-file-path=/usr/local/php5.5.32/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/libiconv1.14 --disable-phar --with-pcre-regex --with-zlib --with-bz2 --enable-calendar --with-curl --enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-mhash --enable-mbstring --with-mcrypt --enable-pcntl --enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6 --with-gettext --enable-opcache --enable-fpm --with-fpm-user=www  --with-fpm-group=www

3.安裝

[root@WebServer php-5.4.25]# make
[root@WebServer php-5.4.25]# make install

4.複製php配置文件

[root@WebServer php-5.4.25]# cp php.ini-production /webserver/php/etc/php.ini

三.編譯安裝PHP的擴展模塊

1.安裝memcache

[root@WebServer ~]# tar zxvf memcache-2.2.7.tgz
[root@WebServer ~]# cd memcache-2.2.7
[root@WebServer memcache-2.2.7]# /webserver/php/bin/phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
[root@WebServer memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/webserver/php/bin/php-config
[root@WebServer memcache-2.2.7]# make
[root@WebServer memcache-2.2.7]# make install
Installing shared extensions:     /webserver/php/lib/php/extensions/no-debug-zts-20100525/
[root@WebServer memcache-2.2.7]# cd ..

2.安裝memcached

[root@WebServer ~]# tar zxvf libevent-2.0.21-stable.tar.gz
[root@WebServer ~]# cd libevent-2.0.21-stable
[root@WebServer libevent-2.0.21-stable]# ./configure --prefix=/webserver/libevent
[root@WebServer libevent-2.0.21-stable]# make && make install
[root@WebServer libevent-2.0.21-stable]# cd ..
[root@WebServer ~]# tar zxvf memcached-1.4.17.tar.gz
[root@WebServer ~]# cd memcached-1.4.17
[root@WebServer memcached-1.4.17]# ./configure --prefix=/webserver/memcached --with-libevent=/webserver/libevent
[root@WebServer memcached-1.4.17]# make && make install
[root@WebServer memcached-1.4.17]# cd ..
#啓動memcached,使用如下命令:
[root@WebServer ~]# /webserver/memcached/bin/memcached -d -m 512 -c 2048 -p 11211 -P /tmp/memcached.pid -u nobody

memcached啓動參數:

-p 指定端口號(默認11211)  

-U <num> UDP監聽端口 (默認: 11211, 0 時關閉) 

-s <file>     用於監聽的UNIX套接字路徑(禁用網絡支持)

-a <mask>     UNIX套接字訪問掩碼,八進制數字(默認:0700)

-m 指定最大使用內存大小(默認64MB)   

-t 線程數(默認4)

 

-l <ip_addr> 綁定地址 (默認:所有都允許,無論內外網或者本機更換IP,有安全隱患,若設置爲127.0.0.1就只能本機訪問) 

-d start 啓動memcached服務   

-d restart 重起memcached服務   

-d stop|shutdown 關閉正在運行的memcached服務   

-u <username> 綁定使用指定用於運行進程 <username>  (只有root用戶可以使用這個參數,memcached不允許使用root權限運行)

-P <file> 將PID寫入文件<file>,這樣可以使得後邊進行快速進程終止, 需要與 -d 一起使用

-m 最大內存使用,單位MB。默認64MB     

 

-M 內存耗盡時返回錯誤,而不是刪除項   

-c 最大同時連接數,默認是1024 

-f 塊大小增長因子,默認是1.25 

-n <bytes>最小分配空間,key+value+flags默認是48

-k鎖定所有內存頁。注意你可以鎖定的內存上限。


3.安裝ImageMagick

[root@WebServer ~]# tar zxvf ImageMagick.tar.gz
[root@WebServer ~]# cd ImageMagick-6.8.8-7/
[root@WebServer ImageMagick-6.8.8-7]# ./configure
[root@WebServer ImageMagick-6.8.8-7]# make && make install
[root@WebServer ImageMagick-6.8.8-7]# cd ..

4.安裝imagick

[root@WebServer ~]# tar zxvf imagick-3.1.2.tgz
[root@WebServer ~]# cd imagick-3.1.2
[root@WebServer imagick-3.1.2]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
[root@WebServer imagick-3.1.2]# /webserver/php/bin/phpize
[root@WebServer imagick-3.1.2]# ./configure --with-php-config=/webserver/php/bin/php-config
[root@WebServer imagick-3.1.2]# make
[root@WebServer imagick-3.1.2]# make install
Installing shared extensions:     /webserver/php/lib/php/extensions/no-debug-zts-20100525/
Installing header files:          /webserver/php/include/php/
[root@WebServer imagick-3.1.2]# cd ..

5.安裝eaccelerator

[root@WebServer ~]# tar zxvf eaccelerator-eaccelerator-42067ac.tar.gz
[root@WebServer ~]# cd eaccelerator-eaccelerator-42067ac
[root@WebServer eaccelerator-eaccelerator-42067ac]# /webserver/php/bin/phpize 
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
[root@WebServer eaccelerator-eaccelerator-42067ac]# ./configure --enable-eaccelerator=shared --with-php-config=/webserver/php/bin/php-config
[root@WebServer eaccelerator-eaccelerator-42067ac]# make && make install

建立eaccelerator緩存目錄以及權限更改

[root@WebServer eaccelerator-eaccelerator-42067ac]# mkdir -p /webserver/cache/eaccelerator
[root@WebServer eaccelerator-eaccelerator-42067ac]# chmod 777 /webserver/cache/eaccelerator


6.修改php配置文件

[root@WebServer php-5.4.25]# vim /webserver/php/etc/php.ini
//按shift+g鍵跳到配置文件的最末尾,加上以下配置信息:
extension_dir = "/webserver/php/lib/php/extensions/no-debug-zts-20100525/"
extension = "memcache.so"
extension = "imagick.so"
[eaccelerator]
zend_extension="/webserver/php/lib/php/extensions/no-debug-zts-20100525/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/webserver/cache/eaccelerator"
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"

7.檢查PHP模塊是否正常掛載

[root@WebServer ~]# /webserver/php/bin/php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
eAccelerator
ereg
fileinfo
filter
ftp
gd
hash
iconv
imagick
json
libxml
mbstring
mcrypt
memcache
mhash
mysql
mysqli
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
posix
Reflection
session
shmop
SimpleXML
snmp
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib
[Zend Modules]
eAccelerator

可以看到是掛載正常的

8.PHP安全性設置

a.禁用部分功能

[root@WebServer ~]# vim /webserver/php/etc/php.ini
修改這些:
cgi.fix_pathinfo=0
disable_functions=exec,system,eval,passthru,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,fsocket,fsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

b.隱藏apache版本信息

[root@WebServer ~]# vim /webserver/httpd/conf/httpd.conf
//加入如下2行
ServerTokens ProductOnly
ServerSignature Off
//重啓 apache,在 http 頭裏面只能看到:
Server: Apache

c.隱藏PHP版本信息

[root@WebServer ~]# vim /webserver/php/etc/php.ini
expose_php = On
改成
expose_php = Off
重啓apache後,php版本在http頭中隱藏了

d.將session保存到memcached中,php的設置

[root@WebServer ~]# vim /webserver/php/etc/php.ini
#修改如下信息
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

四.apache配置文件的修改

[root@WebServer ~]# vim /webserver/httpd/conf/httpd.conf
//找到如下位置添加index.php
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
//在文件末尾添加
AddType application/x-httpd-php .php .phtml
AddType application/s-httpd-php-source .phps

新建一個測試的index.php

[root@WebServer ~]# vim /webserver/httpd/htdocs/index.php
<?php
phpinfo();
?>

新建一個測試session保存到memcached的test.php

<?php
session_start();
if (!isset($_SESSION['TEST'])) {
$_SESSION['TEST'] = time();
}
$_SESSION['TEST3'] = time();
echo $_SESSION['TEST'];
echo "<br><br>";
echo $_SESSION['TEST3'];
echo "<br><br>";
echo "session_id: ".$a=session_id();
echo "<br><br>";
echo "===============================================<br><br>";
$memcache = memcache_connect('127.0.0.1', 11211) or die("memcached connected error");
echo "memcached version: ".$memcache->getVersion();
echo "<br><br>";
var_dump($memcache->get("$a"));
?>

重新啓動apache服務

[root@WebServer ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

打開網頁進行測試

wKioL1MNeSPz0z-QAADEuZendv8320.png

現在測試memcache是否安裝及配置好,測試的時候一定要刷新2次

wKioL1Pi3HmDByL_AAAfRg_8g40759.png

如果以上出現了string(37) "TEST|i:1407375446;TEST3|i:1407376026;"這個字樣說明安裝成功,否則再刷新一次頁面,如出現的依舊是bool(false),則說明php的配置出現問題,是php未加載memcache模塊(可使用/webserver/php/bin/php -m |grep memcache查看,或者session的配置出現問題)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章