1安装MySQL

使用tar -zxvf mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz解压MySQL包后,之后通过mv mysql-5.6.47-linux-glibc2.12-x86_64 /usr/local/mysql,将目录移动到 /usr/local/mysql
切换到 cd /usr/local/mysql/
创建一个MySQL的用户useradd -s /sbin/nologin mysql
创建一个目录存放MySQL的数据并且给它一个用户组和用户权限mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql
使用ls -la /data/mysql查看它的组和权限
这里使用./scripts/mysql_install_db —user=mysql —datadir=/data/mysql出错,安装yum install -y perl-Module-Install之后运行定义数据库所属组仍失败,之后通过csdn软件查找,使用yum install -y perl-Data-Dumper,之后成功,出现俩个ok,再次使用echo $?,显示为0,成功
使用cp support-files/my-default.cnf /etc/my.cnf,将my-default.cnf拷贝到/etc/my.cnf,会有一个默认的配置文件,y,覆盖,编辑配置文件vim /etc/my.cnf:basedir=/usr/local/mysql(MySQL安装目录)datadir(存放数据目录)port=3306(MySQL默认端口)server_id=100(IP后三位)socket=/tmp/mysql.sock
拷贝文件cp support-files/mysql.server /etc/init.d/mysqld,编辑vim /etc/init.d/mysqld ,修改basedir=/usr/local/mysql,datadir=/data/mysql
启动脚本加入系统的服务项,并且设为开机自启
chkconfig —add mysqld
chkconfig mysqld on
启动MySQL
service mysql start

2安装Apache

首先对所需包进行下载解压
LAMP架构搭建 - 图1
然后进入到apr-1.5.1,运行configure 编译出来make文件,运行之前需要yum安装相关库
yum install -y libtool*
./configure —prefix=/usr/local/apr
之后使用make && make install进行安装
进入到apr-util-1.5.4,指定安装目录,同样也许安装,会缺少包,先进行安装(安装包devel)
yum install -y expat-devel
./configure —prefix=/usr/local/apr-util —with-apr=/usr/local/apr
make && make install
通过echo $?查询是否正确,返回为0正确
进入httpd-2.4.33,缺少库,先进行安装(库 .lib -devel),同样运行configure,\为脱义字符,将一行命令写为多行,指定安装目录,并且将apr和apr-util依赖过来,enable-so为支持动态扩展模块,enable-mods-shared=most支持大多数动态的扩展模块。再次运行make
yum install -y 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

make -j4 && make install
可能出错,就需要将apr和apr-util目录拷贝到httpd的srclib下,切换到htppd目录下,清楚make,再次编译makle
cp -r apr-1.5.1 httpd-2.4.33/srclib/apr
cp -r apr-util-1.5.4 httpd-2.4.33/srclib/apr-uitl
make clean
make -j4 && make install
全部正确后
安装完成

apache目录
bin:放置一些可执行文件
conf:放置配置文件
error:报错日志文件
htdocs:存放apache默认网页内容
lib:依赖的库
icons、include:静态文件
logs:日志文件
modules:扩展模块

/usr/local/apache2.4/bin/httpd -M 查看加载的模块

3安装PHP

准备PHP包
解压
因为我的包为php-5.6.39.tar.bz2所以yum下载了bzip2,然后解压
yum -y install bzip2
tar -jxvf php-5.6.39.tar.bz2
编译,首先下载缺少的库
yum install -y libxml2.devel bzip2 bzip2-devel libpng lipng-devel openssl openssl-devel freetype freetype-devel opel-release
./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

4httpd解析PHP

首先对httpd.conf文件进行编辑
vim /usr/local/apache2.4/conf/httpd.conf
输入/ServerName查找
将ServerName www.example.com:80前的注释删掉

AllowOverride none
Require all denied

改成:

AllowOverride none
Require all granted

搜索AddType
LAMP架构搭建 - 图2
在下面添加一行 AddType application/x-httpd-php .php

DirectoryIndex index.html

改成:

DirectoryIndex index.html index.php

进行测试配置文件
/usr/local/apache2.4/bin/apachectl -t
显示Syntax OK为正确
进行启动
/usr/local/apache2.4/bin/apachectl start
输入curl localhost进行测试,显示为下为正确

It works!

编辑一个测试脚本
vim /usr/local/apache2.4/htdocs/1.php
<?
echo “php解析正确”
?>
运行脚本后显示php解析正确
则PHP解析正确

5httpd的默认虚拟主机

编辑httpd.conf搜索vhosts,将前边注释取消掉
vim /usr/local/apache2.4/conf/httpd.conf
每一段对应一主机,每一主机对应一网站,进行编辑
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
编辑为如下
LAMP架构搭建 - 图3
ServerAdmin 指定管理员邮箱,
DocumentRoot 为该虚拟主机站点的根目录,
ServaerName 为网站的域名
ServerAlias 为网站的第二域名
ErrorLog 为站点的错误日志
CustomLog 为站点的访问日志

进入到
cd /usr/local/apache2.4/
创建目录docs并且进入,创建网站名称,再分别进入,创建网页内容
mkdir docs
mkdir zzy.com
mkdir yyz.com
vim zzy.com/index.html
vim yyz.com/index.html
内容随意
重新加载服务
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
访问
curl -xlocalhost:80 www.zzy.com
显示为
zzy.com

6httpd的用户认证

对httpd-vhosts.conf文件进行编辑,修改为如下
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
LAMP架构搭建 - 图4
//指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName “zzy.com user auth” //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为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
创建用户名和密码,回车后需输入密码
/usr/local/apache2.4/bin/htpasswd -cm /usr/local/apache2.4/docs/.htpasswd zzy
尝试能否访问
curl -xlocalhost:80 -u zzy:000000 zzy.com -I
网页访问需编辑C:\Windows\System32\drivers\etc,本地主机的hosts文件
LAMP架构搭建 - 图5

7域名跳转

同样对httpd-vhosts.conf进行·编辑·
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
LAMP架构搭建 - 图6

RewriteEngine on
RewriteCond %{HTTP_HOST} !^zzy.com$
RewriteRule ^/(.*)$ http://zzy.com/$1 [R=301,L]

检查
/usr/local/apache2.4/bin/apachectl -t
重新加载
/usr/local/apache2.4/bin/apachectl graceful
查找rewrite模块,发现注释,取消注释
vim /usr/local/apache2.4/conf/httpd.conf
再次查找模块,发现有了
/usr/local/apache2.4/bin/apachectl -M |grep rewrite
随意进入一个网站,发现跳转
curl -xlocalhost:80 2211.com.cn -I
LAMP架构搭建 - 图7

8访问日志

编辑
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
改为LAMP架构搭建 - 图8
重新加载
/usr/local/apache2.4/bin/apachectl graceful
进入查看日志
cd /usr/local/apache2.4/logs/
cat zzy.com-access_log

9 访问日志不记录静态文件

编辑,添加
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
LAMP架构搭建 - 图9
DocumentRoot “/data/wwwroot/www.zzy.com”
ServerName www.zzy.com
ServerAlias zzy.com
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/zzy.com-access_log” combined env=!img
重新加载
/usr/local/apache2.4/bin/apachectl graceful

10访问日志切割

编辑,添加
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
LAMP架构搭建 - 图10

“|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400”
重新加载
/usr/local/apache2.4/bin/apachectl graceful

11静态元素过期时间

编辑
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
LAMP架构搭建 - 图11

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 graceful

12配置防盗链

通过限制referer来实现防盗链的功能
编辑
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
LAMP架构搭建 - 图12

SetEnvIfNoCase Referer “http://www.zzy.com“ local_ref
SetEnvIfNoCase Referer “http://zzy.com“ local_ref
SetEnvIfNoCase Referer “^$” local_ref

Order Allow,Deny
Allow from env=local_ref


重新加载
/usr/local/apache2.4/bin/apachectl graceful

13访问控制白名单

编辑
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
LAMP架构搭建 - 图13

Order deny,allow
Deny from all
Allow from 127.0.0.1

重新加载
/usr/local/apache2.4/bin/apachectl graceful

14禁止解析PHP

禁止上传过程中解析PHP
编辑
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
添加
LAMP架构搭建 - 图14

php_admin_flag engine off

重新加载
/usr/local/apache2.4/bin/apachectl graceful

添加以下,不仅不允许解析,还不允许访问


Order deny,allow
Deny from all
Allow from 127.0.0.1

15访问控制 – user_agent

编辑
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
添加
LAMP架构搭建 - 图15

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .curl. [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .baidu.com. [NC]
RewriteRule .* - [F]

重新加载
/usr/local/apache2.4/bin/apachectl graceful

16PHP基础配置

切换到 php-5.6.39目录,拷贝,并且改名
cp php.ini-production /usr/local/php/etc/
mv /usr/local/php/etc/php.ini-production /usr/local/php/etc/php.ini
查看php配置文件位置
/usr/local/php/bin/php -i|grep -i “loaded configuration file”
可以查看出来,但会有告警,编辑文件php.ini,查找timezone,取消注释,并修改
vim /usr/local/php/etc/php.ini
LAMP架构搭建 - 图16
再次运行,警告已经没有了
编辑文件,搜索disable_ 将函数添加进去
vim /usr/local/php/etc/php.ini
LAMP架构搭建 - 图17
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

日志

编辑,搜索display,将display_errors关闭,搜索log_errors,将错误日志打开,搜索error_log,指定错误日志存放位置,取消注释,搜索error_reporting,修改级别
vim /usr/local/php/etc/php.ini
LAMP架构搭建 - 图18LAMP架构搭建 - 图19LAMP架构搭建 - 图20LAMP架构搭建 - 图21
刷新

open_basedir

编辑
vim /usr/local/php/etc/php.ini
搜索;open_basedir,取消注释,添加内容/usr/local/apache2.4/docs/zzy.com:/tmp,限制只允许访问此网站下的目录
LAMP架构搭建 - 图22
重新加载
/usr/local/apache2.4/bin/apachectl graceful
根据站点限制,修改虚拟主机
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
LAMP架构搭建 - 图23

17PHP动态扩展模块安装

下载redis-2.2.3.tgz包,解压
tar -zxvf redis-2.2.3.tgz
进入到redis-2.2.3目录下,执行文件
/usr/local/php/bin/phpize
./configure —with-php-config=/usr/local/php/bin/php-config
查看生成目录
make install
/usr/local/php/bin/php -i |grep extension_dir
查看未出错
/usr/local/apache2.4/bin/apachectl -t
重新加载
/usr/local/apache2.4/bin/apachectl graceful
查看
/usr/local/php/bin/php -m | grep redis