ICode9

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

LAMP环境搭建与配置

2021-03-10 11:32:45  阅读:195  来源: 互联网

标签:php com 配置 www.111 LAMP usr apache2.4 local 搭建


  • 安装LAMP,基础配置解析PHP

1. 安装MySQL
(1)下载mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
#cd /usr/local/src //软件包都放在这里,方便管理
下载源码包:mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
#wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz //在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)
(2)解压
#tar zxf //解压源码包
(3)安装配置
#useradd -s /sbin/nologin mysql //建立MySQL用户
#mkdir -p /data/mysql //创建data文件,MySQL文件在其中
#chown -R mysql:mysql /data/mysql //更改权限
#[ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_old // 有&&命令时,前面命令 执行后面命令才会执行
#mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql_old
#cd /usr/local/mysql
#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
//–user表示定义数据库的以哪个用户的身份运行
//–datadir表示定义数据库的安装目录
#yum install -y perl perl-devel autoconf //如果出现报错,需要安装软件包
#cp support-files/my-default.cnf /etc/my.cnf
#vi /etc/my.cnf //修改配置文件

#These are commonly set ,remove the #and set as required basedir = /usr/local/mysql //basedir表示MySQL包所在路径 datadir = /data/mysql/ //表示定义存放数据的位置 port = 3306 //port表示定义MySQL服务监听的端口号 server_id = 130 //表示该MySQL服务的ID号 socket = /tmp/mysql.sock //定义MySQL服务监听的套接字地址

#cp support-files/mysql.server /etc/init.d/mysql //复制启动脚本文件
#chmod 755 /etc/init.d/mysql
//修改启动脚本文件的属性
#vi /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/data/mysql
//修改启动脚本,定义basedir和datadir
#chkconfig --add mysql
//把mysql服务加到系统服务列表中
#chkconfig mysql on
//开机就启动
#service mysql start
//启动服务
(4)安装成功
#ps -ef |grep mysqld
#yum install net-tools
#netstat -ltunp |grep 3306
在这里插入图片描述

2. 安装Apache
(1)下载httpd-2.4.46.tar.gz、apr-1.6.5.tar和apr-util-1.6.1.tar

cd /usr/local/src/

#wget https://mirrors.cnnic.cn/apache/httpd/httpd-2.4.46.tar.gz
#wget http://mirrors.hust.edu.cn/apache/apr/apr-1.6.5.tar.gz
#wget http://mirrors.hust.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
(2)解压
#tar -zxvf httpd-2.4.46.tar.gz
#tar -zxvf apr-1.6.5.tar
#tar -zxvf apr-util-1.6.1.tar
(3)安装和配置
#cd /usr/local/src/apr-1.6.5
#./configure --prefix=/usr/local/apr
如果报错“configure: error: no acceptable C compiler found in $PATH”,则安装软件包 #yum install -y gcc 如果报错“rm: cannot remove 'libtoolT': No such file or directory” #vi configure 将RM='$RM'改为RM='$RM -f'

再次执行
#./configure --prefix=/usr/local/apr
继续编译
#make &&make install
#cd /usr/local/src/apr-util-1.6.1.
#yum install expat-devel
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make &&make install
继续操作
#cd /usr/local/src/httpd-2.4.46
#yum install -y pcre pcre-devel//为避免配置时出错提前安装库文件
#./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
//–perefix指定安装目录
//–enable-so表示启用DSO
//–enable -mods- shared表示以共享形式安装模块
#make && make install
如果报错“collect2: error: ld returned 1 exit status make[2]: *** [htpasswd] Error 1” 解决方案: #cd /usr/local/src/ #cp -r apr-1.6.5 /usr/local/src/httpd-2.4.46/srclib/apr #cp -r apr-util-1.6.1 /usr/local/src/httpd-2.4.46/srclib/apr-util 如果还是不行,重新执行configure命令,添加一个编译参数:--with-included-apr
再执行
#make && make install
继续操作
#/usr/local/apache2.4/bin/apachectl -M
//查看配置文件有哪些文件
//share字样的动态共享模块,static以静态形式存在
(4)安装成功

3. 安装PHP
(1)下载 php-5.6.30.tar
(2)解压
#cd /usr/local/src
#tar -zxvf php-5.6.30.tar.gz
# yum install -y libxml2-devel openssl openssl-devel bzip2 bzip2-devel libpng libpng-devel freetype freetype-devel epel-release libmcrypt-devel libjpeg-turbo libjpeg-turbo-devel #yum install -y libmcrypt-devel //为防止配置时出错提前安装库文件

#cd php-5.6.30
#yum install bzip2-devel.x86_64 -y
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
#make && make install
//编译安装
4. httpd解析PHP
(1)#vim /usr/local/apache2.4/conf/httpd.conf
编辑httpd的主配置文件。
(2)搜索ServerName,把ServerName www.example.com:80前#去掉;
(3)<Directory / >
AllowOverride none
Require all denied
< /Directory>
改成:
<Directory / >
AllowOverride none
Require all granted
< /Directory> //目的允许所有请求访问
(4)搜索AddType application/x-gzip .gz .tgz,在下面添加一行 AddType application/x-httpd-php .php;
(5)< IfModule dir_module>
DirectoryIndex index.html
< /IfModule>
改成:
< IfModule dir_module>
DirectoryIndex index.html index.php
< /IfModule>
(4)测试安装
① 测试配置文件是否正确
#/usr/local/apache2.4/bin/apachectl -t
//检验配置文件是否正确在这里插入图片描述
#/usr/local/apache2.4/bin/apachectl start
//启动httpd命令
#netstat -lnp |grep httpd
//查看是否启动
#curl localhost
在这里插入图片描述

//使用curl命令简单测试,显示了就是成功
② 测试是否正确解析PHP
#vim /usr/local/apache2.4/htdocs/1.php

<? echo “php解析正确” ?>
  //编写一个测试脚本

#curl localhost/1.php
php解析正确
//如显示此信息则PHP解析正确
(5)安装成功

  • 任务2 Apache配置

1. 默认虚拟主机

(1)虚拟主机
虚拟主机(共享主机,又称虚拟服务器)是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。虚拟主机之间完全独立,并可由用户自行管理,虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。
(2)配置

#vi /usr/local/apache2.4/conf/httpd.conf
//编辑httpd.conf搜索httpd-vhosts,去掉#号
Include conf/extra/httpd-vhosts.conf
#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 aaa.com
ErrorLog “logs/abc.com-error_log”
CustomLog “logs/abc.com-access_log” common

<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为站点的访问日志
#cd /usr/local/apache2.4/
#mkdir docs
#cd docs
#mkdir abc.com
#vi abc.com/index.html
abc.com
#mkdir 111.com
#vi 111.com/index.html
111.com
#/usr/local/apache2.4/bin/apachectl -t //检查配置文件是否有错误
#/usr/local/apache2.4/bin/apachectl graceful //graceful用于修改了配置文件后进行重新读取配置文件。
(3)配置验证
#curl -xlocalhost:80 www.abc.com
abc.com
#curl -xlocalhost:80 www.aaa.com
abc.com
#curl -xlocalhost:80 111.com
111.com
(4)验证成功
2. 用户认证
(1)介绍
用户认证用来对某些目录中的网页进行访问控制,当用户访问这些页面的时候需要输入用户名和密码进行认证

(2)配置
#vim /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 aaa.com
<Directory /usr/local/apache2.4/docs/abc.com>
AllowOverride AuthConfig
AuthName “abc.com user auth”
AuthType Basic
AuthUserFile /usr/local/apache2.4/docs/.htpasswd
require valid-user

ErrorLog “logs/abc.com-error_log”
CustomLog “logs/abc.com-access_log” common

其中

// 指定认证的目录
AllowOverride AuthConfig
// 这个相当于打开认证的开关
AuthName “testdomain.com user auth”
//自定义认证的名字,作用不大
AuthType Basic
//认证的类型,一般为Basic
AuthUserFile /data/.htpasswd
//指定密码文件所在位置
require valid-user
// 指定需要认证的用户为全部可用用户

#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
#/usr/local/apache2.4/bin/htpasswd -cm /usr/local/apache2.4/docs/.htpasswd ytl
//htpasswd为创建用户的工具,-c为create
//-m为指定密码加密的方式为MD5
.htpasswd为密码文件
ytl为创建的用户
//第二次不用加,否则密码文件会重置
#curl -xlocalhost:80 -u ytl:1 abc.com -I
3)配置验证
(配置完可在Windows上访问地址www.abc.com)
文件在C:\Windows\System32\drivers\etc\hosts
打开文件在最后一行输入:
#你的IP www.abc.com
接下来
#systemctl stop firewalld //关闭防火墙
#setenforce 0//设置selinux为Permissive(宽容模式,不会实际限制 domain/type 的存取)
然后,去浏览器访问www.abc.com会有弹窗出现。
(4)验证成功
3. 域名跳转
(1)介绍
当我们变更网站域名或者申多个域名指向一个网站的时候,这个时候我们就会用到域名跳转。
(2)配置
设置不是以111.com开头的网站都跳转到111.com上。
#vim /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
< IfModule mod_rewrite.c>//- 需要mod_ _rewrite模块
RewriteEngine on// 打开rewrite功能
RewriteCond %{HTTP_HOST} !^111.com / / 定 义 r e w r i t e 的 条 件 , 当 主 机 名 不 是 111. c o m 时 满 足 条 件 R e w r i t e R u l e / ( . ∗ ) //定义rewrite的条件,当主机名不是111.com时满足条件 RewriteRule ^/(.*) //定义rewrite的条件,当主机名不是111.com时满足条件RewriteRule/(.∗) http://111.com/$1 [R=301,L]//定义rewrite规则,RewriteRule后面分为三个部分,第一部分为当前网址
//第二部分为要跳转的网址,第三部分是选项,需要括号括起来。
< /IfModule>
ErrorLog “logs/111.com-error_log”
CustomLog “logs/111.com-access_log” common
< /VirtualHost>
创建文件
#cd /usr/local/apache2.4/docs
#mkdir www.111.com
#cd www.111.com/
#vim index.html
www.111.com
#vim 123.php

<?php echo "www.111.com/123.php" ?>

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

要实现跳转,需要rewrite模块的支持,所以查看是否安装该模块。如果没有则还需要一些配置:

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

如果不存在修改配置文件
#vi /usr/local/apache2.4/conf/httpd.conf
去掉LoadModule rewrite_module modules/mod_rewrite.so的注释
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
#/usr/local/apache2.4/bin/apachectl -M |grep rewrite

(3)配置验证
#curl -xlocalhost:80 2111.com.cn -I
//可以看见状态码301,跳转的网址是111.com
(4)验证成功a’pa
显示如下,成功跳转在这里插入图片描述4. 访问日志
(1)介绍
访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题。
(2)配置
#vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
ErrorLog “logs/111.com-error_log”
CustomLog “logs/111.com-access_log” common
(3)配置验证
#curl -xlocalhost:80 2111.com.cn -I
#tail /usr/local/apache2.4/logs/111-access_log
(4)验证成功

日志格式的介绍,可以参考 #vi /usr/local/apache2.4/conf/httpd.conf LogFormat "%h %l %u %t \"%r\" %>s %b" common 其中,%h是来源IP,%l是远端登录名, %u是远程用户名, %t是时间,%r是请求的第一行, %>s指的是最后请求的状态, %b以CLF格式显示的除HTTP头以外传送的字节数
5. 访问日志不记录静态文件
项目中的CSS、图片、js都是静态文件。一般会将静态文件放到一个单独的目录中,以方便管理。
(1)配置
#vim /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
ErrorLog “logs/111.com-error_log”
CustomLog “logs/111.com-access_log” common

上传图片文件到image中
#cd /usr/local/apache2.4/docs/www.111.com/
#mkdir image
#ll image/linux.jpg
检查配置信息
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
#curl -xlocalhost:80 www.111.com/image/linux.jpg -I

在这里插入图片描述

查看日志
#tail -f /usr/local/apache2.4/logs/111.com-access_log
打开网页访问111.com/image/linux.jpg
#vim /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
SetEnvIf Request_URI ".
.gifKaTeX parse error: Can't use function '\.' in math mode at position 45: …Request_URI ".*\̲.̲jpg" image-request
SetEnvIf Request_URI “..pngKaTeX parse error: Can't use function '\.' in math mode at position 45: …Request_URI ".*\̲.̲bmp" image-request
SetEnvIf Request_URI ".
.swfKaTeX parse error: Can't use function '\.' in math mode at position 45: …Request_URI ".*\̲.̲js” image- request
SetEnvIf Request_URI “..cssKaTeX parse error: Expected 'EOF', got '#' at position 282: …正确,没有错误重新加载服务: #̲/usr/local/apac…" image-request
SetEnvIf Request_URI ".
.jpgKaTeX parse error: Can't use function '\.' in math mode at position 45: …Request_URI ".*\̲.̲png” image-request
SetEnvIf Request_URI “..bmpKaTeX parse error: Can't use function '\.' in math mode at position 45: …Request_URI ".*\̲.̲swf" image-request
SetEnvIf Request_URI ".
.jsKaTeX parse error: Can't use function '\.' in math mode at position 46: …Request_URI ".*\̲.̲css” image- request
ErrorLog “logs/111.com-error_log”
CustomLog “|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.1og 86400” combined env=!image-request

rotatelogs为apache的日志切割工具,-l表示以当前系统时间进行切割,logs/123.com-access_%Y%m%d.1og定义了日志的切割名称,86400以天为单位,换算成秒就是86400。
保存配置后,测试配置文件是否正确,没有错误重新加载服务:
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
(2)配置验证
#curl -xlocalhost:80 www.111.com -I
在这里插入图片描述
(3)验证成功
#ll /usr/local/apache2.4/logs/
在这里插入图片描述
7. 静态元素过期时间
(1)介绍
那到底能缓存多久呢?如果服务器上的某个图片更改了,那么应该访问新的图片才对。这就涉及一个静态文件缓存时长的问题,也叫作“缓存过期时间”。在httpd的配置文件中,我们是可以控制这个时间的。
(2)配置
在httpd上我们可以控制文件过期时间,配置如下:
#vim /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
< 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 >
ErrorLog “logs/111.com-error_log”
CustomLog “logs/111.com-access_log” combined
< /VirtualHost>
//这里gif,jpeg, png格式的文件过期时长为1天,css. js. flash格式的文件过期时长为2小时
保存配置后,测试配置文件是否正确,没有错误重新加载服务:
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
(3)配置验证
检查httpd是否加载expires模块:
#/usr/local/apache2.4/bin/apachectl -M |grep -i expires
//没有输出则说明当前httpd并不支持expires模块,所以需要修改配置文件
#vim /usr/local/apache2.4/conf/httpd.conf
//搜索关键词expires,找到这一行
#LoadModule expires_ module modules/mod_ expires .so
//把前面#删掉
#/usr/local/apache2.4/bin/apachectl graceful
//重新加载服务
#/usr/local/apache2.4/bin/apachectl -M|grep -i expires
expires_module(share)
//有这行输出说明正确加载expires模块
下面进行测试:
上传linux.jpeg文件
#curl -xlocalhost:80 www.111.com/image/linux.jpeg -I
//max-age=86400说明将缓存86400秒,max-age=0说明没有该类型缓存文件
(4)验证成功
在这里插入图片描述

8. 配置防盗链
(1)介绍
防盗链,通俗讲,就是不让别人盗用你网站上的资源。这个资源,通常指的是图片、视频、歌曲、文档等。
(2)配置
配置防盗链先编辑主机配置文件:
#vim /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
<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 "^KaTeX parse error: Can't use function '\.' in math mode at position 30: … <filesmatch "\̲.̲(txt|doc|mp3|zi…为空referer,
//当直接在浏览器里输入图片地址去访问它时,它的referer就为空。
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
(3)配置验证
#curl -e “http://www.douxue.com/123.php” -xlocalhost:80 www.111.com/image/linux.jpg -I
//状态码为403,其中-e参数表示请求的来源
curl -e “http://www.111.com/123.php” -xlocalhost:80 www.111.com/image/linux.jpg -I
//白名单网页访问,状态码为200
#curl -xlocalhost:80 www.111.com/image/linux.jpg -I
//空referer为白名单网页访问,状态码为200
(4)验证成功

在这里插入图片描述

9. 访问控制-Diretory\FileMatch

(1)介绍
访问控制限制白名单IP,针对文件和目录。
(2)目录配置
先来看看怎么限制IP访问,编辑配置文件:

#vim /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
<Directory /usr/local/apache2.4/docs/www.111.com/admin>
Order deny,allow
Deny from all
Allow from 127.0.0.1

ErrorLog “logs/111.com-error_log”
CustomLog “logs/111.com-access_log” combined

//Directory是用来指定限制访问的目录,order定义控制顺序
验证过程:
#mkdir /usr/local/apache2.4/docs/www.111.com/admin/
//创建admin目录,模拟网站后台
#vi /usr/local/apache2.4/docs/www.111.com/admin/123.php

<?php echo "Hello World!"; ?>

(3)配置验证
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
#curl -x127.0.0.1:80 www.111.com/admin/123.php -I
//状态码为200,可正常访问
#curl -x192.168.63.130:80 www.111.com/admin/123.php -I
//状态码为403,拒绝访问
(4)验证成功
在这里插入图片描述
(5)针对文件配置
编辑配置文件:
#vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
验证过程如下:
#cd /usr/local/apache2.4/docs/www.111.com/
#vim admin.php

<?php echo "This is admin.php"; ?>

#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful

(6)配置验证
#curl -x192.168.63.130:80 www.111.com/admin.php -I
状态码403被拒绝
#curl -x127.0.0.1:80 www.111.com/admin.php -I
状态码200访问正常
(7)验证成功
在这里插入图片描述
10. 访问控制-禁止解析PHP
(1)简述
对于使用PHP语言编写的网站,有一些目录是有需求上传文件的。如果网站代码有漏洞,让黑客上传了一个用PHP写的木马,由于网站可以执行PHP程序,最终会让黑客拿到服务器权限。
为了避免这种情况发生,我们需要把能上传文件的目录直接禁止解析PHP代码。
(2)配置
配置如下:
#vim /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
<Directory /usr/local/apache2.4/docs/www.111.com/upload>
php_admin_flag engine off

ErrorLog “logs/111.com-error_log”
CustomLog “logs/111.com-access_log” combined

#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
#cd /usr/local/apache2.4/docs/www.111.com/
#mkdir upload
#vim upload/123.php

<?php echo "www.111.com/123.php"; ?>

(3)配置验证
#curl -x127.0.0.1:80 www.111.com/upload/123.php

<?php echo "www.111.com/123.php"; ?>

允许访问
在这里插入图片描述
< VirtualHost :80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot “/usr/local/apache2.4/docs/www.111.com”
ServerName www.111.com
ServerAlias 111.com
<Directory /usr/local/apache2.4/docs/www.111.com/upload>
php_admin_flag engine off::
<FilesMatch (.
).php(.*)>
Order allow,deny
Deny from all
< /FilesMatch>
< /Directory>
ErrorLog “logs/111.com-error_log”
CustomLog “logs/111.com-access_log” combined
< /VirtualHost>
(4)验证成功
在这里插入图片描述
11. 访问控制-user_agent
(1)介绍
user_agent是指用户浏览器端的信息。比如你是用IE的还是Firefox浏览器的。有些网站会根据这个来调整打开网站的类型,如是手机的就打开wap,显示非手机的就打开PC常规页面。
(2)配置
#vim /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
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .curl. [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .baidu.com. [NC]
RewriteRule .
- [F]
< /IfModule>
ErrorLog “logs/111.com-error_log”
CustomLog “logs/www.111.com-access_log” combined
< /VirtualHost>
//%{HTTP_USER_AGENT}为user_agent的内置变量,NC代表“不区分大小写”,F代表Forbidden,OR表示“或者”,[F]代表forbidden。
验证过程:
#/usr/local/apache2.4/bin/apachectl -t
//Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
(3)配置验证
#curl -x127.0.0.1:80 www.111.com/upload/123.php
//状态码403
(4)验证成功
在这里插入图片描述
在这里插入图片描述
(5)反向测试
修改配置文件
RewriteCond %{HTTP_USER_AGENT} .curl. [NC,OR]
将curl改为Mozilla(浏览器客户端)
RewriteCond %{HTTP_USER_AGENT} .Mozilla. [NC,OR]
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
#curl -x127.0.0.1:80 www.111.com/upload/123.php
在这里插入图片描述

浏览器访问
在这里插入图片描述

(6)指定客户端
修改配置文件,改回curl
RewriteCond %{HTTP_USER_AGENT} .curl. [NC,OR]
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
#curl -A Mozllia -x127.0.0.1:80 www.111.com/upload/123.php
-A参数指定客户端的用户代理标头,即User-Agent
在这里插入图片描述

  • PHP配置

1. PHP基础配置
查看PHP配置文件得位置
#/usr/local/php/bin/php -i |grep -i “loaded configuration file”
#cp /usr/local/src/php-5.6.30/php.ini-production /usr/local/php/etc/php.ini
#/usr/local/php/bin/php -i |grep -i “loaded configuration file”
#cd /usr/local/apache2.4/docs/www.111.com
#vim 123.php

<?php phpinfo(); ?>

打开浏览器
在这里插入图片描述
#vim /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
disable_functions表示禁用这些函数。
定义date.timezone,减少警告/
#vim /usr/local/php/etc/php.ini
找到date. timezone设置如下:
date.timezone = Asia/Shanghai
2.日志相关配置
例如,在disable_functions,定义禁用phpinfo函数,
#vim /usr/local/php/etc/php.ini
disable_functions=phpinfo,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
浏览器访问www.111.com/123.php,显示空白
在这里插入图片描述
配置error_log:
#vim /usr/local/php/etc/php. ini
//记录错误日志:搜索log_errors, 改成如下
log_errors=On
//记录错误日志目录位置:搜索error. log,改为
error_log = /tmp/php_errors.log
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
配置完php.ini,查看日志
#tail -f /tmp/php_errors.log
在这里插入图片描述
3.配置open_basedir
open_basedir将网站限定在指定的目录,做目录的隔离
先在php.ini中设置open_basedir:
#vim /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/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
打开浏览器依次访问http://www.111.com/admin/123.php、http://www.111.com/upload/123.php

在这里插入图片描述

在这里插入图片描述
4. 虚拟主机配置open_basedir
将/usr/local/php/etc/php.ini中open_basedir注释掉,编辑虚拟主机配置open_basedir
#vim /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
php_admin_value open_basedir “/usr/local/apache2.4/docs/www.111.com/admin/:tmp/”
ErrorLog “logs/111.com-error_log”
CustomLog “logs/www.111.com-access_log” combined

//起作用的是php_admin_value
刷新配置
#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful
#curl -x127.0.0.1:80 www.111.com/admin/123.php
Hello World![root@localhost www.111.com]#
[root@localhost www.111.com]#
#curl -x127.0.0.1:80 www.111.com/upload/123.php -I
在这里插入图片描述

  • PHP扩展模块安装
    #/usr/local/php/bin/php -m
    //如何查看PHP加载了哪些模块
    #cd /usr/local/src
    #wget http://pecl.php.net/get/redis-2.2.5.tgz
    //安装一个新的redis
    #tar -zxvf redis-2.2.5.tgz
    #mv redis-2.2.5 phpredis-develop
    #cd phpredis-develop
    #yum install -y autoconf
    //因为有一处错误需要安装
    #/usr/local/php/bin/phpize
    //目的生成configure文件
    Configuring for:
    PHP Api Version: 20131106
    Zend Module Api No: 20131226
    Zend Extension Api No: 220131226
    #./configure --with-php-config=/usr/local/php/bin/php-config
    #make
    #make install
    Installing shared extensions: /usr/local/php/lib/ php/extensions/ no-debug- zts - 20131226/
    //make install时候编译好的就会放在这个目录里
    #ls /usr/local/php/lib/php/extensions/no-debug-zts-20~~
    //可以看到rdis.so
    #vim /usr/local/php/etc/php.ini
    //增加一行配置(可以放在文件最后一行)
    extension = redis.so
    #/usr/local/php/bin/php -m |grep redis
    //查看是否加载了redis模块
    redis

标签:php,com,配置,www.111,LAMP,usr,apache2.4,local,搭建
来源: https://blog.csdn.net/m0_53212199/article/details/114625987

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

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

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

ICode9版权所有