一、LAMP架构介绍
1、LAMP 是Linux Apache MySQL PHP的简写,其实就是把Apache, MySQL以及PHP安装在Linux系统上,组成一个环境来运行php的脚本语言 – > Linux + Apache(httpd) + MySQL + PHP 三个角色可以在一台机器,也可以分开(httpd和PHP要在一起)
2、httpd、PHP、MySQL 三者工作模式
静态内容服务:客户端发起资源请求,服务器将请求的资源原封不动的发给客户端。
动态资源:服务器将客户端发起的资源先执行一下,进行一定的处理,返还给客户端。(登录时去MsSQL找账号密码的密码进行比对)
二、LAMP搭建
ps:在安装过程中不确定是否出现错误都可以使用echo $?命令进行检查
1.准备一台可以ping通网络的虚拟机。笔者所采取的配置:Centos7 64位、4GB内存、2*1处理器、VMnet8模式;镜像为:CentOS-7-x86_64-DVD-1511.iso
2.安装MySQL
[root@lamp ]# uname -i //查看linux位数
x86_64
[root@lamp ~]# cd /usr/local/src/ //建议所有软件包可以放到此目录下
[root@lamp src]# https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz // 下载mysql压缩包
[root@lamp src]# tar zxvf mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz //解压
[root@lamp mysql]# useradd mysql //创建mysql用户
[root@lamp mysql]# mkdir -p /data/mysql //创建目录
[root@lamp mysql]#chown -R mysql:mysql /data/mysql // 更改权限,不更改后续操作就会出问题
[root@lamp mysql]#[ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_old
[root@lamp src]# mv mysql-5.6.47-linux-glibc2.12-x86_64 /usr/local/mysql //挪动位置
[root@lamp src]# cd /usr/local/mysql/ //进入修改目录后的位置
[root@lamp mysql]# ls //查看是否有文件
bin docs lib man README share support-files
data include LICENSE mysql-test scripts sql-bench
[root@lamp mysql]# yum install -y perl-Data-Dumper.x86_64 //下载缺失的perl模块
[root@lamp mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //初始化,指定用户,指定数据库目录
[root@lamp mysql]# echo $? //若难分辨命令产生的结果是否正确,可以使用此命令检验
0
[root@lamp mysql]# ls support-files/
binary-configure my-default.cnf mysql-log-rotate
magic mysqld_multi.server mysql.server
[root@lamp mysql]# cp support-files/my-default.cnf /etc/my.cnf //拷贝配置文件
cp: overwrite ‘/etc/my.cnf’? y
[root@lamp mysql]# vi /etc/my.cnf //修改配置文件、添加datadir、socket、symbolic-links
[root@lamp mysql]# cp support-files/mysql.server /etc/init.d/mysqld //移动启动脚本
[root@lamp mysql]# vi /etc/init.d/mysqld //修改启动脚本。找到下面这两行定义basedir和datadir
basedir=/usr/local/mysql
datadir=/data/mysql
[root@lamp mysql]# chkconfig --add mysqld //设置开机自启动
[root@lamp mysql]# /etc/init.d/mysqld start //启动mysqld
3. 安装Apache
[root@lamp ~]# cd /usr/local/src/
[root@lamp src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.46.tar.gz //下载httpd源码包
[root@lamp src]# wget http://archive.apache.org/dist/apr/apr-1.6.5.tar.gz //下载apr源码包
[root@lamp src]# wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz //下载apr-util源码包
//解压这三个包
[root@lamp ~]# yum install -y expat-devel pcre-devel libxml2-devel openssl-devel gcc //安装依赖包
[root@lamp ~]# yum install -y libcurl-devel gd-devel bzip2-devel //安装依赖包
//编译安装apr
[root@lamp src]# cd apr-1.6.2
[root@lamp apr-1.6.2]# ./configure --prefix=/usr/local/apr
[root@lamp apr-1.6.2]# make && make install
[root@lamp apr-1.6.2]# echo $?
0
//编译安装apr-util
[root@lamp src]# cd apr-util-1.6.1
[root@lamp apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@lamp apr-util-1.6.1]# make && make install
[root@lamp apr-util-1.6.1]# echo $?
0
//编译安装httpd
[root@lamp src]# cd httpd-2.4.43
[root@lamp httpd-2.4.43]# ./configure \ //这里的反斜杠是脱义字符,加上它我们可以把一行命令写成多行
> --prefix=/usr/local/apache2.4 \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util \
> --enable-so \
> --enable-mods-shared=most
[root@lamp httpd-2.4.43]# make && make install
[root@lamp httpd-2.4.43]# /usr/local/apache2.4/bin/httpd -M //查看加载的模块
[root@lamp httpd-2.4.43]# /usr/local/apache2.4/bin/apachectl start //启动Apache脚本:启动脚本后,虽然出现提示,但不表示启动失败,若不想要出现提示,只需要编辑配置文件即可
//查看 httpd默认监听端口为80,mysqld默认监听端口为3306,25端口是发邮件的,22端口是远程登录的
启动后在浏览器中输入ip地址即可查看网页显示:It works! (若网页无法访问,可以关闭虚拟机防火墙即可)
4. 安装PHP5
[root@lamp src]# wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
[root@lamp src]# tar zxvf php-5.6.30.tar.gz
[root@lamp php-5.6.30]# yum install -y epel-release
[root@lamp php-5.6.30]# yum install -y libmcrypt-devel
[root@lamp php-5.6.30]# ./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
-
--prefix=/usr/local/php 表示指定它的安装目录
-
--with-apxs2=/usr/local/apache2.4/bin/apxs //apxs2,它是apache的一个工具,这个工具能让我们不用去人工的干涉它,它可以自动的帮你去把扩展的模块放到Apache中的modules目录里,并且在它的配置文件里加上一行load module
-
--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 //指定mysql的路径。
这是三种不同的mysql驱动,原因是你想要把你的PHP和mysql相互通信,首先需要编译出支持它的模块来,因为在PHP代码里面,定义了连接mysql的命令,一段代码,若是没有相应的驱动,那根本是无法识别的 -
--with-mysql 和 –with-mysqli 是有区别的,它们两者功能是相同的,目的都是为了让PHP去支持mysql,老版本中使用 –with-mysql,新版本中使用 –with-mysqli ,在PHP7中就不再使用–with-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 //指定PHP需要的模块,若是没有特殊的要求,直接复制这些参数即可,这些参数是通用的
[root@lamp php-5.6.30]# make && make install
[root@lamp php-5.6.30]# echo $?
0
[root@lamp php-5.6.30]# /usr/local/php/bin/php -m //查看php加载的模块(静态)
[root@lamp php-5.6.30]# cp php.ini-production /usr/local/php/etc/php.ini //拷贝配置文件
5. 配置httpd支持php
编辑httpd的配置文件
httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf //修改以下4个地方
ServerName
Require all denied
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
[root@lamp php-5.6.30]# vi /usr/local/apache2.4/conf/httpd.conf /进入配置文件
将ServerName www.example.com:80前的#号删除
将denied 改成 granted
搜索 /AddType,增加AddType application/x-httpd-php .php //.php前是有一个空格
搜索 /Index,加上index.php
[root@lamp php-5.6.30]# /usr/local/apache2.4/bin/apachectl -t //检查配置是否有错误
[root@lamp php-5.6.30]# /usr/local/apache2.4/bin/apachectl start //启动服务
[root@lamp php-5.6.30]# /usr/local/apache2.4/bin/apachectl graceful //重新加载配置文件
//检查Apache是否支持解析php5
[root@lamp ~]# vi /usr/local/apache2.4/htdocs/1.php
<?php
phpinfo();
?>