LAMP架构【1】
LAMP架构介绍MySQL、MariaDB介绍MySQL安装MariaDB安装Apache安装安装PHP5安装PHP7Apache和PHP结合一、LAMP架构介绍LAMP是Linux apache MySQL php的简写,即可吧apache MySQL和PHP安装在Linux系统上,组成一个坏境来运行PHP的脚本语言,通常是网站。Linux是...
一、LAMP架构介绍
- LAMP是Linux apache MySQL php的简写,即可吧apache MySQL和PHP安装在Linux系统上,
- 组成一个坏境来运行PHP的脚本语言,通常是网站。
- Linux是操作系统
- apache提供web的一个软件
- MySQL 存储的一个软件,数据库
- PHP 脚本语言
- 三个角色可以在一台机器、也可以分开,但Apache和PHP必须在一起)
- 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服务器上做了编译,编译完之后,把编译完成的文件重新安排放到一个目录下去,然后在打包压缩,最后再发布
- 优势:我们不用花更多的时间去配置、去编译,直接拿来就可以使用,这和rpm包有点类似,但rpm包定义不能所安装的路径,默认安装在usr下面;而二进制免编译包可以放到一个目录下
- 二进制免编译包,是在其他服务器、Linux平台上编译的,也是可以在centos上使用
- 若想追求极致的性能,那最好自己去编译
- 查询平台是多少位的
- 二进制的包是区分平台的,是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,然后下载三个程序的源码包:
- 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
相关的依赖包:gcc expat-devel.x86_64 pcre-devel.x86_64
- tar zxvf apr-1.6.3.tar.gz
- cd /usr/local/src/apr-1.6.3
- ./configure --prefix=/usr/local/apr
- make && make install
- tar zxvf apr-util-1.6.1.tar.gz
- cd /usr/local/src/apr-util-1.6.1
- ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
- make && make install
- tar zxvf httpd-2.4.29.tar.gz
- cd /usr/local/src/httpd-2.4.29
- ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
- make && make install
- 其中--enable-so选项为开启动态模块、--enable-mods-shared=most尽可能多的安装常用的动态模块。
- 在httpd的安装目录/usr/local/apache2.4/常用的几个目录
- 查看httpd开启的模块命令:/usr/local/apache2.4/bin/httpd -M 或 /usr/local/apache2.4/bin/apachectl -M
- 在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
初始化配置
- 这里php7和php5的区别
- --prefix=/usr/local/php7这里定义的目录名字是php7
- --with-config-file-path=/usr/local/php7/etc这里定义的配置文件路径是php7
- 这里只有--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
更多推荐
所有评论(0)