第十一章LAMP架构介绍(上)

11.1 LAMP架构介绍

11.2 MySQL、MariaDB介绍

11.3/11.4/11.5 MySQL安装

11.6 MariaDB安装

11.7/11.8/11.9 Apache安装

11.10/11.11/11.12 安装PHP5

11.13 安装PHP7

11.14/11.15 Apache和PHP结合

 

11.1 LAMP架构介绍

LAMP其实是 Linux+Apache(httpd)+MySQL+PHP

 

三个服务可以安装在同一台机器或者也可以分开安装(但是httpd和PHP要在一起)

 

httpd、PHP、MySQL三者之间的工作

注:Apache和PHP是一个整体,因为PHP以模块的形式跟Apache结合在一起;

但是Apache不能直接跟MySQL打交道,只能通过PHP模块去MySQL里面拿数据,然后将结果交给Apache,最后Apache将结果交给用户(这是动态请求)

 

例如:进入一个PHP网站进行网站登录,登录请求先交给Apache,Apache判断请求是动态还是静态,

若是动态请求,Apache拿着用户的登录账号和密码通过PHP模块对比MySQL保存的用户密码是否正确,然后Apache返回给用户一个登录的状态;

若是静态请求,登录网站时有图片需要加载,也是向Apache发送请求,Apache通过某个目录拿到这个图片

,然后返回给用户

 

 

11.2 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内部测试版本

 

 

11.3/11.4/11.5 MySQL安装

MySQL的几个常用安装包:rpm、源码、二进制免编译

 

二进制免编译(没特殊要求时可用这种方法)

1、下载mysql包

cd /usr/local/src

wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz 

 

2、解压包,并将包移动到/usr/local/mysql目录

tar -zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.6.39-linux-glibc2.12-x86_64  /usr/local/mysql

 

3、新增加mysql用户,并在根目录下创建/data/目录

cd /usr/local/mysql

useradd mysql        

mkdir /data/         #存放MySQL数据目录(在根目录下)

 

4、初始化mysql

./scripts/mysql_install_db --user=mysql --datadir=/data/mysql               #初始化(生成MySQL数据库)

#--user指定用户, --datadir指定MySQL数据库目录

 

ps:检查是否初始化成功两种方法

一、查看是否有两个ok

二、echo $?  为0

 

5、拷贝配置文件参考模板到默认的/etc/my.cnf

cp support-files/my-default.cnf  /etc/my.cnf

#my-default.cnf 是mysql配置文件

##默认将my-default.cnf 放在/etc/目录下

 

6、定义配置文件

vim /etc/my.cnf

#datadir放在/data/mysql;socket放在/tmp/mysql.sock;pid-file和includedir注释掉:

 

datadir=/data/mysql

socket=/tmp/mysql.sock

 

7、拷贝启动脚本到/etc/init.d/mysqld

cp support-files/mysql.server /etc/init.d/mysqld

 

8、定义启动脚本

vi /etc/init.d/mysqld    #启动脚本,定义basedir和datadir,

内容如下:

basedir=/usr/local/mysql

datadir=/data/mysql

 

#要确保/etc/init.d/mysqld的文件权限是755

 

开启MySQL的三种方法

一、设置mysql开机自启

chkconfig --add mysqld

chkconfig mysqld on

 

二、服务命令启动

 /etc/init.d/mysqld start  或者  service mysqld  start

 

三、命令行启动

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf  --user=mysql  --datadir=/data/mysql  &

#--defaults-file=配置文件所在路径

##适用于你的配置文件所在路径不在etc目录或者启动脚本不在/etc/init.d/目录,让mysql正常启动

 

关闭MySQL

一、服务方式

/etc/init.d/mysqld stop  

 

二、命令行方式

killall mysqld

 

使用kill关闭mysqld时,一定要使用killall mysqld,不能用kill  -9 [pid]

#因为mysqld会实时的读写数据,写数据的速度很快,可能会把写的数据保存在内存中(缓存中),或许这部分缓存并未同步到磁盘中去,若是直接使用kill -9 pid  ,会造成数据丢失;若是使用killall,会先停止当前的写读操作,让还没写入磁盘的数据继续写入磁盘,直到所有数据写完才哦会把进程杀死

##如果遇到mysqld进程始终杀不死,等了一分钟还没杀死,ps还会有进程,说明数据量很大,还在慢慢写入磁盘,这时要等待数据写入完后再killall进程,不要强制用kill -9,这很可能会造成数据丢失或者损坏数据表

 

错误:

一、

FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:

Data::Dumper

解决:

 yum list |grep perl |grep -i dumper  #查找含有perl和dumper的包

 yum install -y perl-Data-Dumper

 

二、

Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决:

yum install -y libaio-devel

 

 

11.6 MariaDB安装

二进制免编译安装

一、下载包

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 

 

二、解压包并移动到/usr/local/目录下

tar -zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz

mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb

 

三、初始化

cd /usr/local/mariadb

./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb

 

四、拷贝配置文件到/usr/local/mariadb目录(因为/etc/目录下有mysql了)

cp support-files/my-small.cnf /usr/local/mariadb/my.cnf

 

注意:mariadb有多个类型配置文件模板,不同之处在于缓存或缓冲的数值大小不一样,所以要根据自身内存大小选择合适的缓存,能让mysql性能更高效

 

五、定义配置文件

vi /usr/local/mariadb/my.cnf      #定义basedir和datadir  改[mysqld]这部分,添加datadir=/data/mariadb

 

六、拷贝启动脚本到/etc/init.d/目录下

cp support-files/mysql.server /etc/init.d/mariadb

#拷贝启动脚本到/etc/init.d/mariadb目录

 

七、定义启动脚本

vim /etc/init.d/mariadb  #定义basedir、datadir、conf以及启动参数

##如果启动脚本是放在/etc/目录下的话,就不用定义conf这个变量

修改内容如下:

basedir=/usr/local/mariadb

datadir=/data/mariadb

conf=/usr/local/mariadb/my.conf

 

还要找到启动命令那行,将conf添加进去

中间插入添加一句  --default file="$conf"

 

#开启前要检查mysql是否停止,因为mysql和mariadb监听的端口是一样的

/etc/init.d/mariadb start

 

 

11.7/11.8/11.9 Apache安装

Apache是一个基金会的名字,httpd才是我们要安装的软件包,早期它的名字就叫apache

Apache官网www.apache.org

 

源码包安装Apache

1、先下载Apache所需的包

wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.34.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.gz

apr和apr-util是一个通用的函数库,它让httpd可以不关心底层的操作系统平台,可以很方便地移植(从linux移植到windows)

 

2、解压包

tar -zxvf httpd-2.4.34.tar.gz

tar -zxvf apr-util-1.6.1.tar.gz

tar -zxvf apr-1.6.3.tar.gz

 

3、编译apr包

cd /usr/local/src/apr-1.6.3

./configure --prefix=/usr/local/apr

 

make && make install

 

4、编译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

 

5、编译httpd包

cd /usr/local/src/httpd-2.4.34

./configure   --prefix=/usr/local/apache2.4  --with-apr=/usr/local/apr  --with-apr-util=/usr/local/apr-util  --enable-so   --enable-mods-shared=most 

 

--enable-so    #支持动态扩展

 

#make前要把apr和apr-util的目录放到/usr/local/apache2.4/srclib/目录下

cp -r /usr/local/src/apr-1.6.3      srclib/

cp -r  /usr/local/src/apr-util-1.6.1   srclib/

 

make && make install

 

#most指的是绝大多数常用的模块

 

httpd内的目录

/bin/目录         #表示执行可执行文件(命令)

/conf/              #配置文件所在目录

/htdocs/          #访问网站所在目录

/logs/              #日志所在目录(帮助文档、错误日志等)

/modules/       #扩展模块所在目录

 

ls /usr/local/apache2.4/modules

 

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

 

/usr/local/apache2.4/bin/apachectl   -M  #同等效果,查看加载模块

#static,表示静态模块,直接编译进了主脚本(/bin/httpd)里面

#shared,表示扩展模块,是一个.so结尾的文件,在/modules目录下

 

启动httpd

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

 

错误:

一、

checking for gcc... no

checking for cc... no

checking for cl.exe... no

configure: error: in `/usr/local/src/apr-1.6.3':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details

解决:

yum install -y gcc

 

二、

config.status: executing libtool commands

rm: cannot remove 'libtoolT': No such file or directory

config.status: executing default commands

解决:

这个错误没有关系,不影响

 

三、

xml/apr_xml.c:35:19: 致命错误:expat.h:没有那个文件或目录

#include <expat.h>

                   ^

编译中断。

make[1]: *** [xml/apr_xml.lo] 错误 1

make[1]: 离开目录“/usr/local/src/apr-util-1.6.1”

make: *** [all-recursive] 错误 1

解决:

yum install -y expat-devel

 

四、

checking for pcre-config... false

configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

解决:

yum install -y pcre-devel

 

五、

collect2: error: ld returned 1 exit status

make[2]: *** [htpasswd] 错误 1

make[2]: 离开目录“/usr/local/apache2.4/support”

make[1]: *** [all-recursive] 错误 1

make[1]: 离开目录“/usr/local/apache2.4/support”

make: *** [all-recursive] 错误 1

解决:

没有在httpd make前将apr和apr-util目录拷贝到httpd2.4目录下的srclib目录里面

 

 

11.10/11.11/11.12 安装PHP5

PHP官网www.php.net

当前主流版本为5.6/7.1

源码包安装

php5所需依赖包:

yum install -y libxml2-devel openssl-devel  bzip2-devel  libjpeg-turbo-devel  libpng-devel  freetype-devel   libmcrypt-devel

 

1、下载php5包

cd /usr/local/src/

 

wget  http://cn2.php.net/distributions/php-5.6.32.tar.bz2

 

2、解压包

tar -jxvf php-5.6.32.tar.bz2

 

3、编译包

#因为编译php时要指定apache的路径,所以要先安装apache

cd php-5.6.32

 

./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

 

make && make install

 

/usr/local/php/bin/php  -m     #查看PHP加载的模块(全是静态)

 

Apache和PHP5是通过libphp5.so这个文件才结合起来的

libphp5.so在/usr/loacl/http2.4/modules/目录下

 

4、拷贝一份配置文件模板到/usr/local/php/etc/(这个目录默认为空)

cp php.ini-production  /usr/local/php/etc/php.ini

#php.ini-production适合在生产环境用的php配置文件;php.ini-development适合在开发环境用的PHP配置文件

 

错误:

一、

configure: error: xml2-config not found. Please check your libxml2 installation.

解决:yum install -y libxml2-devel

 

二、

configure: error: Cannot find OpenSSL's <evp.h>

解决:yum install -y openssl-devel

 

三、

configure: error: Please reinstall the BZip2 distribution

解决:yum install -y bzip2-devel

 

四、

configure: error: jpeglib.h not found.

解决:yum install -y libjpeg-turbo-devel

 

五、

configure: error: png.h not found.

解决:yum install -y libpng-devel

 

六、

configure: error: freetype-config not found.

解决:yum install -y freetype-devel

 

七、

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

解决:yum install -y libmcrypt-devel

 

 

11.13 安装PHP7

源码包安装

1、下载php7包

cd /usr/local/src/

 

wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2

 

2、解压包

tar -jxvf php-7.1.6.tar.bz2

 

3、编译包

cd php-7.1.6

./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

 

ls /usr/local/apache2.4/modules/libphp7.so

#Apache和PHP7是通过libphp7.so这个文件才结合起来的

 

4、拷贝配置文件到/usr/local/php/etc

cp php.ini-production  /usr/local/php7/etc/php.ini

 

注意:php5和php7可以在同一台机器共存,但是Apache使用时需要指定php;安装php5和php7后,两种php都会在Apache配置文件/usr/local/apache2.4/conf/httpd.conf内产生libphp5.solibphp7.so模块将不用的模块注释掉即可

 

 

11.14/11.15 Apache和PHP结合

httpd主配置文件/usr/local/apache2.4/conf/httpd.conf

 

vim /usr/local/apache2.4/conf/httpd.conf 

#修改以下4个地方

1、ServerName                      #将ServerName前面的#删掉

这样启动httpd服务是就不会提示没有ServerName

 

2、Require all denied             #将denied改为granted

不修改前会出现403 forbidden错误,修改后便可以正常访问,主要就是授权访问

 

3、AddType application/x-httpd-php .php    #增加这一行

增加这一行可以后可以解析php;如果发现网页显示的是php的代码,说明解析不了php

 

4、DirectoryIndex index.html index.php    #在index.html后面增加index.php

增加一个索引页(默:认网址不输入index.php也能跳转到index.php)

 

ps:

打开windows系统的telnet客户端方法

#telnet客户端用于window连接Linux服务器

控制面板--》程序--》启用或关闭程序功能--》选择telnet客户端,然后点击确定

 

/usr/local/apache2.4/bin/apachectl -t  #测试配置文件语法是否正确

#每次修改配置文件要检查

/usr/local/apache2.4/bin/apachectl  graceful  #重新加载配置文件(并不会重启服务)

 

快捷小技巧:CTRL+R可以快速访问命令历史的命令

按CTRL+R,然后输入关键命令,就会显示出完整命令

 

/usr/local/apache2.4/bin/apachectl start   #启动服务

/usr/local/apache2.4/bin/apachectl restart   #重新加载服务

 

问题:

如果发现网页显示的是php的代码,说明解析不了php

第一步,检查是否有php模块

ls  /usr/local/httpd2.4/modules/libphp5.so

 

第二步,如果有文件,但是并没有显示,检查httpd配置文件有没有加载libphp5.so模块

 

第三步,检查是否有加解析php的语句AddType application/x-httpd-php .php ,并查看句子是否写对(httpd-php与.php之间有空格)

 

第四步、检查index.php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值