LAMP架构【1】

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

 

 

一、LAMP架构介绍

  • LAMP是Linux apache MySQL php的简写,即可吧apache MySQL和PHP安装在Linux系统上,
  • 组成一个坏境来运行PHP的脚本语言,通常是网站。
  • Linux是操作系统
  • apache提供web的一个软件
  • MySQL 存储的一个软件,数据库
  • PHP 脚本语言 
  • 三个角色可以在一台机器、也可以分开,但ApachePHP必须在一起)
  • httpd、PHP、MySQL三者的工作方式。如图:

 

 

二、MySQL_MariaDB介绍

  • MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿刀),2009年sun公司被oracle公司收购(74亿刀)
  • sun公司主要做Java
  • 在后期后学到jdk,jdk 就是由 sun 公司开发的
  • oracle公司,专门做数据库的,都是比较大型的,比如银行等金融企业
  • oracle通常会装在小型机上,小型机和linux不同,叫做 Unix ,操作系统是unix,是收费的
  • 小型机是一个 “超级” 计算机,这个 “超级” 是相比较于你的电脑,比如:有超过几百个CPU,有超过 上T 的内存,这些配置去运行oracle
  • unix系统很稳定,oracle是一个商业公司,安装oracle是需要花钱的
  • 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包——>直接yum安装即可

源码包——>

二进制免编译包——>这种包相当于是在发布之前,先在一台linux服务器上做了编译,编译完之后,把编译完成的文件重新安排放到一个目录下去,然后在打包压缩,最后再发布

  1. 优势:我们不用花更多的时间去配置、去编译,直接拿来就可以使用,这和rpm包有点类似,但rpm包定义不能所安装的路径,默认安装在usr下面;而二进制免编译包可以放到一个目录下
  2. 二进制免编译包,是在其他服务器、Linux平台上编译的,也是可以在centos上使用
  3. 若想追求极致的性能,那最好自己去编译
  • 查询平台是多少位的
  • 二进制的包是区分平台的,是32位,还是64位的
  • 查看平台,用 uname -a 命令查看
  • i686 i586 就是32位平台的
  • x86_64就是64位平台的
  • centos7以64位平台为主,但也有32位的版本,32位的版本是基于64位的基础上又一次编译的

 

  • MySQL的几个常用安装包:rpm、源码、二进制免编译
  • cd /usr/local/src //切换到下载源码包的目录
  • wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz(失效后,可前往r.aminglinux.com找最新的下载地址)
  • tar -zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz //解压
  • 移动解压目录并更名: mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql
  • cd /usr/local/mysql //进入到该目录下
  • useradd mysql //创建一个mysql用户
  • mkdir /data/ //创建一个目录,是为了存放mysql的数据,把数据目录放到这个目录下
  • ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //初始化,所谓初始化就是要生成/data/mysql ,因为mysql要想启动,首先要有一个自带的库,自带的库叫mysql
  • 将mysql自带的配置文件移至系统配置目录下,并修改配置文件,指定datadir的目录,以及socket的目录: cp support-files/my-default.cnf  /etc/my.cnf     (系统默认自带有my.cnf文件)
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d

 

  • 将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
  • 如果想设定启动脚本假如系统服务项,开机启动并启动mysql操作如下:
 [root@gaodehua33 mysql]# chkconfig --add mysqld #把mysqld服务假如到系统服务列表中
 [root@gaodehua33 mysql]# chkconfig mysqld on #使其开机启动
 [root@gaodehua33 mysql]# service mysqld start #启动服务
  • 使用命令 /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更加安全)命令来结束。

kill和killall区别

  • mysql在实时的读写数据,写的速度很快,有可能写入的数据保存在内存里(缓存中),如果这部分缓存并没有同步到磁盘里去,而直接去kill 掉,就意味着你的数据丢失,而使用killall 命令,则会先停止当前的写读操作,然后把没有完成写入到磁盘里的数据在慢慢写入到磁盘里去,直到写完之后才会把进程杀死。
  • 这就意味着如果将来有一天mysqld的进程始终杀不死,等待一分钟还是没有杀死,那说明你的数据量很大,它正在慢慢的写入到磁盘到磁盘里去,这个时候不要强制的使用 kill 9 杀进程,这样非常有可能丢数据,还会损坏你的表。
     

 

四、MariaDB安装 

  • 进入到目录,下载包(默认安装路径 /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
  • 移动至安装目录: cd /usr/local/mariadb
  • 创建用户(与mysql共用,因为之前已创建可以不用再创建):useradd mysql
  • 创建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下则不用)。

  • 修改启动脚本的配置文件#找到300行添加一段 --defaults-file=“$conf”

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

 

五、Apache安装

Apache介绍

  • Apache是一个基金会的名字,它最早就是httpd起家的,因为httpd使用的人很多,很流行,所以当时就以基金会的名字来命名的web服务软件 ,在早期的时候,名字就叫做Apache,而不是叫httpd,后来在http的2.0版本开始,就改名叫httpd,但是很多人还是习惯叫做Apache
  • Apache的主流版本,在之前是 1.3版本比较流行,后来出了2.0版本,2.2版本,2.4版本,现在主流版本是 2.4版本

Apache(2.4版本)

  • 2.2版本和2.4版本的区别
  • 安装的方法不同,涉及到一个安依赖软件apr版本不一样
  • apr和apr-util是一个通用的函数库,它让httpd可以不关心底层的操作系统平台,可以很方便地进行移植(从linux移植到windows)
  • 2.2版本和2.4版本所依赖的apr版本是不同的
  • 而centos系统,默认自带的apr,也就是yum安装的apr和2.4版本是不匹配的,所以无法使用yum安装的apr,所以需要自己去手动编译
  • Apache2.4版本编译起来麻烦,就是因为需要手动编译 apr 和 apr-util 这两个包

移动至/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

相关的依赖包:gcc  expat-devel.x86_64   pcre-devel.x86_64

  • tar zxvf apr-1.6.3.tar.gz
  1. cd /usr/local/src/apr-1.6.3
  2. ./configure --prefix=/usr/local/apr
  3. make && make install
  • tar zxvf apr-util-1.6.1.tar.gz
  1. cd /usr/local/src/apr-util-1.6.1
  2. ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  3. make && make install
  • tar zxvf httpd-2.4.29.tar.gz
  1. cd /usr/local/src/httpd-2.4.29
  2. ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
  3. make && make install
  4. 其中--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.4/bin/httpd -M   或 /usr/local/apache2.4/bin/apachectl -M
  1. 其中static(静态模块)会直接编译进httpd主脚本下(即/usr/local/apache2.4/bin/httpd)。
  2. 而shared(扩展模块):保存在modules目录下
  • 在apache的配置文件中可以修改关闭或开启配置加载模块:/usr/local/apache2.4/conf/httpd.conf
  • 查看端口号——>httpd默认监听端口为80,mysqld默认监听端口为3306,25端口是发邮件的,22端口是远程登录的

 

 

六、安装PHP5

PHP介绍

  • PHP官网www.php.net
  • 目前主流的PHP版本为5.6或7.1版本
  • 现在很多企业是使用PHP 5 的版本,5.4版本或5.3版本,或者使用更老的版本
  • PHP7 的版本是近几年才出来的,7的版本改动很大,所以比较老的程序里面使用PHP7会出现问题,所以很多企业必须使用PHP5 ,而使用PHP7 会出现问题
  • PHP7 性能上得到很大的提升,如果程序,也就是你的PHP代码能够使用PHP7 ,那就使用PHP7 ,否则就使用PHP5

编译PHP5.6

  • 执行命令./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需要的模块,若是没有特殊的要求,直接复制这些参数即可,这些参数是通用的
  •  在此过程中会频繁的出现报错,一般都为缺失某个数据库(大部分以devel结尾),通过yum list|grep 来找出缺失的数据库或程序并安装。
  • 相关的依赖包: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 
     

操作:

  • cd /usr/local/src/
  • wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
  • tar zxvf 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
  • make && make install
  • cp php.ini-production /usr/local/php/etc/php.ini
  • php.ini-development 这个是测试环境用的
  • php.ini-production 这个是线上生产环境用的
  • 安装成功后会在apache的模块目录下生成一个php的模块文件,此时删除php也不影响apache,只要改模块依旧存在:
[root@gaodehua33 php-5.6.30]# du -sh /usr/local/apache2.4/modules/libphp5.so
37M	/usr/local/apache2.4/modules/libphp5.so
  • 查看php加载模块的命令(默认状态只有静态模块,但也可以扩展模块):/usr/local/php/bin/php -m
  • 列出php的一些信息如配置文件地址等:/usr/local/php/bin/php -i

 

 

七、安装PHP7

初始化配置

  1. 这里php7和php5的区别
  2. --prefix=/usr/local/php7这里定义的目录名字是php7
  3. --with-config-file-path=/usr/local/php7/etc这里定义的配置文件路径是php7
  4. 这里只有--with-mysqli,没有--with-mysql,而其他的都类似
  • cd /usr/local/src/
  • wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
  • tar jvxf php-7.1.6.tar.bz2
  • 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
  • cp php.ini-production /usr/local/php7/etc/php.ini
  • 一台机器上安装两个php,两个PHP是可以同时存,但是Apache调用PHP的时候,需要指定好,在——> vim /usr/local/apache2.4/conf/httpd.conf 里面指定使用哪一个PHP即可
  • 可以在httpd 的配置文件中选择开启php5还是php7(只需在参数前#注释掉)

 

八、Apache和PHP结合

  • 在安装好Apache、mysql、httpd,但是还未结合在一起,虽然apche调用了php作为它的模块,但是还不知道是否能解析php,所以现在还是需要编辑Apache的配置文件
  • httpd主配置文件,在/usr/local/apache2.4/conf/httpd.conf
  • 编辑四个地方
  • 定义ServerName,去除 # 号
  • /usr/local/apache2.4/bin/apachectl restart 乍一看是报错信息,其实只是一个警告信息,并不是错误,若想不看到这个提示,可以在 /usr/local/apache2.4/conf/httpd.conf 取消掉
  • 方法:在/usr/local/apache2.4/conf/httpd.conf 中搜索 /ServerName ,然后将 # ServerName www.example.com:80 前的# 去除掉,保存退出即可
     

  • Require all denied 改成Require all granted ,防止打开虚拟主机配置文件时显示403
  • 在iptables中开放80端口:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  • 此时在游览器中输入主机ip可以连通,并显示文字“It works!”
  • 在windows的cmd中可以使用telnet测试端口是否开通(需要在控制面板——程序中开启telnet服务)
  • 每次修改httpd的配置文件后,可以执行命令确保语法准确: /usr/local/apache2/bin/apachectl -t

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

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

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

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

如果遇到php无法解析,则去检查Apache的配置文件

  • 第一项,查看是否加载php5模块,使用/usr/local/apache2.4/bin/apachectl -M命令
  • 如果没有加载这个模块,查看这个模块是否存在。使用 ls /usr/local/apache2.4/modules/libphp5.so查看文件是否存在,若是文件都没有,那么肯定不会加载这个模块
  • 第二项,如果有文件,则没有显示php模块,那么就要去看apache的配置文件中有没有加载 libphp5 这一行配置,在文件中搜索/libphp5 ,如果没有这一行配置,那么肯定也是无法解析的
  • 第三项,检查配置文件中是否加载了 AddType application/x-httpd-php .php 这一行
  • 在 .php 前面有一行空格,需要注意下!不能遗忘!!!——>使用 /usr/local/apache2.4/bin/apachectl -t 可以检查出配置写错了
  • 第四项,检查是否加了 index.php
  • 在访问一个网站的时候,比如访问www.baidu.com的时候,并不用是www.baidu.com/index.php访问,会发现,两个访问出的页面是相同的,就是因为这里有索引页(或者叫做index页),它默认能跳转到这个页面下去,包括直接输入虚拟机ip的时候,也会访问到 It works!这是访问到的是 index.html ,就是因为我们定义了一个index
  • 快捷键 ctrl+r ,可以快速执行命令历史中所用过的一些命令
  • 在快捷键 ctrl+r 之后,然后输入命令的一些字母,就会显示出你使用过的命令

 

 

 

课堂笔记

将默认的yum源更换为阿里云的源:https://my.oschina.net/u/2449787/blog/778145

mysql5.7版本和之前版本初始化的不同: ./bin/mysqld --initialize --user=mysql --datadir=/data/mysql

mysql5.7版本更改用户密码:update user set authentication_string=password('123333') where user='root';

关于版本的小常识:http://www.05bk.com/520.html

mariadb官方yum源安装

wget -O - https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |sh

yum list |grep MariaDB

总结安装软件包的几种方式:

yum/rpm、编译、二进制

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

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值