CentOS 6.5编译安装PHP 5.4.25

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

apache的安装参考

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

MySQL的安装参考

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

一.环境准备

apache的安装路径为/webserver/httpd

MySQL的安装路径为/webserver/mysql

1.依赖包的安装

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[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并进入安装目录

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

2.编译PHP

1
[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

另外一个版本

1
. /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.安装

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

4.复制php配置文件

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

三.编译安装PHP的扩展模块

1.安装memcache

1
2
3
4
5
6
7
8
9
10
11
12
[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

1
2
3
4
5
6
7
8
9
10
11
12
[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

1
2
3
4
5
[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

1
2
3
4
5
6
7
8
9
10
[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

1
2
3
4
5
6
7
8
9
[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缓存目录以及权限更改

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


6.修改php配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[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模块是否正常挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[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.禁用部分功能

1
2
3
4
[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版本信息

1
2
3
4
5
6
[root@WebServer ~] # vim /webserver/httpd/conf/httpd.conf
// 加入如下2行
ServerTokens ProductOnly
ServerSignature Off
// 重启 apache,在 http 头里面只能看到:
Server: Apache

c.隐藏PHP版本信息

1
2
3
4
5
[root@WebServer ~]# vim /webserver/php/etc/php.ini
expose_php = On
改成
expose_php = Off
重启apache后,php版本在http头中隐藏了

d.将session保存到memcached中,php的设置

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

四.apache配置文件的修改

1
2
3
4
5
6
7
8
[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

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

新建一个测试session保存到memcached的test.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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服务

1
2
3
[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的配置出现问题)




本文转自 rong341233 51CTO博客,原文链接:http://blog.51cto.com/fengwan/1363709

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
344
分享
相关文章
|
11月前
|
linux centos7 安装php7.4 实测 遇到的坑
linux centos7 安装php7.4 实测 遇到的坑
413 0
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
1003 4
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
46 18
|
16天前
|
centos 编译安装 python 和 openssl
centos 编译安装 python 和 openssl
33 2
|
2月前
|
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
95 20
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
456 2
Centos 7.9如何使用源码编译安装curl最新版本
通过上述步骤,您就能在CentOS 7.9上成功地从源代码编译并安装curl的最新版本。这种方法不仅提供了灵活性,允许您定制编译选项,还确保了软件的最新功能和安全更新得到应用。
252 1
|
8月前
|
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
138 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等