共计 7847 个字符,预计需要花费 20 分钟才能阅读完成。
LAMP是 Linux Apache MySQL PHP 的缩写,即把 Apache、MySQL 以及 PHP 安装在 Linux 系统上,组成一个环境来运行 PHP 的脚本语言。Apache 是最常用的 Web 服务软件,而 MySQL 是比较小型的数据库软件。三个角色可以安装在一台机器上,也可以分开(但 httpd 和 php 要在一起的)
下面来介绍如何构建 LAMP 环境:
安装 MySQL:(Mariadb 安装几乎一样)
(1)MySQL/Mariadb 介绍
MySQL 是一个关系型数据库,由 mysql ab 公司开发,mysql 在 2008 年被 sun 公司收购(10 亿刀),2009 年 sun 公司被 Oracle 公司收购(74 亿刀)
MySQL 官网 https://www.mysql.com 最新版本 5.7GA/8.0DMR
MySQL5.6 变化比较大,5.7 性能上有很大提升
Mariadb 为 MySQL 的一个分支,官网 https://mariadb.com/ 最新版本 10.2
MariaDB 主要由 SkySQL 公司 (现更名为 MariaDB 公司) 维护,SkySQL 公司由 MySQL 原作者带领大部分原班人马创立.
Mariadb5.5 版本对应 MySQL 的 5.5,10.0 对应 MySQL5.6
Community 社区版本,Enterprise 企业版,GA(Generally Available)指通用版本,在生产环境中用的,DMR(Development Milestone Release)开发里程碑发布版,RC(Release Candidate)发行候选版本,Beta 开放测试版本,Alpha 内部测试版本
(2)MySQL 安装过程:
①下载源码包到 /usr/local/src/ 目录下:
进入该目录:cd /usr/local/src/
下载源码包:wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
②解压,然后挪动位置 /usr/local/mysql
解压:tar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
[-d /usr/local/mysql] && mv /usr/local/mysql /usr/local/mysql_old 这一步意思:是否存在 mysql 目录了,有的话,修改就 mysql 目录名称!
挪动位置:mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
③创建 MySQL 用户,启动 MySQL 需要该用户:useradd -s /sbin/nologin mysql
④创建 MySQL 数据库文件存放目录 /data/mysql 并更改权限:mkdir -p /data/mysql; chown -R mysql:mysql /data/mysql;
⑤进入 /usr/local/mysql 目录,初始化:./scripts/mysql_install_db –user=mysql –datadir=/data/mysql
这里会出现 FATAL ERROR 报错,这是因为缺少 perl 包导致的,我们 yum 安装就好了:yum install -y perl-Module-Install
安装完成后,重新执行上一条命令;接下来你会看见两个 OK,并且会在 /data/mysql 目录下生成了几个文件和目录,说明执行成功了。或者 echo $? 查看是否成功!
⑥复制配置文件:cp support-files/my-default.cnf /etc/my.cnf;(因为系统默认有 my.cnf 文件,所以会提示覆盖)
⑦修改配置文件:vim /etc/my.cnf
⑧复制启动脚本,并修改其属性
⑨修改启动脚本:vim /etc/init.d/mysqld
⑩到这里安装就完成了,接下来就是启动和检查了
从上图看见已经是启动成功了,还提示了 mysql 错误日志文件。
使用之前的命令检查 MySQL 是否启动了:
安装 Apache:
(1)Apache 介绍
Apache 是一个基金会的名字,httpd 才是我们要安装的软件包,早期它的名字就叫 apache;Apache 官网 www.apache.org
(2)Apache 安装过程
①下载源码包存放在 /usr/local/src/:
进入 src 目录:cd /usr/local/src
下载源码包以及两个依赖包:
httpd:wget http://mirrors.sohu.com/apache/httpd-2.4.29.tar.gz
apr:wget http://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.6.3.tar.gz
apr-util:wget http://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
②解压
tar -zxvf apr-1.6.3.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
tar -zxvf httpd-2.4.29.tar.gz
③安装依赖库,如果不安装这两个依赖,httpd2.4 就无法工作(如果是 httpd2.2 是不用手动安装的)
安装 apr:
cd /usr/local/src/apr-1.6.3
./configure –prefix=/usr/local/apr
make && make install
可能出错:(友情提示:安装软件时,最好没执行一步,就 echo $? 看看是否执行成功!)
错误提示很明显了,缺少 gcc 包;那我们就 yum 安装:yum install -y gcc;安装完成后,重新执行上面的命令!
安装 apr-util:
cd /usr/local/src/apr-util-1.6.1
./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
make && make install
可能报错:
缺少 expat.h 文件,yum 安装:yum install -y expat-devel;安装完成后,重新执行上面的命令!
④安装 httpd:
cd /usr/local/src/httpd-2.4.29
./configure –prefix=/usr/local/apache2.4 –with-apr=/usr/local/apr –with-apr-util=/usr/lcal/apr-util –enable-so –enable-mods-shared=most
make && make install
可能报错:
解决办法:yum install -y pcre pcre-devel
说明:缺少了 xml 相关的库,需要安装 libxml2-devel 包。直接安装并不能解决问题,因为 httpd 调用的 apr-util 已经安装好了,但是 apr-util 并没有 libxml2-devel 包支持
解决办法:
⑤安装完成后,查看 httpd 的木目录结构和 modules 目录下的模块文件:
安装 PHP:
(1)下载源码包 /usr/local/src/:wget http://mirrors.sohu.com/php/php-5.6.9.tar.gz
(2)解压:tar -zxvf php-5.6.9.tar.gz
(3)配置编译参数:
./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-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 && make install
可能报错:
解决办法:yum install -y openssl openssl-devel
解决办法:yum install -y bzip2 bzip2-devel
解决办法:yum install -y libjpeg libjpeg-devel
解决办法:yum install -y libpng libpng-devel
解决办法:yum install -y lfreetype freetype-devel
解决办法:yum install -y epel-release libmcrypt-devel
(5)最后是复制配置文件:cp php.ini-production /usr/local/php/etc/php.ini
配置 httpd 支持 PHP:
(1)修改 httpd 主配置文件 /usr/local/apache2.4/conf/httpd.conf
搜索 ServerName,删除前面的 ‘#’
找到 <Directory />,修改成
在 AddType 增加一行:
测试 LAMP 是否成功:
(1)测试配置文件是否正确
(2)启动 apache 服务
(3)使用 curl 命令简单测试:
(4)测试是否正确解析 php
添加测试 php 脚本!
到这里,LAMP 环境就搭建好了,下面熟悉一下 httpd 的配置!
httpd 配置:
(1)默认虚拟主机
编辑 httpd 配置文件 httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf
然后编辑虚拟主机的配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
这样一个 <VirtualHost>***</VirtualHost> 就是一个虚拟主机了。
还要创建网站目录呢
(2)用户认证
编辑 httpd 配置文件 httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf
接下来就是创建密码文件:(- c 为 create,- m 为 MD5 加密;第二次就不用 - c 了,否则会清空密码文件)
用户认证效果:(当然你需要在本机的 hosts 文件加入虚拟机的 IP 和 default.com 才能在浏览器访问了)
当然你也可以对网站的文件进行用户认证了,新建了一个站点进行文件的用户认证。
效果:
(3)配置域名跳转
编辑 httpd 配置文件 httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf
在 <VirtualHost> 站点加入下面的代码
当然还需要去 httpd 主配置文件,打开 rewrite 模块
验证是否开启:
配置完成后,使用 curl 进行测试
(4)配置访问日志
定义访问日志的格式在主配置文件 httpd.conf
继续修改 vhost 配置文件:(默认是 common,我们现在修改成 combined)
当有访问时,会产生日志文件:(记录的信息明显变多了)
日志过滤掉图片、js、css 等静态文件,节约磁盘容量,并且做 日志切割,一天一个文件!
在站点的配置文件 vhost 中加入过滤代码:
(5)配置静态元素过期时间
修改 vhost:
(6)配置防盗链
(7)访问控制
①通过 限制 IP 访问:
修改 vhost 配置文件:
效果:(192.168.159.131 和 127.0.0.1 都是本机 IP)
②也可以 针对某个文件做限制
同样是修改 vhost
效果:
③针对user_agent 来做访问控制
修改 vhost:(OR:或者;NC:不区分大小写;F:Forbidden)
效果:(curl - A 指定 user_agent)
④上传目录 禁止解析 php 代码
PHP 配置:
(1)查看 php 配置文件所在路径:/usr/local/php/bin/php -i |grep -i “loaded configaration file”
设置时区:vim /usr/local/php/etc/php.ini
(2)禁用一些 php 内置的危险函数
(3)配置日志 error_log
打开 php 配置文件 php.ini:vim /usr/local/php/etc/php.ini
然后创建错误日志存放目录,并修改权限
(4)配置 open_basedir
open_basedir 的作用是将网站限定在指定的目录里,万一一个站点被黑了,也不会影响其他的站点。
如果直接在 php 配置文件设置 open_basedir 参数的,就是所有的站点都定义在一起了,起不到 open_basedir 的作用。
下面介绍在每个站点的独立虚拟主机上配置 open_absedir:
(5)PHP 动态扩展模块安装
查看 php 加载了哪些功能模块:
/usr/local/php/bin/php -m
安装 php 的 redis 扩展模块:
①下载模块:wget https://codeload.github.com/phpredis/phpredis/zip/develop
②重命名:mv develop phpredis-develop.zip; 解压:unzip phpredis-develop.zip
③生成可执行文件:cd phpredis-develop/ ; /usr/local/php/bin/phpize
报错:
安装:yum install -y autoconf
④编译安装 三部曲:./configure make make install
⑤查看安装的模块文件:ls /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
⑥编辑 php 配置文件:echo “extension = redis.so” >> /usr/local/php/etc/php.ini
⑦检验:/usr/local/php/bin/php -m|grep redis
: