1. 默认虚拟主机
1).虚拟主机(共享主机,又称虚拟服务器)是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。虚拟主机之间完全独立,并可由用户自行管理,虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。
-
一台服务器可以访问多个网站,每个网站都是一个虚拟主机
-
概念:域名(主机名)、DNS、解析域名、hosts
-
任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
[root@localhost ~]# cp /usr/local/apache2.4/conf/httpd.conf /usr/local/apache2.4/conf/httpd.conf.bak cp: overwrite ‘/usr/local/apache2.4/conf/httpd.conf.bak’? y [root@localhost ~]# vi /usr/local/apache2.4/conf/httpd.conf Include conf/extra/httpd-vhosts.conf //搜索httpd-vhost,去掉# [root@localhost ~]# cp /usr/local/apache2.4/conf/extra/httpd-vhosts.conf /usr/local/apache2.4/conf/extra/httpd-vhosts.conf.bak [root@localhost ~]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //编辑虚拟主机配置文件 <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot "/usr/local/apache2.4/docs/abc.com" ServerName abc.com ServerAlias www.abc.com www.aaa.com ErrorLog "logs/abc.com-error_log" CustomLog "logs/abc.com-access_log" common </VirtualHost> <VirtualHost *:80> DocumentRoot "/usr/local/apache2.4/docs/111.com" ServerName 111.com ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common
//ServerAdmin指定管理员邮箱,
//DocumentRoot为该虚拟主机站点的根目录,
//ServaerName为网站的域名
//ServerAlias为网站的第二域名
//ErrorLog为站点的错误日志
//CustomLog为站点的访问日志
[root@localhost ~]# cd /usr/local/apache2.4/
[root@localhost apache2.4]# mkdir docs
[root@localhost apache2.4]# cd docs/
[root@localhost docs]# mkdir abc.com
[root@localhost docs]# mkdir 111.com
[root@localhost docs]# vi abc.com/index.html
abc.com
[root@localhost docs]# vi 111.com/index.html
111.com
//创造所需的目录和文件
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
2).配置验证
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M | grep rewrite //若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module前面的#
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M | grep rewrite
rewrite_module (shared)
//查看是否安装了rewrite模块
3).验证成功
[root@localhost docs]#curl -xlocalhost:80 www.abc.com
abc.com
[root@localhost docs]#curl -xlocalhost:80 www.aaa.com
abc.com
[root@localhost docs]#curl -xlocalhost:80 111.com
111.com
4).遇到的问题
[root@localhost docs]# /usr/local/apache2.4/bin/apachectl -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
解决方法:
[root@localhost ~]# vi /usr/local/apache2.4/conf/httpd.conf
ServerName localhost:80 //添加,重新加载
2. 用户认证
用户认证用来对某些目录中的网页进行访问控制,当用户访问这些页面的时候需要输入用户名和密码进行认证。
1).配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/abc.com"
ServerName abc.com
ServerAlias www.abc.com www.aaa.com
ErrorLog "logs/abc.com-error_log"
CustomLog "logs/abc.com-access_log" common
<Directory /usr/local/apache2.4/docs/abc.com> //指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "abc.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic
AuthUserFile /usr/local/apache2.4/docs/.htpasswd //指定密码文>件所在位置
require valid-user //指定需要认证的用户为全部可用用户
</Directory>
</VirtualHost>
#<VirtualHost *:80>
# DocumentRoot "/usr/local/apache2.4/docs/111.com"
# ServerName 111.com
# ErrorLog "logs/111.com-error_log"
# CustomLog "logs/111.com-access_log" common
#</VirtualHost>
httpd的用户认证
- 还可以针对单个文件进行认证
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/abc.com"
ServerName abc.com
ServerAlias www.abc.com www.aaa.com
ErrorLog "logs/abc.com-error_log"
CustomLog "logs/abc.com-access_log" common
#单个文件认证
<FilesMatch admin.php>
AllowOverride AuthConfig
AuthName "abc.com user auth"
AuthType Basic
AuthUserFile /usr/local/apache2.4/docs/.htpasswd
require valid-user
</FilesMatch>
</VirtualHost>
重新加载配置-t,graceful
[root@localhost docs]# /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd zl
New password: 000000
Re-type new password:000000
Adding password for user lamp
//htpasswd为创建用户的工具,-c为creat
//-m为指定密码加密的方式为MD5
//data/.htpasswd为密码文件,
//zl为创建的用户。第一次执行需加-c
//第二次不用加,否则密码文件会重置
2).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
3).验证成功
绑定hosts,浏览器测试
# curl -xlocalhost:80 abc.com -I //状态码为401
# curl -xlocalhost:80 -u zl:123456 abc.com -I //状态码为200
3. 域名跳转
当我们变更网站域名或者申多个域名指向一个网站的时候,这个时候我们就会用到域名跳转。
1).配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/abc.com-error_log"
CustomLog "logs/abc.com-access_log" common
#域名跳转
<IfModule mod_rewrite.c> //需要mod_rewrite模块支持
RewriteEngine on //打开rewrite功能
RewriteCond %{HTTP_HOST} !^111.com$ //定义rewrite的条件,主机名(域名)不是www.123.com满足条件
RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] //定义rewrite规则,当满足上面的条件时,这条规则才会执行
</IfModule>
</VirtualHost>
2).配置验证
[root@localhost ~]# mkdir -p /usr/local/apache2.4/docs/www.111.com
[root@localhost ~]# cd /usr/local/apache2.4/docs/www.111.com
[root@localhost www.111.com]# vi index.html
<?php
echo "www.111.com/123.php";
?>
重新加载配置-t , graceful:
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
3).验证成功
# curl -xlocalhost:80 -I 2111.com.cn //状态码为301,完成跳转
# curl -xlocalhost:80 -I 2.com.cn/admin.php //状态码为301,完成跳转
4. 访问日志
访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题。
[root@localhost docs]#vi /usr/local/apache2.4/conf/httpd.conf //搜索LogFormat
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common //默认是common
1).配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/abc.com-error_log"
#访问日志
CustomLog "logs/abc.com-access_log" combined
#域名跳转
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^111.com$
RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
</IfModule>
2).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
3).验证成功
# curl -xlocalhost:80 -I 2111.com.cn/admin.php
# tail /usr/local/apache2.4/logs/123.com-access_log
5. 访问日记不记录静态文件
1).配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
#访问日志不记录指定类型的文件
<IfModule mod rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.111.com$
RewriteRule ^/(.*)$ http://www.111.com/$1 [R=301,L]
</IfModule>
SetEnvIf Request_URI ".*\.gif$" img
SetEnvIf Request_URI ".*\.jpg$" img
SetEnvIf Request_URI ".*\.png$" img
SetEnvIf Request_URI ".*\.bmp$" img
SetEnvIf Request_URI ".*\.swf$" img
SetEnvIf Request_URI ".*\.js$" img
SetEnvIf Request_URI ".*\.css$" img
CustomLog "logs/111.com-access_log" combined env=!img
</VirtualHost>
//先定义了一个image-request环境变量,把gif,jpg,png, bmp,swf,js,css等格式文件全归类到此
2).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
3).验证成功
# curl -xlocalhost:80 -I www.111.com/images/liunx.jpg //301
# tail /usr/local/apache2.4/logs/abc.com-access_log
6. 访问日记切割
1).配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
#访问日志切割
<IfModule mod rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.111.com$
RewriteRule ^/(.*)$ http://www.111.com/$1 [R=301,L]
</IfModule>
SetEnvIf Request_URI ".*\.gif$" img
SetEnvIf Request_URI ".*\.jpg$" img
SetEnvIf Request_URI ".*\.png$" img
SetEnvIf Request_URI ".*\.bmp$" img
SetEnvIf Request_URI ".*\.swf$" img
SetEnvIf Request_URI ".*\.js$" img
SetEnvIf Request_URI ".*\.css$" img
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/www.111.com-access_%Y%m%d.log 86400" combined env=!img
</VirtualHost>
2).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
3).验证成功
# ls /usr/local/apache2.4/logs
7. 静态元素过期时间
那到底能缓存多久呢?如果服务器上的某个图片更改了,那么应该访问新的图片才对。这就涉及一个静态文件缓存时长的问题,也叫作“缓存过期时间”。在httpd的配置文件中,我们是可以控制这个时间的。
1).配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
#配置静态元素过渡时间
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
</VirtualHost>
//这里gif,jpeg, png格式的文件过期时长为1天,css. js. flash格式的文件过期时长为2小时
2).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
检查httpd是否加载expires模块:
[root@localhost images]# /usr/local/apache2.4/bin/apachectl -M |grep -i expires
expires_module (shared)
3).验证成功
#curl -xlocalhost:80 -I www.111.com/images/linux.jpg -I //200
//max-age=86400说明将缓存86400秒,max-age=0说明没有该类型缓存文件
8. 配置防盗链
防盗链,通俗讲,就是不让别人盗用你网站上的资源。这个资源,通常指的是图片、视频、歌曲、文档等。
1).配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
#配置防盗链
<Directory /usr/local/apache2.4/docs/www.111.com>
SetEnvIfNoCase Referer "http://www.111.com" local_ref
SetEnvIfNoCase Referer "http://111.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
</Directory>
</VirtualHost>
//首先定义允许访问链接的referer,其中^$为空referer
//当直接在浏览器里输入图片地址去访问它时,它的referer就为空
2).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
3).验证成功
# curl -e "http://www.douxue.com/123.php" -xlocalhost:80 www.111.com/images/linux.jpg -I //自定义referer 回显403
# curl -e "http://www.111.com/123.php" -xlocalhost:80 www.111.com/images/linux.jpg -I //自定义referer 回显200
# curl -xlocalhost:80 www.111.com/images/linux.jpg -I //自定义referer 回显200
9. 访问控制-Diretory\FileMatch
访问控制限制白名单IP,针对文件和目录
1).目录配置
# curl -x192.168.10.24:80 www.111.com/images/linux.jpg -I
# curl -x127.0.0.1:80 www.111.com/images/linux.jpg -I
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
#访问控制
<Directory /usr/local/apache2.4/docs/www.111.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
</VirtualHost>
//Directory是用来指定限制访问的目录,order定义控制顺序
2).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
# cd /usr/local/apache2.4/docs/www.111.com/
# mkdir admin
# cp 123.php admin/
3).验证成功
# curl -x172.16.51.29:80 www.111.com/admin/123.php -I//curl测试状态码为403则被限制访问了
# curl -x127.0.0.1:80 www.111.com/admin/123.php -I
4).针对文件配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
#访问控制FilesMatch
<Directory /usr/local/apache2.4/docs/www.111.com>
<FilesMatch admin.php(.*)>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
</VirtualHost>
5).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
6).验证成功
# curl -x127.0.0.1:80 www.111.com/admin/123.php -I //404
# curl -x127.0.0.1:80 www.111.com/admin.php -I //200
# curl -x127.0.0.1:80 www.111.com/admin.phpdjkhdk -I //200
# curl -x172.16.51.29:80 www.111.com/admin.php/djkhdk -I //403
# curl -x172.16.51.29:80 www.111.com/admin/123.php -I //200
10. 访问控制-禁止解析PHP
对于使用PHP语言编写的网站,有一些目录是有需求上传文件的。如果网站代码有漏洞,让黑客上传了一个用PHP写的木马,由于网站可以执行PHP程序,最终会让黑客拿到服务器权限。
为了避免这种情况发生,我们需要把能上传文件的目录直接禁止解析PHP代码。
1).配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
#访问控制:禁止php解析
<Directory /usr/local/apache2.4/docs/www.111.com/upload>
php_admin_flag engine off
</Directory>
</Directory>
</VirtualHost>
2).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
3).验证成功
# curl -x172.16.51.29:80 www.111.com/upload/123.php -I
curl测试时直接返回了php源代码,并未解析
11. 访问控制-user_agent
user_agent是指用户浏览器端的信息。比如你是用IE的还是Firefox浏览器的。有些网站会根据这个来调整打开网站的类型,如是手机的就打开wap,显示非手机的就打开PC常规页面。
1).配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
ErrorLog "logs/111.com-error_log"
#访问控制:user_agent
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F]
</IfModule>
</VirtualHost>
//%{HTTP_USER_AGENT}为user_agent的内置变量,NC代表“不区分大小写”,F代表Forbidden,OR表示“或者”
2).配置验证
重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
3)验证成功
# curl -x172.16.51.29:80 www.111.com/upload/123.php //403
配置文件中:
RewriteCond %{HTTP_USER_AGENT} .curl. [NC,OR]//如果把curl改成Mozilla则curl可访问,浏览器不能访问
curl -A “123123” 指定user_agent:
# curl -A “yy” -x172.16.51.29:80 www.111.com/upload/123.php //可访问
11.PHP基础配置
1).移动目录
[root@localhost ~]# cp /usr/local/src/php-5.6.30/php.ini- production /usr/local/php/etc/
[root@localhost ~]# mv /usr/local/php/etc/php.ini-production /usr/local/php/etc/php.ini
mv: overwrite ‘/usr/local/php/etc/php.ini’? y
[root@localhost ~]# cd /usr/local/apache2.4/docs/www.111.com/
[root@localhost www.111.com]# vi
images/ index.html upload/
[root@localhost www.111.com]# vi 123.php
<?
phpinfo();
?>
[root@localhost www.111.com]# /usr/local/apache2.4/bin/apachectl graceful
2).查看配置文件位置
[root@localhost www.111.com]# /usr/local/php/bin/php -i|grep -i "loaded configuration file"
Loaded Configuration File => /usr/local/php/etc/php.ini
PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0
3).更改配置文件
# vi /usr/local/php/etc/php.ini
搜索disable_functions
disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,1eak,popepassthru,stream_socket_server,popen,proc_open,proc_close
定义date.timezone,减少警告
date.timezone = Asia/Shanghai
12.日志相关配置
# vi /usr/local/php/etc/php. ini // 配置error_log
//记录错误日志:搜索log_errors
log_errors=On
//记录错误日志目录位置:搜索error_log
error_log = /tmp/php_errors.log
//记录错误日志级别:搜索error_reporting
error_reporting = E ALL & ~E_ NOTICE
//搜索display_errors
display_errors = Off
//配置完php.ini,可以额外配置
# touch /tmp/php_errors.log;chmod 777 /tmp/php_errors.log
# /usr/local/apache2.4/bin/apachectl graceful
演示:
[root@localhost www.111.com]# vi 123.php
<?php
echo 111;
?>
浏览器访问:www.111.com/123.php
显示错误日志:
# cat /var/1og/php/php_errors.log
13.配置open_basedir
1).设置open_basedir
# vi /usr/local/php/etc/php.ini
搜索open_basedir
open_ basedir = /usr/local/apache2.4/docs/www.111.com/admin:/tmp
因为限制了PHP只能在/tmp和/usr/local/apache2.4/docs/www.111.com/admin两个目录下面活动
# /usr/1ocal/apache2.4/bin/ apachectl graceful
浏览器访问:www.11.com/admin/123.php //访问正常
浏览器访问:www.11.com/upload/123.php //访问错误,错误码500
14.虚拟主机配置open_basedir
1).配置open_basedir
#vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2.4/docs/www.111.com"
ServerName www.111.com
ServerAlias 111.com
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined
php_admin_value open_basedir "/usr/local/apache2.4/docs/www.111.com/upload:/tmp/"
</VirtualHost>
重新加载配置-t , graceful
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
//起作用的是php_admin_value,它定义了php.ini的参数
# curl -xlocalhost:80 www.111.com/admin/123.php -I
//回显500
15.PHP动态扩展模块
1).查看PHP加载了哪些模块
# /usr/local/php/bin/php -m
2).安装一个redis模块
#cd /usr/local/src
#wget http://pecl.php.net/get/redis-2.2.5.tgz
3).下载redis
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://pecl.php.net/get/redis-2.2.5.tgz
[root@localhost src]# ls
apr-1.6.5 mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
apr-1.6.5.tar.gz php-5.6.30
apr-util-1.6.1 php-5.6.30.tar.gz
apr-util-1.6.1.tar.gz php-7.1.6.tar.bz2
httpd-2.4.46 redis-2.2.5.tgz
httpd-2.4.46.tar.gz
解压:# tar -zxvf redis-2.2.5.tgz
4).编译redis
[root@localhost src]# cd redis-2.2.5
[root@localhost redis-2.2.5]# ls
arrays.markdown CREDITS redis_array.c redis_session.c
common.h library.c redis_array.h redis_session.h
config.m4 library.h redis_array_impl.c
config.w32 php_redis.h redis_array_impl.h
COPYING README.markdown redis.c
[root@localhost redis-2.2.5]# /usr/local/php/bin/phpize
[root@localhost redis-2.2.5]# ./configure --with-php- config=/usr/local/php/bin/php-config
[root@localhost redis-2.2.5]# make
[root@localhost redis-2.2.5]# make install
16.扩展模块
1).查看扩展模块存放目录
[root@localhost redis-2.2.5]# /usr/local/php/bin/php -i |grep extension_dir
extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226
sqlite3.extension_dir => no value => no value
2).查看是否有redis.so
make install时编译好的就会放在这个目录里
[root@localhost redis-2.2.5]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
opcache.so redis.so
增加一行配置
[root@localhost redis-2.2.5]# vi /usr/local/php/etc/php.ini //可以放到文件最后一行
extension = redis.so
3).重新加载配置-t , graceful
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
4).查看是否加载了redis模块
[root@localhost redis-2.2.5]# /usr/local/php/bin/php -m | grep redis
redis