ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LAMP环境搭建(二)

2020-12-03 09:04:06  阅读:267  来源: 互联网

标签:bin com 环境 LAMP usr php local apache2.4 搭建


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  

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

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

 

  #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虚拟主机编译成如下图一样的内容:

 

 

创建密码文件:

  # /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了,效果如下图:

 

 

3.配置域名跳转:

(1)修改配置文件:

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

 

 

 

 

 

(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)测试:

 

 

4.配置访问日志:

(1)编辑主配置文件:

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

 

改成如上图一样,保存。

 

(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

 

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

 

(3)配置日志文件:

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

 

 

可以看到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>

 

 

(2)测试

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

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

 

6.配置防盗链:

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

 

修改成如上图所示。

 

(2)测试:

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

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

 

 

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

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

验证成功:

 

 

 

 

 

 

 

(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 

验证成功:

 

 

 

 

(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

验证成功:

 

  注: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

验证成功:

 

 

 

 

8.PHP配置:

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

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

 

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

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

 

 

 

 

(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 //写入以下内容,如下图所示:

 

 

 

 

 

 

 

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

 

由日志可得知,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做演示:

 

 

 

 

给单个虚拟机设置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模块需编写:

 

 

标签:bin,com,环境,LAMP,usr,php,local,apache2.4,搭建
来源: https://www.cnblogs.com/tcq123/p/14077598.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有