LAMP环境搭建与配置
任务1 安装LAMP,基础配置解析PHP
前期环境
1.修改主机名
2.配置网络
3.重启网络之后测试网络
4.关闭防火墙
5.关闭selinux
6.挂载光驱
7.把其他repo文件移到/media
8.配置yum源
9.安装常用工具
vim是vi编译器的升级版
net-tools 自带两个命令
gcc是编译二进制源码包需要
tree以树状形式查看目录结构
rz快捷上传工具
1. 安装MySQL
1.上传mql压缩包并解压
2.移动mql到/usr/local下,这里是存放mql的信息并进行查看
3.建立mql用户,创建存放数据目录、更改权限以及查看用户组和用户权限
4.执行一个脚本,实现不需要重新编译完成mql的操作(指定参数user【定义数据库的所属组】、datadir【定义数据安装的位置】)
出现以上情况解决方法:安装autoconf,命令如下:
yum install -y autoconf
脚本为perl脚本,等待出现两个ok证明成功
再重新执行这条命令./scripts/mysql_install_db —user=mysql —datadir=/data/mysql
5.首先拷贝到/etc/my.cnf,接着修改mysql配置文件vim /etc/my.cnf
再拷贝启动脚本/etc/init.d下命名的mysqld,随后修改文件vim /etc/init.d/mysqld(修改的内容与上一个文件内容相对应)
6.设置开机自启
7.mysqld 启动成功
查看进程
查看设置的端口是否开启
2. 安装Apache
1.上传apache压缩包并解压
2.切换目录安装apr-1.5.1及进行编译
安装lib
再次执行./configure —prefix=/usr/local/apr
make安装
3.切换目录安装apr-util-1.5.4及进行编译
make安装
安装expat包
再进行make安装
4.查看所安装的
5. 切换目录httpd-2.4.33安装及进行编译
如果有依赖之类的报错,就安装这些依赖
再次执行./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
6.进行查看一些文件
7.加载模块
3.安装PHP
1.上传PHP压缩包并解压(安装bzip2)
2.切换目录到php-5.6.39查看及编译
3.安装库yum install -y libxml2-devel openssl openssl-devel bzip2 bzip2-devel libpng libpng-devel freetype freetype-devel epel-release libmcrypt-deve
并执行./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
4.安装make
5.模块验证
6.拷贝出配置文件
4. 配置httpd支持PHP
1.切换目录进行主配置文件
去掉注释符
修改成granted
增加一行
增加索引
2.修改完成进行测试apache服务,并进行加载
启动服务
有httpd服务占用80即可
3. 测试PHP解析是否正常
也可以通过浏览器访问
4.创建一个php文件
进行访问加指定路径
通过浏览器也可以访问
LAMP httpd配置
任务2 Apache配置
1. 默认虚拟主机
1.修改主配置文件
vim /usr/local/apache2.4/conf/httpd.conf
搜索httpd-vhost,去掉# 不然会访问默认的地址
再修改httpd-vhosts.conf这个文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
进行备份再修改vim httpd-vhosts.conf
最后两段改成这样
# 各个配置的作用
//ServerAdmin指定管理员邮箱,
//DocumentRoot为该虚拟主机站点的根目录,
//ServaerName为网站的域名
//ServerAlias为网站的第二域名 可以写多个,后面用空格隔开
//ErrorLog为站点的错误日志
//CustomLog为站点的访问日志
- 创建站点主目录
mkdir -p /data/zzxroot/zhouzx.com /data/zzxroot/www.123.com
echo “zhouzx.com” > /data/zzxroot/zhouzx.com/index.html
echo “123.com” > /data/zzxroot/www.123.com/index.html
检查配置及重新加载
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
3.访问
curl -xlocalhost:80 zhouzx.com
curl -xlocalhost:80 zzx.com
curl -xlocalhost:80 www.123.com
测试curl 一个没有的域名,默认访问
curl -xlocalhost:80 www.abc.com
2. httpd的用户认证
1.进行主配置
1. 插入注释
(1)首先按键盘上的ESC进入命令行模式
(2)再按Ctrl+V进入VISUAL BLOCK模式
(3)利用上下左右键调整需要注释多少行以及行的宽度
(4)再按Shift+i或s进入插入模式
(5)输入代表注释的符号,比如#
(6)再次按ESC键,这时就可完成多行注释(可能需要等上一会,不要着急)
2. 去注释
前三步与加注释相同。
(1)首先按键盘上的ESC进入命令行模式
(2)再按Ctrl+V进入VISUAL BLOCK模式
(3)利用上下左右键调整需要去注释多少行以及行的宽度
(4)再按d即可完成去注释
注释后添加
AllowOverride AuthConfig
AuthName “www.123.com user auth”
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
检查配置及重新加载
2. 设置用户:zzx密码:0
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd zzx
修改hosts文件
C:\Windows\System32\drivers\etc\hosts
添加一行 我这里是:
192.168.200.155 www.123.com
打开浏览器 输入网址 www.123.com
用curl访问
curl -xlocalhost:80 -u zzx:0 www.123.com -I
还可以针对单个文件进行认证
添加
AllowOverride AuthConfig
AuthName “www.123.com user auth”
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
检查配置及重新加载
重新生成一个密码:123
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd zzx
这时是不需要密码的
curl -xlocalhost:80 www.123.com -I
接着我们针对vim admin.php
必须加上-u 用户名和密码即可以访问成功
curl -xlocalhost:80 -u zzx:123 www.123.com/admin.php -I
浏览器访问
3. 域名跳转
1.编辑/usr/local/apache2.4/conf/extra下的vim httpd-vhosts.conf文件
注释后添加
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
添加
RewriteEngine on
rewriteCond %{HTTP_HOST} !^www.123.com$
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]
检查配置及重新加载
2.编辑主配置文件vim /usr/local/apache2.4/conf/httpd.conf
去掉注释符
重新加载
查看模块是否放开
/usr/local/apache2.4/bin/apachectl -M|grep -i rewrit
测试状态码返回301 成功
curl -xlocalhost:80 -I 123.com
4. 配置访问日志
- 打开主配置文件,搜索LogFormat可以找到日志文件
vim /usr/local/apache2.4/conf/httpd.conf
访问日志
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
主要是增加这一行
CustomLog “logs/123.com-access_log” combined
日志格式解读:
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
LogFormat “%h %l %u %t \”%r\” %>s %b” common
%h为访问网站的IP、
%l为远程登陆名,字段基本为“-”
%u 为用户名
%t 为时间
%r 为请求动作
%s 为请求的状态码,写成%>s为最后的状态码
%b为传输数据的大小
“%{Referer}i 为referer信息(请求本次地址上一次的地址就为referer),从哪跳转来的,,就显示哪里
“%{User-Agent}i 为浏览器标识。
2.检查配置及重新加载
5. 访问日记不记录静态文件
1.编辑/usr/local/apache2.4/conf/extra下的vim httpd-vhosts.conf文件
先定义一个img环境变量,把常用的静态格式文件全部归类到img当中,后面env=!img 取反, 意思是把img以外的类型文件记录到日志。
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
SetEnvIf RequestURI “..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 “| /usr/local/apache2.4/bin/rotatelogs -l logs/123
.com-access%Y%m%d.log 86400” combined env=!img
2. 日志切割测试
生成一个带时间戳的日志即表示日志切割功能实现。
ls /usr/local/apache2.4/logs/
3、静态文件不记录日志 测试
touch /data/zzxroot/www.123.com/zzx.txt
touch /data/zzxroot/www.123.com/zzx.jpg
curl -xlocalhost:80 www.123.com/zzx.txt
curl -xlocalhost:80 www.123.com/zzx.jpg
从日志可以看到,我们访问了txt文件和jpg文件,日志只记录了txt的记录。
6. 静态元素过期时间
- 配置vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
添加配置
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”
检查配置及重新加载
放开这一行注释
/usr/local/apache2.4/bin/apachectl -M |grep -i expires
2.测试
访问jpg文件,发现max-age=86400 表示缓存一天
curl -xlocalhost:80 -I www.123.com/zzx.jpg
访问txt 发现 max-age=0 表示没有缓存
curl -xlocalhost:80 -I www.123.com/zzx.txt
7. 配置防盗链
- 配置vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
注释
添加
SetEnvIfNoCase Referer “http://www.123.com“ local_ref
SetEnvIfNoCase Referer “http://123.com“ local_ref
SetEnvIfNoCase Referer “^$” local_ref
Order Allow,Deny
Allow from env=local_ref
referer介绍: 从a网站去访问b网站,那么b网站的referer就是a网站的地址。
2、测试
使用-e 定义referer,这个referer一定要以http://开头。
从被允许的网站跳转被允许访问
使用非允许的referer 报错403
访问html文件可以被访问
8. 访问控制-Diretory\FileMatch
1.配置vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
访问控制
注释
添加
CustomLog “| /usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400” combined
Order deny,allow
Deny from all
Allow from 192.168.200.155
配置限制文件
Order deny,allow
Deny from all
Allow from 127.0.0.1
2.测试限制目录
创建目录,模拟网站后台
清空日志
10. 访问控制-禁止解析PHP
- 配置vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
注释
添加
php_admin_flag engine off
2.测试
创建目录、模拟网站上传目录
mkdir /data/zzxroot/www.123.com/upload
cp /usr/local/apache2.4/htdocs/test.php /data/zzxroot/www.123.com/upload
curl -xlocalhost:80 www.123.com/upload/test.php
11.访问控制-user_agent
1.配置vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
注释
添加
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .curl. [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .baidu.com. [NC]
RewriteRule .* - [F]
2.测试
curl的-A选项指定 user_agent。第一个请求, user agent为“curl/7.29.0”匹配了第一个条件,所以会403;第二个请求, user_agent为自定义的“123123”没有匹配任何条件,所以状态码为200。
任务3 PHP配置
1 PHP基础配置
1.查看PHP配置文件所在位置
/usr/local/php/bin/php -i| grep -i “loaded configuration file”
去掉注释符修改地区时间
再一次执行警告就没有了
2.配置
加入函数
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
2 日志相关配置
1.修改配置
很难找搜这个error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
2.测试
vim /data/wwwroot/www.123.com/test.php
出现了状态码500 ,说明我们访问的页面是存在错误的,需要查看php 的错误日志
通过日志可以判断是test.php第三行少了分号。
3 配置open_basedir
1.修改配置
vim /usr/local/php/etc/php.ini
2.测试
cp /usr/local/apache2.4/htdocs/test.php /data/zzxroot/zhouzx.com/
4.虚拟主机配置open_basedir
1.配置vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
添加
php_admin_value open_basedir “/data/zzxroot/www.123.com/:/tmp
/“
起作用的是php_admin_value,它定义了php.ini的参数
任务4 PHP扩展模块安装
1.配置
查看PHP加载的模块
上传并解压
生成configure文件
./configure —with-php-config=/usr/local/php/bin/php-config
make
make install
查看扩展模块所在目录
/usr/local/php/bin/php -i |grep extension_dir
可以看到redis
修改配置文件vim /usr/local/php/etc/php.ini
增加一行配置extension = redis.so,我放在了最后
重启httpd服务即可