内容摘要:
一、LAMP架构介绍
二、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
- 将mysql自带的配置文件移至系统配置目录下,并修改配置文件,指定datadir的目录,以及socket的目录: cp support-files/my-default.cnf /etc/my.cnf (系统默认自带有my.cnf文件)
- 将mysql自带的脚本文件移至chkconfig的执行目录下,并定义basedir(程序目录)和datadir: cp support-files/mysql.server /etc/init.d/mysqld
- 将脚本文件的权限更改为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路径
- 复制脚本文件:cp support-files/mysql.server /etc/init.d/mariadb
- 编辑配置文件:设置basedir和datadir的目录,因为自定义配置文件的缘故还要在加注一条配置文件的路径(若默认在etc下则不用)。
- 启动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)。
- wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.34.tar.gz
- wget http://mirrors.cnnic.cn/apache/apr/apr-1.3.tar.gz
- 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/常用的几个目录
- 启动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结合
- 在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.
- 重新加载配置文件:/usr/local/apache2/bin/apachectl graceful
- 增加一条php的配置,AddType application/x-httpd-php .php ,如图:
九、课堂笔记
- LAMP是Linux、Apache、MySQL、PHP的简称。linux是操作系统、apache提供web服务、mysql用来存储数据、php是一种脚本语言。LAMP组成的各组件都是开源软件,因此可以很方便的获取,使得这些组件广泛使用,并不断完善发展。
- 浏览器向服务器发送http请求,服务器 (Apache) 接受请求,由于php作为Apache的组件模块也会一起启动,它们具有相同的生命周期。Apache会将一些静态资源保存,然后去调用php处理模块进行php脚本的处理。脚本处理完后,Apache将处理完的信息通过http response的方式发送给浏览器,浏览器解析,渲染等一系列操作后呈现整个网页。
- php和mysql之间是动态请求(如用户的登录操作就会用到),而如果只是查看图片就是静态请求,apache可以直接解析。不会用到php和mysql动态请求。(mysql不能存图片等文件)
-
将apr和apr-util源码包移动到/usr/local/src/httpd-2.4.34/srclib目录下
- 源码安装apache:./configure --prefix=/usr/local/apache2.4 --enable-so --enable-mpms-shared=all --with-mpm=event --enable-mods-shared=most --with-included-apr
- make&&make install
十、扩展
- mysql5.5源码编译安装: http://www.aminglinux.com/bbs/thread-1059-1-1.html
- mysql5.7二进制包安装(变化较大): http://www.apelearn.com/bbs/thread-10105-1-1.html
- 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
- 查看编译参数: http://ask.apelearn.com/question/1295