②.LAMP环境搭建与配置

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
九、LAMP环境的搭建与部署 LAMP是一种常用的Web应用程序开发和运行环境,由Linux操作系统、Apache服务器、MySQL数据库和PHP编程语言组成。以下是LAMP环境的基本搭建步骤: 1. 安装Linux操作系统LAMP环境中,需要安装Linux操作系统,可以选择Ubuntu、CentOS等常用的Linux发行版。安装过程中需要注意分区、网络配置等参数。 2. 安装Apache服务器 Apache服务器是LAMP环境中的Web服务器,可以使用包管理器进行安装。例如在Ubuntu系统中,可以使用以下命令进行安装: ``` apt-get install apache2 ``` 3. 安装MySQL数据库 MySQL是LAMP环境中的常用数据库,可以使用包管理器进行安装。例如在Ubuntu系统中,可以使用以下命令进行安装: ``` apt-get install mysql-server ``` 在安装过程中需要设置MySQL的root用户密码和远程访问权限等参数。 4. 安装PHP编程语言 PHP是LAMP环境中的常用编程语言,可以使用包管理器进行安装。例如在Ubuntu系统中,可以使用以下命令进行安装: ``` apt-get install php ``` 安装PHP后需要进行相关的配置,例如修改php.ini配置文件、安装PHP扩展等操作。 5. 部署Web应用程序 在LAMP环境中,可以使用各种Web应用程序开发框架进行开发和部署,例如WordPress、Drupal等常用的CMS系统,或者使用自己开发的Web应用程序进行部署。 以上是LAMP环境的基本搭建与部署步骤,可以根据实际需求和应用环境进行配置和优化,以提高LAMP环境的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值