2020-11-26

LAMP环境搭建与配置
14.1安装MySQL
挂载镜像
#mkdir /opt/centos
#mount /dev/cdrom /opt/centos/
最先下载包:
#yum install -y epel-release
#yum install -y gcc*
将软件包传输到 /usr/local/src里方便管理
(1) 解压
#cd /usr/local/src
#tar -xzvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
(2)初始化配置
#[ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_old
#mv mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql 挪动位置
#cd /usr/local/mysql //进入到/usr/local/mysql目录
#useradd -s /sbin/nologin mysql //建立MySQL用户
#mkdir -p /data/mysql //创建datadir,数据库文件放在这里
#chown -R mysql:mysql /data/mysql //更改权限
先下载:yum install perl-Data-Dumper.x86_64

#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
(2) 配置MySQL
复制配置文件
#cp support-files/my-default.cnf /etc/my.cnf
在这里插入图片描述

配置文件 /etc/my.cnf

在这里插入图片描述

需要更改的地方
在这里插入图片描述

复制启动脚本文件修改其属性
在这里插入图片描述

需要修改的地方
在这里插入图片描述

把脚本加入系统服务项,设定开机启动并启动MySQL
在这里插入图片描述

启动成功!!!!
查看3306端口启动
在这里插入图片描述

14.2、 安装Apache
(1)解压
#cd /usr/local/src
tar -zxvf apr-1.6.5.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
tar -zxvf httpd-2.4.39.tar.gz
(2)配置文件
#cd /usr/local/src/apr-1.6.5
#./configure --prefix=/usr/local/apr
可能会报错,原因是缺少一个libtool库
解决方法:安装一个
#yum install -y libtool*
再次进行编译
#./configure --prefix=/usr/local/apr
没报错,进行make安装
#make && make install 没报错操作成功
进行apr-util-1.6.1的编译
#cd /usr/local/src/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
提前下载好包 yum install -y expat-devel
make && make install
安装完apr以及apr-util,继续安装httpd,配置编译参数
#cd /usr/local/src/
#cp -r apr-1.6.5 httpd-2.4.39/srclib/apr
#cp -r apr-util-1.6.1 httpd-2.4.39/srclib/apr-util
#cd /usr/local/src/httpd-2.4.39
./configure --prefix=/usr/local/apache2.4 --enable-so --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork(很长的一个命令)
进行编译 make -j4 && make install
不报错,成功
最后查看加载了哪些模块,使用命令:
在这里插入图片描述

至此apache安装完毕

14.3、 安装PHP
为了防止报错,先把需要安装的东西全部安装一下
yum install libxml2-devel bzip2 bzip2-devel libpng libpng-devel openssl openssl-devel freetype freetype-devel opel-release -y (epel-release是一个扩展包)
然后再安装::yum install -y epel-release
yum install -y libmcrypt-devel
配置编译参数:
./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-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --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 -j4 && make install
最后复制配置文件:
cp php.ini-production /usr/local/php/etc/php.ini

14.4 配置httpd 支持PHP
编辑httpd的主配置文件
#vi /usr/local/apache2.4/conf/httpd.conf
以下是需要更改的地方:
搜索ServerName 命令》 /ServerName 把#ServerName www.example.com:80前面的井号删除
搜索Require
Require all denied
改成:Require all granted
//目的允许所有请求访问
搜索 AddType application/x-gzip .gz .tgz , 在下面添加一行 AddType application/x-httpd-php .php
搜索
改成:< IfModule dir_module >
DirectoryIndex index.html ---- DirectoryIndex index.html index.php
</ IfModule > </ IfModule >
14.5测试安装
14.5.1 测试配置文件是否正确
#/usr/local/apache2.4/bin/apachectl -t

启动httpd命令
#/usr/local/apache2.4/bin/apachectl graceful
查看是否启动
#netstat -lnp |grep httpd
使用curl命令简单测试,显示了就是成功
在这里插入图片描述

正确解析PHP

14.6 httpd配置
14.6.1 默认虚拟机主机
编辑配置文件httpd.conf
#vi /usr/local/apache2.4/conf/httpd.conf
//搜索关键字httpd-vhost, 把这行的井号删除
编辑虚拟主机配置文件
#vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
更改前:
在这里插入图片描述

更改后:
在这里插入图片描述

切换目录
#cd /usr/local/apache2.4
创建一个目录并在这个目录中创建刚才编辑的两个网站
#mkdir docs
#cd docs/
#mkdir abc.com
#mkdir 111.com
#vi abc.com/index.html 内容 abc.com
#vi 111.com/index.html 内容 111.com
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
验证是否能访问到网页
在这里插入图片描述
在这里插入图片描述

访问成功!

14.6.2 用户认证
#vi /usr/local/apache2.4/conf/extra/httpd-vhost.conf
在这里插入图片描述

更改后 添加的内容:
<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

在这里插入图片描述

需要注释的部分
在这里插入图片描述

检查有没有出错:
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful

创建用户名和密码
先关闭防火墙
#sentenforce 0 systemctl stop firewalld
#/usr/local/apache2.4/bin/htpasswd -cm /usr/local/apache2.4/docs/.htpasswd ytl

查看是否能正常访问:
在这里插入图片描述

网页上登录www.abc.com

输入之前创建的账号 密码

14.6.3 域名跳转
编辑配置文件
#vi /usr/local/apache2.4/conf/extra/httpd-vhost.conf
在这里插入图片描述

添加的部分:

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

#/usr/local/apache2.4/bin/apachectl -t
要实现跳转,需要 rewrite 模块的支持,所以查看是否安装该模块
#/usr/local/apache2.4/bin/apachectl -M |grep -i rewrite //如果没有输出则需要继续编辑
#vi /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(share) //有这行输出,说明正常加载 rewrite 模块
#curl -xlocalhost:80 -l 123.com

域名跳转成功
14.6.4 配置访问日志
#vi /usr/local/apache2.4/conf/httpd.conf //搜索LogFormat
在这里插入图片描述

可以看到两个格式的日志,建议使用第一个,记录的信息会更全。%h为访问网站的IP; %l 为远程 登录名,这个字段基本上为“-”; %u为用户名,当使用用户认证时,这个字段为认证的用户名; %t为. 时间; %r为请求的动作(比如用curl -I时就为HEADE ); %s为请求的状态码,写成%>s为最后的状态码; %b 为传输数据大小; %{Referer}i为referer信息(请求本次地址上一次的地址就为referer,比如在百度 中搜索阿铭Linux,然后通过百度的搜索结果页面点击然后到了阿铭的论坛,那访问阿铭论坛的这次 请求的referer就是baidu,当然那个地址肯定是很长的); %{User - Agent}i为浏览器标识,比如你用 Firefox或者Chrome浏览器,则该字段显示内容不一样,是带有浏览器的标识的。对于这个日志格式, 你可以自定义调整各个字段的位置,也可以额外增加其他字段,比如可以增加%D (请求耗费时间)。

然后继续编辑虚拟主机配置文件
#vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
在这里插入图片描述

Common改为combined

重新加载配置文件
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
#curl -xlocalhost:80 2111.com.cn/admin.php
#tail /usr/local/apache2.4/logs/abc.com-access_log

访问日志的切割
#vi /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
添加的内容 需要注释掉前面的域名跳转
SetEnvIf Request_URI “..gifKaTeX parse error: Can't use function '\.' in math mode at position 35: …Request_URI ".*\̲.̲jpg" img
SetEnvIf Request_URI ".
.pngKaTeX parse error: Can't use function '\.' in math mode at position 35: …Request_URI ".*\̲.̲bmp” img
SetEnvIf Request_URI “..swfKaTeX parse error: Can't use function '\.' in math mode at position 35: …Request_URI ".*\̲.̲js" img
SetEnvIf Request_URI ".
.css$” img
CustomLog “logs/www.111.com-access_log” combined env=!img
在这里插入图片描述

检查配置文件有没有问题
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
#curl -xlocalhost:80 www.111.com -I 可以正常访问
双引号里需要改的内容:
|/usr/lcoal/apache2.4/bin/rotatelogs -l logs/www.111.com-access_%Y%m%d.log 86400
在这里插入图片描述

检查配置文件有没有问题
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
curl -xlocalhost:80 www.111.com -I 正常访问没有问题
查看log日志
#ls /usr/local/apache2.4/logs
发现新生成的当天的日志
在这里插入图片描述

访问日志不记录静态文件:
#cd/usr/local/apache2.4/docs/www.111.com
#mkdir images 上传一张名字为linux.png的图片
#curl -xlocalhost:80 www.111.com/images/linux.png -I
访问成功的样子:

在这里插入图片描述

14.6.5 配置静态元素过期时间
#vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在这里插入图片描述

添加的内容:

14.6.6 配制防盗链
配置防盗链先编辑主机配置文件:
#vi /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
内容改成如下:这是新增的
<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


在这里插入图片描述

测试:
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
#curl -xlocalhost:80 www.111.com/images/linux1.jpg -I
测试成功:
在这里插入图片描述

使用-e来定义referer,这个referer一定要以http://开头,否则不管用
不可以访问:因为它不是referer配置的
#curl -e “http://www.douxue.com/123.php” -xlocalhost:80 www.111.com/images/linux1.jpg -I
在这里插入图片描述

这三个可以访问:
#curl -e “http://www.111.com/123.php” -xlocalhost:80 www.111.com/images/linux1.jpg -I
#curl -xlocalhost:80 www.111.com/images/linux1.jpg -I
#curl -xlocalhost:80 www.111.com/images/linux1.jpg -I
14.6.7 访问控制
访问控制—Directory
编辑配置文件:
#vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<Directory /usr/local/apache2.4/docs/www.111.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1

在这里插入图片描述

测试:
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
//创建 admin 目录,模拟网站后台
#cd /usr/local/apache2.4/docs/www.111.com
#mkdir admin
#cp 123.php admin/
访问它:
#curl -x192.168.150.10:80 www.111.com/admin/123.php -I
在这里插入图片描述

不可访问,因为配置文件的时候,我们限制了admin下的文件除了127.0.0.1以外的地址访问都是失败的
在这里插入图片描述

访问正常 ! 做白名单访问限制!
针对单个文件FilesMatch做限制
在这里插入图片描述

测试:
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
#cd /usr/local/apache2.4/docs/www.111.com
#cp 123.php admin.php
在这里插入图片描述

只要是admin.php后缀的都可以访问,不会报错
禁止PHP解析:
注意:添加的那一行是 php_admin_flag engine off图片里的flag写错了
在这里插入图片描述

测试:
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
在www.111.com目录下创建upload
#cd /usr/local/apache2.4/docs/www.111.com
#mkdir upload
#cp 123.php upload/
#curl一下 返回源码并未解析
在这里插入图片描述

编辑文件 这个时候先拒绝所有的不可以访问,然后只允许本地主机可以访问,
在这里插入图片描述

测试:
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
在这里插入图片描述

localhost可以访问

在这里插入图片描述

主机ip不可以访问
访问控制-user_agent

测试:
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
在这里插入图片描述

指定一个user_agent是可以访问的
14.7 PHP配置
查看PHP配置文件所在的位置
#/usr/local/php/bin/php -i |grep -i “loaded configuration file”
在这里插入图片描述

定义搜索disable_functions,减少报告,编辑如下
#vi usr/local/php/etc/php.ini
需要更改的:
date.timezone = Asia/Shanghai
#/usr/local/php/bin/php -i |grep -i “loaded configuration file”
再次执行警告没有了

14.7.1 PHP的disable_functions
#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,symli nk,1eak,popepassthru,stream_socket_server,popen,proc_open,proc_close,phpinfo

14.7.2 配置error_log
#vi /usr/local/php/etc/php.ini
//记录错误日志:搜索 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

log_ errors可以设置为on或者off,如果想让PHP记录错误日志,需要设置为on。error_ log设定错 误日志路径; error_ reporting设定错误日志的级别,E_ ALL为所有类型的日志,不管是提醒还是警告 都会记录。在开发环境下面设置为E_ ALL,可以方便程序员排查问题,但也会造成日志记录很多无意 义的内容。&符号表示并且,~表示排除,所以两个组合在- -起就是在E_ ALL的基础上排除掉notice相关 的日志。display_ _errors设置为on,则会把错误日志直接显示在浏览器里,这样对于用户访问来说体 验不好,而且还会暴露网站的一些文件路径等重要信息,所以要设置为off。

如果/tmp下没有出现日志,自己创建一个
#touch /tmp/phperrors.log; chmod 777 /tmp/phperror.log^C

#vi /data/wwwroot/testdomain.com/test.php //其中故意去掉结尾的;
添加如下内容

#curl -A ”123” -I -x127.0.0.1:80 www.111.com/123.php

此时出现状态码500,这说明我们访问的页面是错误的,此时需要查看PHP的错误日志来盘多错误原因:
#cat /var/log/php/php_errors.log

通过日志可以判断test.php文件第三行少了分号

14.7.3 配置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
#/usr/local/apache2.4/bin/apachectl graceful
#curl -x192.168.150.10:80 www.111.com/admin/123.php
单个虚拟主机设置open_basedir
#vi/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在这里插入图片描述
进行测试:
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful

在这里插入图片描述
能够访问
在这里插入图片描述
不能够访问

起作用的就是这句php_admin_value, 它可以定义php.ini里面的参数,除此之外像error_1og之类的 也可以定义。这样就可以实现,一个虚拟主机定义一个open_basedir。

14.8 PHP动态扩展模块安装
查看PHP都加载哪些功能模块:
#cd /usr/local/src/
#tar -xzvf redis-2.2.5.tgz
#cd redis-2.2.5
执行phpize
#/usr/local/php/bin/phpize
在这里插入图片描述
#./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install

在这里插入图片描述
查找extension_dir的目录在哪
#/usr/local/php/bin/php -i | grep extension_dir

在这里插入图片描述
#vi /usr/local/php/etc/php.ini
按shift+g到底部添加一行代码 extension = redis.so
#/usr/local/apache2.4/bin/apachectl -t
查看目录是否出来
#/usr/local/php/bin/php -m | grep redis

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值