您的位置:首页 > 运维架构 > 网站架构

LAMP架构(上)

2020-02-02 22:55 771 查看

一、LAMP架构介绍

二、MySQL/Mariadb介绍

三、安装的MySQL

四、安装mariadb

五、安装Apache

六、安装PHP5

七、安装PHP7

八、配置httpd支持php

 

一、LAMP架构介绍

Linux+Apache(httpd)+MySQL+PHP

Linux:操作系统

Apache(httpd):web服务软件

Mysql:存储软件(数据)

PHP:脚本语言

 

三个角色可以在一台机器、也可以分开,但Apache和PHP必须在一起

httpd、PHP、MySQL三者如何工作

Apache和PHP是一个整体,PHP是以一个模块的形式和Apache结合在一起,Apache不能直接和Mysql打交道,只能通过PHP模块去Mysql里面拿数据,拿到数据后,PHP把结果交给Apache,Apache再交给用户,以上行为为动态请求。

 

 

 

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

 

 

三、安装的MySQL

MySQL的几个常用安装包:rpm、源码、二进制免编译(无需配置编译),mysql常用的两个引擎:innodb、myisam。

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                               //下载MySQL的二进制免编译包 (失效后,可前往r.aminglinux.com找最新的下载地址)

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       //将解压的目录该名为mysql,并移动到/usr/local/

cd /usr/local/mysql/             //进入目录

useradd mysql                 //创建用户

mkdir /data/                   //创建datadir的目录

./scripts/mysql_install_db  --user=mysql --datadir=/data/mysql        //初始化mysql

执行初始化报错,由错误提示知道缺少Perl模块及Dumper

yum list |grep perl |grep -i dumper               //模糊查询包含perl、dumper的包,不确定的情况下,可以2个安装包都安装

yum install -y perl-Data-Dumper             //这里缺少的依赖包为第一个

./scripts/mysql_install_db  --user=mysql --datadir=/data/mysql        //重新初始化mysql,无报错    

验证初始化是否成功,输出0,表示初始化执行成功

 

ls /etc/my.cnf                     //系统在/etc/目录底下自带my.cnf配置文件

rpm -qf /etc/my.cnf           //查询该配置文件是哪个安装包的

 

vim  /etc/my.cnf           //可以在原来的配置文件修改参数,这里使用的是在原来的配置文件修改参数

 

或者

cp support-files/my-default.cnf  /etc/my.cnf          //拷贝mysql模板配置文件到/etc/目录,并命名为my.cnf

 

 

cp support-files/mysql.server /etc/init.d/mysqld            //复制启动脚本到/etc/init.d/目录并命名为mysqld

 

vim /etc/init.d/mysqld    //编辑启动脚本,增加如下参数

 

chmod 755 /etc/init.d/mysqld           //将脚本文件的权限更改为755(一般默认为755)

chkconfig --add mysqld       //加入系统服务列表,开机启动

 

service mysqld start          //启动mysql服务,或者用命令/etc/init.d/mysqld start启动服务

 

 

 

如果没有启动脚本的模板时,可以使用命令行的方法启动进程

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &        //指定mysqld_safe的路径,配置文件,用户以及datadir的路径,再使用&符号丢至后台。该方式启动的mysql服务,只能通过 killall mysqld (该命令相对kill更加安全)命令来结束。

killall 数据库时先停止当前的读写操作,把未写入磁盘的数据慢慢写入直到写完,才把进程杀死。

 

 

四、安装mariadb

https://downloads.mariadb.org/            //官网下载地址,选择对应的版本下载

cd /usr/local/src/               //将下载好的安装包放置在该目录

 

tar zxvf mariadb-10.2.19-linux-glibc_214-x86_64.tar.gz            //解压软件包

 

mv mariadb-10.2.19-linux-glibc_214-x86_64 /usr/local/mariadb       //移动软件包到/usr/local/目录下,并命名为mariadb

 

cd /usr/local/mariadb/        //进入mariadb目录下

 

保证已经有创建mysql用户和/data/目录

 

./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb           //初始化数据库

 

验证初始化是否成功

 

cp support-files/my-small.cnf  /usr/local/mariadb/my.cnf      //拷贝配置文件,配置文件不需要修改

 

cp support-files/mysql.server /etc/init.d/mariadb          //拷贝启动脚本

 

vim /etc/init.d/mariadb           //进入启动脚本修改如下内容

 

查找到启动命令指定conf

 

 

ps aux |grep mysql           //先确认无启动mysql服务

/etc/init.d/mariadb start      //启动mariadb服务,报错

 

rpm -qa | grep mariadb       //过滤出mariadb的安装包

rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64      //卸载系统原本的安装包,重新查询确认唔该安装包,重新启动服务

 

ps aux |grep mariadb         //查询服务进程是否启动

netstat -ltnp              //查询服务端口

 

 

当有多个数据库存在的时候,如果没有在配置文件修改datadir的路径,服务默认还是会调用系统/etc/my.conf的配置文件

vim /usr/local/mariadb/my.cnf            //进入mariadb的配置文件路径

 

killall mysqld   //关闭服务

/etc/init.d/mariadb start          //重新启动服务,就会调用定义的配置文件

 

 

 

五、安装Apache

 

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

Apache官网www.apache.org

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

wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.37.tar.gz          //下载源码包

wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz                                        //下载apr

wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz                                //下载apr-util

 

 

tar -zxvf httpd-2.4.37.tar.gz          //解压源码包

tar zxvf apr-1.4.5.tar.gz                 //解压源码包

tar zxvf apr-util-1.3.12.tar.gz        //解压源码包

cd apr-1.4.5         //进入apr目录

./configure –prefix=/usr/local/apr       //安装apr 

make && make install         //编译安装

 

cd apr-util-1.3.12              //进入apr-util目录

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/               //安装apr-util

make && make install         //编译安装

 

cd /usr/local/src/httpd-2.4.37            //进入解压目录

./configure \              //这里的反斜杠是脱义字符,加上它我们可以把一行命令写成多行

--prefix=/usr/local/apache2.4 \

--with-apr=/usr/local/apr \

--with-apr-util=/usr/local/apr-util \

--enable-so \                 // 开启动态模块

--enable-mods-shared=most       // 尽可能多的安装常用的动态模块

 

yum list |grep pcre                //过滤出包含pcre的包

yum install -y pcre-devel       //安装依赖包

 

重新执行命令安装成功

 

make && make install           //编译安装

编译安装完执行echo $? 输出0,表示安装成功

 

cd /usr/local/apache2.4/         //进入httpd安装目录

 

bin:可执行文件

conf:配置文件目录

htdocs:存放默认访问网站

logs:日志

man:帮助文档

modules:扩展模块存放目录

 

 

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

 

其中static(静态模块)会直接编译进httpd主脚本下(即/usr/local/apache2.4/bin/httpd)

而shared(扩展模块):保存在modules目录下

 

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

 

六、安装PHP5

PHP官网www.php.net

当前主流版本为5.6/7.1

 

cd /usr/local/src/            //进入下载目录

wget http://cn2.php.net/distributions/php-5.6.30.tar.gz         //下载链接

tar zxf php-5.6.30.tar.gz                       //解压软件包

cd 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

 

yum list |grep xml2          //过滤出包含xml2的包

yum install -y libxml2-devel                //安装依赖包

 

重新执行命令安装

 

 

yum install -y openssl-devel           //安装依赖包

 

 

继续重新执行命令安装

 

 

yum install -y bzip2-devel        //安装依赖包

 

继续重新执行命令安装

 

yum install -y libjpeg-devel         //安装依赖包

 

继续重新执行命令安装

 

yum install -y libpng-devel        //安装依赖包

 

继续重新执行命令安装

 

yum install -y freetype-devel             //安装依赖包

 

继续重新执行命令安装

 

 

yum install -y epel-release       //先安装扩展源

yum install -y libmcrypt-devel      //安装依赖包

 

继续重新执行命令安装,显示安装成功

 

make && make install           //编译安装,安装完,输入echo $? 看输出为0,表示编译安装成功

 

安装成功后会在apache的模块目录下生成一个php的模块文件,此时删除php也不影响apache,只要该模块依旧存在,php和apache结合起来是通过libphp5.so文件实现的

 

/usr/local/php/bin/php -m       //查看php所加载的模块, 默认状态只有静态模块,但也可以扩展模块

 

vim /usr/local/apache2.4/conf/httpd.conf          //进入httpd配置文件,查看生成的php模块

 

/usr/local/php/bin/php -i |less            //-i参数查看php具体信息

 

php.ini-production             //参考配置文件,适用于线上环境

php.ini-development         //参考配置文件,适用于开发环境、测试环境

cp php.ini-production  /usr/local/php/etc/php.ini           //拷贝配置参数

/usr/local/php/bin/php -i |less           //查看php具体参数

 

 

 

七、安装PHP7

cd /usr/local/src/          //进入下载目录

wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2             //下载源码包

tar jxf php-7.1.6.tar.bz2              //解压源码包

报错,原因是未安装bzip,安装命令:yum -y install bzip2

重新解压成功

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         //编译安装

验证是否执行成功

 

生成libphp7.so模块

 

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

 

vim /usr/local/apache2.4/conf/httpd.conf       //进入apache配置文件,不使用哪个版本的就在前面加#注释

 

八、配置httpd支持php

/usr/local/apache2.4/bin/apachectl restart        //重启apachec

vim /usr/local/apache2.4/conf/httpd.conf       //进入httpd配置文件,修改如下内容

继续重启httpd服务

vim /usr/local/apache2.4/conf/httpd.conf       //进入httpd配置文件,修改如下内容

由于系统安装了5和7两个版本的php,需注释掉其中一个版本,否则系统不知道调用哪个版本的php模块

 

先停止服务,再开启服务,正常,没有出现报错,检查服务是否启动,确认服务端口

 

vim /usr/local/apache2.4/conf/httpd.conf       //进入配置文件修改如下内容,防止打开虚拟主机配置文件时显示403

 

 

 正常访问服务器IP

之所以能正常服务是配置文件指定请求方式为granted

 

vim /usr/local/apache2.4/conf/httpd.conf       //进入配置文件修改如下内容

 

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

 

/usr/local/apache2.4/bin/apachectl graceful         //重新加载配置文件

 

重新服务服务器IP,显示403 forbidden ,无权限访问

 

AddType application/x-httpd-php .php           //支持解析php

vim /usr/local/apache2.4/conf/httpd.conf       //进入配置文件修改如下内容

 

DirectoryIndex index.html index.php          //增加索引页

vim /usr/local/apache2.4/conf/httpd.conf       //进入配置文件修改如下内容

 

检测配置文件,没错误再重新加载配置文件

 

验证apache是否可以解析php

编辑一个测试的php脚本,放在/usr/local/apache2.4/htdocs/目录下

vim /usr/local/apache2.4/htdocs/1.php         //编辑如下内容

 

访问该测试脚本,显示出php的详细信息

 

apache无法解析php的解决思路

a、/usr/local/apache2.4/bin/apachectl -M          //看是否有加载php模块

 

如果没有加载模块,看下是否有libphp5.so这个文件

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

 

如果有配置文件,没加载模块,就要检查配置文件是否有加载LoadModule php5_module        modules/libphp5.so 这行配置

 

 

继续检查配置文件是否增加解析php这行

 

最后检查配置文件是否增加索引页

 

更改php版本,

 

重新加载配置文件

 

正常解析到php7

 

/usr/local/php7/bin/php -i |less                //文本形式显示

转载于:https://my.oschina.net/u/3991860/blog/2966782

  • 点赞
  • 收藏
  • 分享
  • 文章举报
chiluo7579 发布了0 篇原创文章 · 获赞 0 · 访问量 316 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: