LAMP环境搭建(二)

6、httpd配置:

1.默认虚拟主机:

 (1)虚拟主机:虚拟主机(共享主机,又称虚拟服务器)是一种在单一主机或主机 群上,实现多网域服务的方法,可以运行多个网站或服务的技术。

 (2)配置:

    # vim /usr/local/apache2.4/conf/httpd.conf  //httpd.conf这个文件是httpd服务的的主配置文件,找到httpd-vhost这行并把行首的#号删掉。

   # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf  

  //这个配置文件是虚拟主机的配置文件。

将配置文件改成如下图所示:

 LAMP环境搭建(二)

  #mkdir -p /data/wwwroot/aming.com /data/wwwroot/www.123.com

  #echo“aming.com”> /data/wwwroot/aming.com/index.html

  //网站默认的主页就是 index.html

  #echo“123.com”> /data/wwwroot/www.123.com/index.html

  #/usr/local/apache2.4/bin/apachectl -t

  #/usr/local/apache2.4/bin/apachectl graceful //这个操作是重新加载 httpd服务,避免重启。

  #curl -x127.0.0.1:80 www.abc.com

 

2.用户认证:

(1)先对123.com做一个全站的用户认证:

  # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com虚拟主机编译成如下图一样的内容:

 LAMP环境搭建(二)

 

创建密码文件:

  # /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming

  //htpasswd命令为创建用户的工具,-c为创建,-m为密码加密方式为MD5,/data/.htpasswd为密码文件,aming为要创建的用户,第一次执行命令需要加-c,第二次再创建新用户时则不用,否则/data/.htpasswd文件会被重置,之前的用户将会被清空。

  # /usr/local/apache2.4/bin/apachectl -t

  //没有问题后才能重启

  #/usr/local/apache2.4/bin/apachectl graceful

  配置完成后需要在Windows上修改一下hosts文件,在最下面加一行

  #192.168.200.10 www.123.com

  //这里的IP地址为你虚拟机的IP地址。

保存hosts文件后就可以访问www.123.com了,效果如下图:

 LAMP环境搭建(二)

 

3.配置域名跳转:

(1)修改配置文件:

  #  vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

 LAMP环境搭建(二)

 

 

 

 

(2)查看httpd是否加载改模块:

  #/usr/local/apache2.4/bin/apachectl -M|grep -i rewrite

  #vim /usr/local/apache2.4/conf/httpd.conf //搜索rewrite,找到那行并把前面的#删除。

  #/usr/local/apache2.4/bin/apachectl graceful

  #/usr/local/apache2.4/bin/apachectl -M|grep -i rewrite

  rewrite_module(shared) //有这一行输出,说明正常加载rewrite板块

(3)测试:

 LAMP环境搭建(二)

 

4.配置访问日志:

(1)编辑主配置文件:

  # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

 LAMP环境搭建(二)

改成如上图一样,保存。

 

(2)测试语法并重新加载配置:

  #/usr/local/apache2.4/bin/apachectl -t

  # /usr/local/apache2.4/bin/apachectl graceful

  #curl -x127.0.0.1:80 -I 123.com

  # tail /usr/local/apache2.4/logs/123.com-access_log

 LAMP环境搭建(二)

如上图所示,系统中生成了日志,并且有相关的日志记录。

 

(3)配置日志文件:

  防止日志文件过大,限制一些静态元素,并把日志文件按天归档,一天一个日志,配置如下图:

 LAMP环境搭建(二)

 LAMP环境搭建(二)

可以看到123.com-access_20201119.log 日志中只有aming.txt请求日志,但没有aming.jpg的请求日志,去除了静态元素,这样日志文件就会瘦身很多。

 

5.配置静态元素过期时间:

  一个静态文件缓存时长的问题,叫作缓存过期时间。

(1)编辑主机配置文件:

  #vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

加入以下内容:

 <IfModule mod_ expires.c>

        ExpiresActive on

        ExpiresByType image/gif "access plus 1 days“ //过期时间为1天

        ExpiresByType image/jpeg "access plus 24 hours"

        ExpiresByType image/png "access plus 24 hours'

        ExpiresByType text/css "now plus 2 hour" //过期时间为2小时

        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" //过期时间为0分钟,也就是不缓存

 </IfModule>

 LAMP环境搭建(二)

 

(2)测试

LAMP环境搭建(二)

可以看到max-age=86400,这说明jpg的图片将缓存86400秒,

也就是一天,我们也可以看到txt文件,max-age=0,说明没有缓存该类型的文件。

 

6.配置防盗链:

(1)编辑虚拟主机配置文件:

 LAMP环境搭建(二)

修改成如上图所示。

 

(2)测试:

  # /usr/local/apache2.4/bin/apachectl -t

  #/usr/local/apache2.4/bin/apachectl graceful

 LAMP环境搭建(二)

 

7.访问控制:

(1)定义:除了用户认证限制,还可以通过限制IP和限制user_agent,限制IP指的是限制访问网站的来源IP,而限制user_agent,通常用来限制恶意或者不正当的请求。

(2)限制IP:

  # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

 写入以下内容:

<Directory /data/wwwroot/www.123.com/admin/>

        Order deny,allow

        Deny from all

        Allow from 127.0.0.1

    </Directory>

  #/usr/local/apache2.4/bin/apachectl -t

  #/usr/local/apache2.4/bin/apachectl graceful

  #mkdir /data/wwwroot/www.123.com/admin/

  //创建admin目录,模拟网站后台

  #echo "admin" > /data/wwwroot/www.123.com/admin/index.html

在后台目录下创建文件,并写入内容。

  # > /usr/local/apache2.4/logs/123.com-access_20201120.log

  //清空当天访问日志

  #curl -x192.168.200.10:80 -I www.123.com/admin/index.html

  # curl -x127.0.0.1:80 -I www.123.com/admin/index.html

  # cat /usr/local/apache2.4/logs/123.com-access_20201120.log

  //查看当天日志,这里的日期随着虚拟机的时间改变。

验证成功:

 LAMP环境搭建(二)

 

 

 LAMP环境搭建(二)

 

 

 

(3)对某个文件进行限制:

   #vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

写入以下内容:

<Directory /data/wwwroot/testdomain.com/admin/>

     <Filesmatch "admin.php(.*)">

         Order deny,allow

         Deny from all

         Allow from 127.0.0.1

     </Filesmatch>

    </Directory>

验证:

   #touch /data/wwwroot/www.123.com/admin/admin.php 

  # curl -x192.168.200.10:80 www.123.com/admin/admin.php-I

  #curl -x127.0.0.1:80 www.123.com/admin/admin.php-I 

验证成功:

 LAMP环境搭建(二)

 

 

 

(4)禁止解析PHP代码:

  #vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

加入以下内容:

 <Directory /data/wwwroot/testdomain.com/upload>

         php_admin_flag engine off

    </Directory>

  #/usr/local/apache2.4/bin/apachectl -t

  #/usr/local/apache2.4/bin/apachectl graceful

  #cp /usr/local/apache2.4/htdocs/1.php /data/wwwroot/www.123.com/upload

  # curl -x127.0.0.1:80 www.123.com/upload

验证成功:

 LAMP环境搭建(二)

  注:401为没有用户名密码。

 

(5)限制user_agent:

  #vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

写入以下内容:

 <IfModule mod_rewrite.c>

         RewriteEngine on

         RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]

         RewriteCond %{HTTP_USER_AGENT} .*baidu.com.*[NC]

         RewriteRule .* - [F]

    </IfModule>

  #/usr/local/apache2.4/bin/apachectl -t

  #/usr/local/apache2.4/bin/apachectl graceful

  #curl -A “123123” -I -x127.0.0.1:80 www.123.com/upload //200

  # curl -I -x127.0.0.1:80 www.123.com/upload //403

验证成功:

 LAMP环境搭建(二)

 

 

 

8.PHP配置:

(1)查看php配置文件所在位置:

  #/usr/local/php/bin/php -i |grep -i "loaded configuration file"

 LAMP环境搭建(二)

  可以看到第一行为警告信息,取消警告需要编辑php.ini这个文件,找到date.timezone设置为:date.timezone = Asia/Shanghai

再次执行将不再提示警告信息:

 LAMP环境搭建(二)

 

 

 

(2)PHP的disable_functions:

禁用一些存在安全风险的函数:

  #vim /usr/local/php/etc/php.ini

搜索disable_functions,编辑成如下:

  disable_functions=eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,pas

sthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_e

xec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symli

nk,1eak,popepassthru,stream_socket_server,popen,proc_open,proc_close

  #/usr/local/apache2.4/bin/apachectl -t  //检查错误

  #/usr/local/apache2.4/bin/apachectl graceful //重启服务

 

(3)配置error_log:

  # vim /usr/local/php/etc/php.ini

  //记录错误日志:搜索 log_errors, 改成如下

  log_errors=On

  //记录错误日志目录位置:搜索 error_log,改为

  error_log = /var/log/php/php_errors.log

  //记录错误日志级别:搜索 error_reporting 改为

  error_reporting = E_ALL & ~E_ NOTICE

  //再搜索 display_errors,改为

  display_errors = Off

  //配置完php.ini还需要做一些操作

  # mkdir /var/log/php

  # chmod 777 /var/log/php

  # /usr/local/apache2.4/bin/apachectl -t

  # /usr/local/apache2.4/bin/apachectl graceful

 

我们做一个演示:

  # vim /data/wwwroot/www.123.com/test.php //写入以下内容,如下图所示:

 LAMP环境搭建(二)

 

 

 LAMP环境搭建(二)

 

 

 

这里出现状态码500,此时需要查看日志来判断错误原因,如下图所示:

 LAMP环境搭建(二)

由日志可得知,test.php文件第三行少了分号。

 

(4)配置open_basedir:

  在php.ini中设置open_basedir:

  # vim /usr/local/php/etc/php.ini //搜索open_basedir,给成如下所示:

  open_basedir = /tmp:/data/wwwroot/www.123.com

  #/usr/local/apache2.4/bin/apachectl graceful

因为上边限制PHP只能在/tmp和/data/wwwroot/www.123.com两个目录下活动,所以我们用aming.com做演示:

 LAMP环境搭建(二)

 

 

 

给单个虚拟机设置open_basedir:

  # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

在123.com虚拟主机下面加一行:

  php_admin_value open_basedir "/data/wwwroot/testdomain.com/:/tmp/"

 

9.PHP动态扩展模块安装:

(1)查看PHP都加载了哪些模块:

  # /usr/local/php/bin/php -m

(2)安装PHP的redis扩展模块:

  # cd /usr/local/src/

  # wget http://pecl.php.net/get/redis-2.2.5.tgz

  # tar -zxvf redis-2.2.5.tgz

  #cd redis-2.2.5.tgz

  # /usr/local/php/bin/phpize //生成configure文件

  #  ./configure --with-php-config=/usr/local/php/bin/php-config

  # make

  # make install

  # /usr/local/php/bin/php -i |grep extension_dir //查看扩展模块存放目录,可以在php.ini中自定义该路径。

  # ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

  //可以看到redis.so

  #  vim /usr/local/php/etc/php.ini

  //增加一行配置:extension = redis.so

  # /usr/local/php/bin/php -m |grep redis //查看是否加载了redis模块

  #/usr/local/apache2.4/bin/apachectl graceful //重启一下服务才能使用

 

加载redis模块需编写:

 LAMP环境搭建(二)

 

上一篇:shell 脚本实现二进制安装 LAMP 架构的 wordpress


下一篇:LAMP原理介绍