LAMP架构 (1)

内容摘要:

  •  LAMP架构介绍
  • MySQL、MariaDB介绍
  • MySQL安装
  • MariaDB安装
  • Apache安装
  • 安装PHP5
  • 安装PHP7
  • Apache和PHP结合
  • 扩展

一、LAMP架构介绍

  • LAMP的架构组成包括: Linxu + Apache(httpd)+MySQL+PHP
  1. Apache 提供web服务
  2. MySQL 动态的数据库
  3. PHP 编程语言,比较高级。网站用的较多。
  • 三个角色可以在一台机器、也可以分开,但Apache和PHP必须在一起)
  • httpd、PHP、MySQL三者的工作方式。如图:

LAMP架构 (1)_第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内部测试版本(不对外测试的版本)

三、MySQL的安装

MySQL常用的安装方法:rpm、源码(与一般的源码包稍有不同,可以查看相关的文档)、二进制的免编译(无需配置编译),mysql常用的两个引擎:innodb、myisam。

  • 首先移至: cd /usr/local/src/  目录下
  • 下载MySQL的二进制免编译包: wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz    (失效后,可前往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目录下: cd /usr/local/mysql
  • 创建一个新用户:useradd mysql
  • 创建datadir的目录: mkdir /data/
  • 初始化mysql,指定用户和data目录:./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
  1. 需要的依赖包: perl-DBD-MySQL
  • 将mysql自带的配置文件移至系统配置目录下,并修改配置文件,指定datadir的目录,以及socket的目录: cp support-files/my-default.cnf  /etc/my.cnf     (系统默认自带有my.cnf文件)

LAMP架构 (1)_第2张图片

  • 将mysql自带的脚本文件移至chkconfig的执行目录下,并定义basedir(程序目录)和datadir: cp support-files/mysql.server /etc/init.d/mysqld

LAMP架构 (1)_第3张图片

  • 将脚本文件的权限更改为755(一般默认为755):chmod 755 /etc/init.d/mysqld
  • 将脚本文件加入到chkconfig服务中: chkconfig --add mysqld
  • 使用命令 /etc/init.d/mysqld start service start mysqld 启动服务,如图:

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

四、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 (失效后,可前往r.aminglinux.com找最新的下载地址)
  • 解压安装包: 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
  • 创建用户(与mysql共用,因为之前已创建可以不用再创建):useradd mysql
  • 移动至安装目录: cd /usr/local/mariadb
  • 创建datadir目录:mkdir /data/mariadb   (为了与mysql区分,在data下再创建一个目录)
  • 初始化mariadb:./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb --datadir=/data/mariadb   (防止初始化错误与mysql冲突,需指定basedir的路径)
  • 在目录/usr/local/mariadb/support-files下有多个配置文件模板,最大的差异是它们的缓存大小不同,根据你的内存大小选择配置模板,此处我们选择最小缓存的配置文件:my-small.cnf
  • 复制配置文件,防止与mysql的配置文件冲突不放在/etc/目录下:    cp my-small.cnf /usr/local/mariadb/my.cnf        若不在此处指定datadir的路径,当系统装有mysql时会调用mysql配置文件中的datadir路径

LAMP架构 (1)_第4张图片

  • 复制脚本文件:cp support-files/mysql.server /etc/init.d/mariadb
  • 编辑配置文件:设置basedir和datadir的目录,因为自定义配置文件的缘故还要在加注一条配置文件的路径(若默认在etc下则不用)。

LAMP架构 (1)_第5张图片

  •  在配置文件的启动项处,添加配置文件的启动路径:

LAMP架构 (1)_第6张图片

 

  • 启动mariadb服务(启动前需关闭mysql):/etc/init.d/mariadb start
  • 当系统装有mysql和mariadb两个数据库文件时,安装mysql的配置文件会影响的mariadb,如未在mariadb的配置文件下为datadir指定目录时,就会导致mariadb会去mysql的配置文件下寻找datadir的路径。

五、Apache安装

Apache是一个基金会的名字,httpd才是我们要安装的软件包,早期它的名字就叫apache。Apache官网www.apache.org 。安装httpd时用到的apr和apr-util是一个通用的函数库,它可以让httpd可以不关心底层的操作系统平台,可以很方便地移植(从linux移植到windows)。

  • 移动至/usr/local/src,然后下载三个程序的源码包:
  1.  wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.34.tar.gz
  2.  wget http://mirrors.cnnic.cn/apache/apr/apr-1.3.tar.gz
  3.  wget http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz
  • 按先后顺序安装编译apr、apr-util、apache
  • 生成apr的安装目录并编译后安装:./configure --prefix=/usr/local/apr && make && make install
  • 生成apr-util的安装目录并编译后安装:./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
  • 生成httpd的安装目录并编译后安装./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most      其中--enable-so选项为开启动态模块、--enable-mods-shared=most尽可能多的安装常用的动态模块。
  • 在httpd的安装目录/usr/local/apache2.4/常用的几个目录
  1. bin:启动进程的目录
  2. conf: 配置文件所在目录
  3. htdocs:访问网站时,默认网站会放置在这个目录下
  4. logs:日志目录
  5. man:帮助文档
  6. modules:扩展模块
  • 查看httpd开启的模块命令:/usr/local/apache2/bin/httpd -M   或 /usr/local/apache2.4/bin/apachectl -M
  1. 其中static(静态模块)会直接编译进httpd主脚本下(即/usr/local/apache2.4/bin/httpd)。
  2. 而shared(扩展模块):保存在modules目录下
  • 启动httpd(apache):/usr/local/apache2/bin/apachectl start
  • 在apache的配置文件中可以修改关闭或开启配置加载模块:/usr/local/apache2/conf/httpd.conf
  • 相关的依赖包:gcc  expat-devel.x86_64   pcre-devel.x86_64

六、安装PHP5

PHP官网www.php.net,当前主流版本为5.6/7.1。

  • 下载源码包:wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2
  • 解压源码包: tar -jxvf php-5.6.32.tar.bz2
  • 移至解压后的cd php-5.6.32目录下执行命令: ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/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                   在此过程中会频繁的出现报错,一般都为缺失某个数据库(大部分以devel结尾),通过yum list|grep 来找出缺失的数据库或程序并安装。
  • 最后进行编译和安装: make && make install
  • 安装成功后会在apache的模块目录下生成一个php的模块文件,此时删除php也不影响apache,只要改模块依旧存在:

  • 查看php加载模块的命令(默认状态只有静态模块,但也可以扩展模块):/usr/local/php/bin/php/ -m
  • 列出php的一些信息如配置文件地址等:/usr/local/php/bin/php/ -i
  • 复制模板配置文件: cp php.ini-production /usr/local/php/etc/php.ini
  • 相关的依赖包:libxml2-devel.x86_64   openssl-devel.x86_64  bzip2-devel.x86_64 libjpeg-turbo-devel.x86_64   libpng-devel.x86_64  freetype-devel.x86_64  libmcrypt.x86_64 

七、安装PHP7

  • 下载php7的源码包:wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
  • 解压源码包: tar -jxvf php-7.1.6.tar.bz2
  • 移至解压后的cd php-7.1.6目录下执行命令:./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2/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
  • 可以在httpd 的配置文件中选择开启php5还是php7(只需在参数前#注释掉)

八、Apache和PHP结合

  • 在重启和启动Apache时,会出现提示设置ServerName的情况虽然该提示并不是报错,但也可通过修改配置文件的方法,让它不再出现,提示如图:

  • 修改配置文件 vim /usr/local/apache2/conf/httpd.conf  ,将ServerName前的#删除即可。

LAMP架构 (1)_第7张图片

  • 当出现如图报错时,可能是因为同时启用PHP5和PHP7的缘故,将配置文件中两者中的一个注释掉即可:

  • 注释掉php7,再次重启即可:

LAMP架构 (1)_第8张图片

  • 在iptables中开放80端口:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  • 在windows的cmd中可以使用telnet测试端口是否开通(需要在控制面板——程序中开启telnet服务)
  • 此时在游览器中输入主机ip可以连通,并显示文字“It works!”
  • Require all denied 修改为 Require all granted 防止打开虚拟主机配置文件时显示403.

LAMP架构 (1)_第9张图片

  • 每次修改httpd的配置文件后,可以执行命令确保语法准确: /usr/local/apache2/bin/apachectl -t

  • 重新加载配置文件:/usr/local/apache2/bin/apachectl graceful
  • 增加一条php的配置,AddType application/x-httpd-php .php ,如图:

LAMP架构 (1)_第10张图片

  • 增加一个索引页的配置,DirectoryIndex index.html index.php ,如图:

LAMP架构 (1)_第11张图片

  • 在htodcs目录下增加一个php的文件:vim /usr/local/apache2/htodcs/test.php ,增加一个文件不需要重启或加载配置文件,内容如下:

LAMP架构 (1)_第12张图片

  • 在游览器中输入ip和文件名:
  • 成功解析如图:

LAMP架构 (1)_第13张图片

九、扩展

  • LAMP架构介绍
  1. LAMP是Linux、Apache、MySQL、PHP的简称。linux是操作系统、apache提供web服务、mysql用来存储数据、php是一种脚本语言。LAMP组成的各组件都是开源软件,因此可以很方便的获取,使得这些组件广泛使用,并不断完善发展。
  • LAMP的工作原理
  1. 浏览器向服务器发送http请求,服务器 (Apache) 接受请求,由于php作为Apache的组件模块也会一起启动,它们具有相同的生命周期。Apache会将一些静态资源保存,然后去调用php处理模块进行php脚本的处理。脚本处理完后,Apache将处理完的信息通过http response的方式发送给浏览器,浏览器解析,渲染等一系列操作后呈现整个网页。
  2. php和mysql之间是动态请求(如用户的登录操作就会用到),而如果只是查看图片就是静态请求,apache可以直接解析。不会用到php和mysql动态请求。(mysql不能存图片等文件)

LAMP架构 (1)_第14张图片

  • LAMP用于运行PHP开发的网站
  • 目前主流的web编程语言:php、java;
  • 抓包工具: fiddler
  • 另一种源码安装方式:
  1. 将apr和apr-util源码包移动到/usr/local/src/httpd-2.4.34/srclib目录下
  2. 源码安装apache:./configure --prefix=/usr/local/apache2.4  --enable-so --enable-mpms-shared=all  --with-mpm=event  --enable-mods-shared=most --with-included-apr
  3. make&&make install
  • apache的三种工作模式(apache2.4默认event工作模式):perfork(多进程)、worker(多进程多线程)、event(多进程多线程和一条监控线程) 

十、扩展

  • apache dso: https://yq.aliyun.com/articles/6298
  • apache apxs: https://wizardforcel.gitbooks.io/apache-doc/content/51.html
  • apache工作模式: http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html
  • php中mysql,mysqli,mysqlnd,pdo到底是什么: http://blog.csdn.net/u013785951/article/details/60876816

你可能感兴趣的:(笔记)