当前位置: 首页 > news >正文

第十一章 LAMP架构

11.1 LAMP架构介绍
第十一章 LAMP架构
Q:httpd和php为什么需要组合在一起,不能分开部署在不同的节点使用网络来进行数据协同吗?
A:因为我们使用的方式是,php作为httpd的一个模块存在的。 他们两者必须要在一起,才能实现效果。当然,如果你把php做成以fastcgi的形式,这样httpd可以在另外的机器上调用它,这样用就跟lnmp类似了。 


11.2 MYSQL/Maria DB 介绍
环境搭建要搭建3编以上。

第十一章 LAMP架构


11.3 MYSQL 安装(上)
11.4 MYSQL 安装(中)
11.5 MYSQL 安装(下)
课程用到安装包地址:r.aminglinux.com 下载用到的包。

《 安装mysql》
1)进入下载目录,并下载包
cd /usr/local/src/  约定以后所有的安装包都安装在这里
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
(64位二进制免编译包)。
2)解压,并挪动修改目录名字
tar zxvf /usr/local/src/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.36-linux-glibc2.5-x86_64  /usr/local/mysql 
3) 进入解压后的目录创建用户和存放数据的目录
cd /usr/local/mysql 
useradd -s /sbin/nologin mysql 
mkdir -p /data/mysql 
4)初始化安装一下
chown -R mysql:mysql  /data/mysql 
chowd -R 755  /usr/local/mysql/data
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 
echo $? 查安装对不
缺少一个dumper的模块,由关键字搜索相关包,实际上如图,安装。
<yum list |grep perl |grep -i dumper>

第十一章 LAMP架构
5)拷贝模板配置文件并修改名字和配置
cp support-files/my-default.cnf  /etc/my.cnf  默认是放在这个下面的这个文件cnf

第十一章 LAMP架构

 <rpm -qf /etc/my.cnf>  查看文件是由哪个安装的

第十一章 LAMP架构

6)拷贝启动脚本修改名字/修改地址和权限
cp support-files/mysql.server  /etc/init.d/mysqld
vim /etc/init.d/mysqld   #修改basedir 和 datadir
chmod 755 /etc/init.d/mysqld 

第十一章 LAMP架构
7)将mysql加入系统服务列表里开机启动
chkconfig --add mysqld 
chkconfig --list 查看系统服务

第十一章 LAMP架构

也可以用命令启动服务
chkconfig mysqld on 
service mysqld start 启动mysql
service mysqld stop 停掉mysql
ps aux | grep mysql 查看mysql进程

第十一章 LAMP架构

也可以用命令行启动

/usr/local/mysql/bin/mysqld_safe  --defaults-file=/etc/my.cnf --user=mysql  --datadir=/data/mysql &
指定配置文件 my.cnf的存放路径,并放到后台启动

第十一章 LAMP架构

没有 放到后台 ?????
killall mysqld 杀掉 mysql 会等待mysql数据写完才杀掉 不要用kill -9强制杀掉
第十一章 LAMP架构

实验时出错如下:

第十一章 LAMP架构

 发现是  my.cnf  配置写成了  /etc/mysql    

第十一章 LAMP架构

 -------------------------------------------------------------------------------------

11.6 Maria DB 安装

《 安装maria DB》
1)进入下载目录,并下载包
cd /usr/local/src/  约定以后所有的安装包都安装在这里
wget  https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz (64位二进制免编译包)。
2)解压,并挪动修改目录名字
tar zxvf /usr/local/src/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
mv mariadb-10.2.6-linux-glibc_214-x86_64  /usr/local/mariadb
3) 进入解压后的目录创建用户和存放数据的目录
cd /usr/local/mariadb
4) 同样使用mysql用户,并用初始化创建 /data/mariadb文件
./scripts/mysql_install_db --user=mysql --datadir=/data/mariadb
确认/data/mariadb 生成了

第十一章 LAMP架构

5)拷贝模板配置文件并修改名字和配置
ls -l /usr/local/mariadb/support-files 查看配置文件模板存放处,有很多个缓存大小不同的配置文件
cp support-files/my-small.cnf  /usr/local/mariadb/my.cnf  放在另外一处防止与mysql冲突
vim /usr/local/mariadb/my.cnf  编辑配置文件 暂不修改
6)拷贝模板启动脚本
cp support-files/mysql.server  /etc/init.d/mariadb

vim  /etc/init.d/mariadb
更改如下:
basedir=/usr/local/mariadb
datadir=/data/mariadb
conf=$basedir/my.cnf

第十一章 LAMP架构

7)启动
ps aux | grep mysql 确保mysql进程没启动,他们监听的端口一样;
/etc/init.d/mariadb start 启动

如下有个错误 :--datadir= /data/mysql,,,因为配置文件没有配置,默认使用了mysql的,上面田间

第十一章 LAMP架构

vim /usr/local/mariadb/my.cnf  编辑配置文件
增加:datadir= /data/mariadb 指定datadir,若装了mysql不指定会影响 只在启动脚本里定义是不行的。

第十一章 LAMP架构
修改后重新启动 /etc/init.d/mariadb restart

第十一章 LAMP架构


11.6 Apache 安装(上)

《apache 安装》
apache 2.4版本和2.2版本所使用的apr和apr-util版本不一致,所有用手动编译apr和apr-util
1)下载下面3个包并解压
cd /usr/local/src/  约定以后所有的安装包都安装在这里
wget   http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.29.tar.gz
wget   http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz
wget   http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.bz2
tar zvxf httpd-2.4.29.tar.gz  
tar zvxf apr-1.6.3.tar.gz
tar jxvf apr-util-1.6.1.tar.bz2

第十一章 LAMP架构

2) 安装apr --- 安装apr-util
cd /usr/local/src/apr-1.6.3
./configure --prefix=/usr/local/apr
make && make install 

cd /usr/local/src/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install 
查看生成的目录

第十一章 LAMP架构

cd  /usr/local/src/httpd-2.4.29
./configure --prefix=/usr/local/apache2.4 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--enable-so \
--enable-mods-shared=most  

make && make install 

--enable-so:支持动态扩展模块
--enable-mods-shared=most  :支持大部分模块

出现了错误 如下:

第十一章 LAMP架构

看命令历史 以下错误

======================
./configure --prefix=/usr/local/apache2.4\
--with-apr=/usr/local/apr\
--with-apr-util=/usr/local/apr-util\
--enable-so\
--enable-mods-shared=most   这里 --之间没有空格 指令。

=======================

第十一章 LAMP架构

yum list |grep pcre 查相关包
yum install -y pcre-devel.x86_64 安装pcre库包
cd /usr/local/apache2.4 进入安装好的apache2.4
/usr/local/apache2.4/bin/apachectl -M 查看加载了哪些模块
/usr/local/apache2.4/bin/apachectl start 启动
ps aux |grep httpd 查看进程

第十一章 LAMP架构

11.10 安装 PHP5 (上)
11.11 安装 PHP5 (中)

《安装PHP5》
1) 下载并解压
cd /usr/local/src/  约定以后所有的安装包都安装在这里
wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
tar zxf php-5.6.30.tar.gz
cd php-5.6.30 
2)编译
./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   --disable-ipv6 

make && make install 
cp php.ini-production /usr/local/php/etc/php.int 配置文件
/usr/local/php/etc/php.int -i |less 查看php的信息

编译中需要安装多个yum包
1次出错:

第十一章 LAMP架构

yum list |grep libxml2 查相关yum包
yum install -y libxml2-devel.x86_64 一般装相关devel库
2次又出错:

第十一章 LAMP架构

yum install -y libjpeg-devel 安装
3次又出错:

第十一章 LAMP架构

yum install -y libpng-devel 安装
4次又出错:

第十一章 LAMP架构

mcrypt 在epel中, 若没装过可能需要先安装 yum install -y epel-release
yum list |grep -i mcrypt
yum install - libmcrypt-devel.x86_64

第十一章 LAMP架构


11.12 安装 PHP5 (下)
ls /usr/local/php/
ls /usr/local/php/bin 核心二进制文件
du -sh /usr/local/php/bin/php
du -sh /usr/local/apache2.4/modules/libphp5.so

第十一章 LAMP架构

/usr/local/php/bin/php -m 查看加载了哪些模块

第十一章 LAMP架构

php 是作为apache的一个扩展模块存在的,不需启动
vim /usr/local/apache2.4/conf/httpd.conf apache的配置文件

第十一章 LAMP架构


11.13 安装 PHP7

1)下载并解压
wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
tar jxvf php-7.1.6.tar.bz2

cd php-7.1.6
2)编译 不同处
./configure   --prefix=/usr/local/php7   --with-apxs2=/usr/local/apache2.4/bin/apxs   --with-config-file-path=/usr/local/php7/etc   --with-pdo-mysql=/usr/local/mysql  --with-mysqli=/usr/local/mysql/bin/mysql_config   --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 

同一台机器上可以安装两个php还是要指定好,只能使能一个
du -sh /usr/local/apache2.4/modules/libphp7.so 加载的模块

vim /usr/local/apache2.4/conf/httpd.conf 修改配置文件注释掉php5或php7 只能使能一个

第十一章 LAMP架构


11.14 Apache和php结合(上)
11.15 Apache和php结合(下)

配置httpd支持php:
vim /usr/local/apache2.4/conf/httpd.conf 需要修改4处找到:
1)ServerName 将注释取消掉,没有了上面那个没有定义Servername的警告提示了

第十一章 LAMP架构

/usr/local/apache2.4/bin/apachectl restart 重新启动

第十一章 LAMP架构
2)增加一行规则配置,否则不能访问自己IP192.168.188.128
打开windows上的telnet的客户端:windows ---个性化--主页--应用--程序和功能--启用或关闭windows功能--打开 Telnet 客户端--确定,,,否则不能使用telnet命令。
iptables -nvL 看不到80端口,未打开
iptables -I INPUT -p tcp --dport 80 -j ACCEPT 增加一条规则 打开80端口防火墙
It works !实际上是访问了 ls /usr/local/apache2.4/htdocs/ 下的index.html
ps aux |grep httpd 确保apche已启动

第十一章 LAMP架构

windows 里输入telnet 192.168.188.128 80 ,通了 ctrl +] 退出,,然后输入quit 退出telnet

第十一章 LAMP架构

3) 有时候浏览器会出现403,修改
vim /usr/local/apache2.4/conf/httpd.conf 找到:
更改为 Require all granted 保存退出
/usr/local/apache2.4/bin/apachectl -t 检查配置文件语法是否正确 (重要)
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置文件

第十一章 LAMP架构
4)增加php的支持---解析php
找到:
AddType application/x-gzip .gz .tgz
在该行下面添加:
AddType application/x-httpd-php .php

第十一章 LAMP架构

5)增加索引页, 打开网址不用输入 index.php
找到:
DirectoryIndex index.html
将该行改为:
DirectoryIndex index.html index.htm index.php

    ![](https://s1.51cto.com/images/blog/201803/04/e13088a11644134aad43af375c0fd467.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

6)测试解析php
vim /usr/local/apache2.4/htdocs/1.php
写入:
<?php
echo "php解析正常";
phpinfo();
?>
保存后,继续测试:
curl localhost/1.php

第十一章 LAMP架构

第十一章 LAMP架构

若 php不能解析会显示 源代码。

1.必须加载了php5的模块文件,
2.配置文件必须加载php5模块,
3.配置文件需加载AddType application/x-httpd-php .php 注意 .前面有个空格
4.配置文件需加载 DirectoryIndex index.html index.htm index.php


11.16 Apache默认虚拟主机(上)

查看windows上的hosts文件,,,修改将hosts里ip和域名指定起来
C:\Windows\System32\drivers\etc
更改一下 hosts的权限,用记事本打开编辑 增加 192.168.188.128 www.abc.com www.123.com

第十一章 LAMP架构

第十一章 LAMP架构

1)增加虚拟主机
vim /usr/local/apache2.4/conf/httpd.conf 找到:取消注释

Virtual hosts 虚拟主机

Include conf/extra/httpd-vhosts.conf
2)修改虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
修改为如下:
最上面那个为默认虚拟主机,当发现没有配置时会访问最上面那个。

第十一章 LAMP架构

3)创建对应目录 及php文件
mkdir /data/wwwroot/
mkdir /data/wwwroot/abc.com
vim /data/wwwroot/abc.com/index.php
增加
<?php
echo"abc.com";
?>
mkdir /data/wwwroot/111.com
vim /data/wwwroot/111.com/index.php
增加
<?php
echo"111.com";
?>

11.17 Apache默认虚拟主机(下)
curl 命令:
curl -x
ping www.abc.com 没有绑定hosts, 会访问到外网

第十一章 LAMP架构

curl -x192.168.188.128:80 www.123.com
curl -x192.168.188.128:80 www.abc.com
curl -x192.168.188.128:80 asdfag
curl -x192.168.188.128:80 www.example.com
curl -x192.168.188.128:80 111.com

第十一章 LAMP架构

当curl访问时,会查虚拟主机配置文件,若有定义则访问虚拟主机的定义,若没有定义都会访问默认的虚拟主机配置域名。

方法1,编辑hosts文件,绑定一下
vi /etc/hosts
方法2, curl -x192.168.188.128:80 abc.com
只要解析到域名都访问到默认虚拟主机
结论:
1.打开虚拟主机配置文件后,虚拟主机生效,主配置文件里配置的DocumentRoot和ServerName失效;
2.虚拟主机配置文件打开后,里面可以配置很多个Virtual hosts ,每一个Virtual hosts 都有对应的DocumentRoot和ServerName,第一个为默认的虚拟主机,无论任何访问解析到这个IP上都会访问默认虚拟主机。


11.18 Apache 用户认证

打开网站时只有输入用户名字和密码才能进入,比方说 管理员登陆,

第十一章 LAMP架构

一 域名认证
1)修改虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

第十一章 LAMP架构

2)
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming
用md5类型加密创建密码文件,并创建用户aming,输入密码 123456
/usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd zhangsan
只增加用户和密码

第十一章 LAMP架构

3)检查无误并重新加载
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
curl -x127.0.0.1:80 111.com
curl -x127.0.0.1:80 -uaming:123456 111.com -I

第十一章 LAMP架构

4)
在windows下hosts里增加111.com
192.168.188.128 www.abc.com www.123.com 111.com
输入用户和密码后正常访问

第十一章 LAMP架构

二 对某个文件的访问设置验证
1)修改虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<FilesMatch 123.php >

第十一章 LAMP架构

2)重新加载,并增加123.php文件
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
vim /data/wwwroot/111.com/123.php
编辑并增加:
<?php
echo"123.php";
?>
3)测试访问
curl -x127.0.0.1:80 111.com
curl -x127.0.0.1:80 111.com/123.php -I
curl -x127.0.0.1:80 -uaming:123456 111.com/123.php -I

第十一章 LAMP架构


11.19 域名跳转(上)
11.20 域名跳转(下)

第十一章 LAMP架构

状态码301-- 永久重定向
1)修改虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
增加如下:
<VirtualHost :80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName111.com
    ServerAlias www.example.com
    <IfModule mod_rewrite.c>
        RewriteEngine on 
        RewriteCond %{HTTP_HOST} !^111.com$ 
        RewriteRule ^/(.
)$ http://111.com/$1 [R=301,L]
</IfModule>
</VirtualHost>
以111.com开头和结尾的

2)windows下hosts增加 www.example.com
192.168.188.128 www.abc.com www.123.com 111.com www.example.com
3)查apache是否加载了 rewrite模块,并加装
/usr/local/apache2.4/bin/apachectl -M |grep rewrite 查一下是否有rewrite模块,
vim /usr/local/apache2.4/conf/httpd.conf
编辑配置文件,修改将注释取消:
LoadModule rewrite_module modules/mod_rewrite.so

第十一章 LAMP架构
再查一下是否加载了模块,可以看到又了模块:
/usr/local/apache2.4/bin/apachectl -M |grep rewrite
/usr/local/apache2.4/bin/apachectl graceful
4)测试:
curl -x127.0.0.1:80 www.example.com/123.php -I
www.example.com/123.php 跳转到了 111.com

第十一章 LAMP架构

在浏览器中输入 www.example.com/123.php ,显示的时111.com/123.php

第十一章 LAMP架构

11.21 apache 访问日志
•访问日志记录用户的每一个请求
ls /usr/local/apache2.4/logs/ 日志目录

第十一章 LAMP架构

《定义日志记录格式》
(1)查看格式
vim /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 默认的
(2)修改虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
修改:
    CustomLog "logs/111.com-access_log" combined
(3) 重新加载配置文件 -t,graceful
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
(4)测试访问
curl -x127.0.0.1:80 -I 123.com
tail /usr/local/apache2.4/logs/111.com-access_log
用浏览器访问一次 www.example.com/123.php :
tail /usr/local/apache2.4/logs/111.com-access_log

第十一章 LAMP架构


11.22 访问日志不记录静态文本

第十一章 LAMP架构
 (1)修改虚拟主机配置文件,添加定义的环境,符合条件的不记录日志。
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
   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

第十一章 LAMP架构

 (2)检查,重新加载 配置文件,访问并查看日志
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
curl -x127.0.0.1:80 -I 111.com/adsfafa.jpg1
tail /usr/local/apache2.4/logs/111.com-access_log
curl -x127.0.0.1:80 -I 111.com/adsfafa.jpg

第十一章 LAMP架构

adsfafa.jpg1记录了,但是adsfafa.jpg没有记录

11.23 访问日志切割

第十一章 LAMP架构
(1)修改虚拟主机配置文件,更改配置,日志按日期归档。
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img 指定工具,按日期命名记录,记录间隔是一天即86400秒
(2)访问一下,查看日志
curl -x127.0.0.1:80 -I 111.com/123.php
ls /usr/local/apache2.4/logs/ 访问日志目录

第十一章 LAMP架构


11.24 配置静态元素过期时间

第十一章 LAMP架构

(1)修改虚拟主机配置文件,更改配置,增加图片访问后多久失效
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<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>

第十一章 LAMP架构

(2) 查expires是否加载了 expires模块,并加装
/usr/local/apache2.4/bin/apachectl -M |grep expires
vim /usr/local/apache2.4/conf/httpd.conf
编辑配置文件,修改将注释取消:
LoadModule rewrite_module modules/mod_expires.so

第十一章 LAMP架构

再查一下是否加载了模块,可以看到又了模块:
/usr/local/apache2.4/bin/apachectl -M |grep expires查一下是否有expires模块,
/usr/local/apache2.4/bin/apachectl graceful
3)测试:
在cd /data/wwwroot/111.com/ 下传入一个png文件,访问一下
curl -x127.0.0.1:80 111.com/xshell.png -I

第十一章 LAMP架构


11.25 配置防盗链

第十一章 LAMP架构

(1)修改虚拟主机配置文件,更改配置定义白名单和内容
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com>
        SetEnvIfNoCase Referer "http://111.com" local_ref
        SetEnvIfNoCase Referer "http://111.com" local_ref #白名单站点
        SetEnvIfNoCase Referer "^$" local_ref #不是跳转过来的为空,空refer可以访问
        <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)">
            Order Allow,Deny
            Allow from env=local_ref
        </filesmatch>
    </Directory>
 (2)检查,重新加载
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful 
(3)
curl -x127.0.0.1:80 -I 111.com/xshell.png


11.26 访问控制-Directory

第十一章 LAMP架构
(1)修改虚拟主机配置文件,增加配置,只有内部人可以访问,其它一律拒绝
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com/admin/>
        Order deny,allow #顺序,先拒绝再允许
        Deny from all
        Allow from 127.0.0.1
</Directory>
(2)检查 更新
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful 
(3)测试
curl -x127.0.0.1:80 -I 111.com/admin/index.php
curl -x192.168.188.128:80 -I 111.com/admin/index.php

第十一章 LAMP架构

11.27 访问控制-FilesMatch

第十一章 LAMP架构

(1)修改虚拟主机配置文件,增加配置
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com>
    <FilesMatch  "admin.php(.*)">
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </FilesMatch>
</Directory>

第十一章 LAMP架构

(2)检查 更新
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful 
(3)
mkdir admin
cp index.php admin/
curl -x127.0.0.1:80 -I 111.com/admin/index.php
curl -x192.168.188.128:80 -I '111.com/admin.php?sadfaskgnaglnaiogiw' -I


11.28 限定某个目标禁止解析php

第十一章 LAMP架构

(1)修改虚拟主机配置文件,增加配置updata目录蹦解析php
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com/upload> #updata目录蹦解析php
  php_admin_flag engine off
</Directory>
(2)检查 更新
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful 
(3)
mkdir upload
cp 123.php upload/
curl -x127.0.0.1:80 'http://111.com/upload/123.php'

第十一章 LAMP架构


11.29 限定user_agent

第十一章 LAMP架构
(1)修改虚拟主机配置文件,增加配置
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
   <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT}  .curl. [NC,OR] #OR或者,NC忽略大小写
        RewriteCond %{HTTP_USER_AGENT}  .baidu.com. [NC] #
        RewriteRule  .*  -  [F] #Forbidden 拒绝403
    </IfModule>

第十一章 LAMP架构

    (2)检查 更新

/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful 
(3)测试
curl -x127.0.0.1:80 'http://111.com/123.php'
curl -A "aminglinux aminglinux" -x127.0.0.1:80 'http://111.com/123.php' -A 指定useragent

第十一章 LAMP架构
ls /usr/local/apache2.4/logs/ 访问日志目录
cat /usr/local/apache2.4/logs/111.com-access_20180307.log 查看日志 curl被限制,而模拟的没有

第十一章 LAMP架构


11.30 PHP相关配置(上)
11.31 PHP相关配置 (下)

第十一章 LAMP架构

方法一: 查看php配置文件位置(有时候不准)
/usr/local/php/bin/php -i|grep -i "loaded configuration file"

方法二:web查看
(1)新建一个php文件,编辑一个php文件,
cd /data/wwwroot/111.com/
vim index.php
增加
<?php
phpinfo();
?>
浏览器打开 111.com/index.php , 没有配置文件

第十一章 LAMP架构

(2)进入源码包目录,拷贝一份配置文件 ,并刷新配置
cp /usr/local/src/php-7.1.6/php.ini-development /usr/local/php7/etc/php.ini
/usr/local/apache2.4/bin/apachectl graceful 
刷新浏览器,已经有了配置文件

第十一章 LAMP架构

(3)定义时区
vim /usr/local/php7/etc/php.ini 编辑配置文件
找到并增加 date.timezone=Asia/Shanghai

(4)增加限制安全函数
vim /usr/local/php7/etc/php.ini 编辑配置文件
找到并增加如下代码,保存并更新配置
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,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close,phpinfo

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

第十一章 LAMP架构

刷新浏览器,提示phpinfo函数被禁止了

第十一章 LAMP架构

(5)日志相关
error_log, log_errors, display_errors, error_reporting php的错误日志

----display_errors 显示错误

第十一章 LAMP架构

修改为off,报错时不提示,,变成了白页什么都不显示,但是不太好。
---- 错误日志目录
error_log=/tmp/php_errors.log #定义错误输出路径 还需要定义级别

第十一章 LAMP架构

------error_reporting 定义级别
error_reporting =E_ALL & ~E_NOTIC (生产中常用,)

第十一章 LAMP架构

curl -A "aaa" -x127.0.0.1:80 http://111.com/index.php

第十一章 LAMP架构

-----open_basedir 安全选项 A站点被黑,B站点不会被黑
open_basedir =/data/wwwroot/111.com:/tmp/ 有权限的站点目录

比如允许设为如下:

第十一章 LAMP架构

测试如下 不能打开

第十一章 LAMP架构
浏览器也不能打开

第十一章 LAMP架构

----虚拟主机配置文件,不同的主机配置不同的站点目录,把php限定在指定 目录下,不让其它目录读写文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
其中一个虚拟主机增加
php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"

第十一章 LAMP架构
另一个虚拟主机增加
php_admin_value open_basedir "/data/wwwroot/abc.com:/tmp/"

第十一章 LAMP架构

(最后将禁止的phpinfo()函数取消掉,以后实验方便用)


11.32 PHP 动态模块安装

第十一章 LAMP架构

1)《PHP动态扩展模块安装》
/usr/local/php7/bin/php -m //查看模块
下面安装一个redis的模块
cd /usr/local/src/
wget https://codeload.github.com/phpredis/phpredis/zip/develop
mv develop phpredis-develop.zip // 改名字
unzip phpredis-develop.zip //解压
cd phpredis-develop
/usr/local/php7/bin/phpize //生成configure文件

第十一章 LAMP架构

yum install -y autoconf 安装包
/usr/local/php7/bin/phpize 在生成
./configure --with-php-config=/usr/local/php7/bin/php-config
make && make install

第十一章 LAMP架构

ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/ 我们要的模块
/usr/local/php7/bin/php -i |grep extension_dir //查看扩展模块存放目录,我们可以在php.ini中去自定义该路径
vim /usr/local/php7/etc/php.ini  //增加一行配置(可以放到文件最后一行)
extension = redis.so 

第十一章 LAMP架构

2)从源码包里有的包安装源码包
cd /usr/local/src/php-7.1.6/ext/ 进入php7源码包ext下,中含有很多的模块
/usr/local/php7/bin/php -m |grep zip 查看发现没有安装zip模块
cd zip/ 进入目录 执行后编译,即可直接安装一个源码包
/usr/local/php7/bin/phpize
./configure --with-php-config=/usr/local/php7/bin/php-config
make && make install
ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

第十一章 LAMP架构

/usr/local/php7/bin/php -m |grep zip 已经安装了zip模块

转载于:https://blog.51cto.com/iammalt/2073387

相关文章:

  • 《Arduino实战》——第1章 你好Arduino 1.1 Arduino简史
  • C++程序设计:原理与实践(进阶篇)17.7 使用Shape类
  • 微信小程序计算器后后续
  • 1020. 月饼 (25)
  • 防御XSS攻击的七条原则
  • Oralce分析函数
  • 《ANSYS 14热力学/电磁学/耦合场分析自学手册》——2.10 个性化界面
  • Log4j 2 + Slf4j 的配置和使用Apache
  • 《OpenACC并行编程实战》—— 2.2 OpenACC 2.5规范
  • 使用wireshark抓取TCP包分析1
  • 《Imperfect C++中文版》导读
  • 《解读NoSQL》——2.10 延伸阅读
  • openlayers3.X 与4.X画圈和画多边形api区别
  • 医药领域又现一“神器”,用机器人来提取蝎子毒液
  • 《实用机器学习》——1.1 什么是机器学习
  • 【Linux系统编程】快速查找errno错误码信息
  • Facebook AccountKit 接入的坑点
  • Iterator 和 for...of 循环
  • Javascript 原型链
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Nacos系列:Nacos的Java SDK使用
  • PAT A1017 优先队列
  • SQLServer之创建显式事务
  • 基于 Babel 的 npm 包最小化设置
  • 那些年我们用过的显示性能指标
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 湖北分布式智能数据采集方法有哪些?
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​Java并发新构件之Exchanger
  • #pragma once
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (备忘)Java Map 遍历
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十五)使用Nexus创建Maven私服
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (算法)Game
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)大型网站架构演变和知识体系
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core 依赖注入的基本用发
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 使用配置文件
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • @ConfigurationProperties注解对数据的自动封装
  • @JSONField或@JsonProperty注解使用
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [AIGC] Redis基础命令集详细介绍
  • [Angular 基础] - 指令(directives)
  • [AutoSar]BSW_OS 02 Autosar OS_STACK