第十七课LAMP架构上(一)

目录

一、LAMP架构介绍
二、MySQL、MariaDB介绍
三、MySQL安装
四、MariaDB安装
五、Apache安装
六、安装PHP5
七、安装PHP7
八、Apache和PHP结合
九、扩展链接


一、LAMP架构介绍

LAMP是Linux、Apache、MySQL、PHP的简称。linux是操作系统、apache提供web服务、mysql用来存储数据、php是一种脚本语言。LAMP组成的各组件都是开源软件,因此可以很方便的获取,使得这些组件广泛使用,并不断完善发展。

LAMP的工作原理

浏览器向服务器发送http请求,服务器 (Apache) 接受请求,由于php作为Apache的组件模块也会一起启动,它们具有相同的生命周期。Apache会将一些静态资源保存,然后去调用php处理模块进行php脚本的处理。脚本处理完后,Apache将处理完的信息通过http response的方式发送给浏览器,浏览器解析,渲染等一系列操作后呈现整个网页。

lambda架构实例 lamp架构的四个构成组件_lambda架构实例

php和mysql之间是动态请求(如用户的登录操作就会用到)

而如果只是查看图片就是静态请求,apache可以直接解析。不会用到php和mysql动态请求。(mysql不能存图片等文件)


二、MySQL、MariaDB介绍

MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿美金),2009年sun公司被oracle公司收购(74亿美金),Mysql最终归入Oracle公司。

MySQL官网https://www.mysql.com。

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

Mysql的版本介绍

Community 社区版本,Enterprise 企业版,GA(Generally Available)指通用版本,在生产环境中用的,DMR(Development Milestone Release)开发里程碑发布版,RC(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本


三、MySQL安装

Myql主要有三种安装方式

1.yum安装,缺少定制功能,安装简单。

2.二进制免编译安装包安装,有足够的可定制性,性能基本也不会损失。安装速度也比较快。推荐使用。

3.源代码编译安装。可以按需定制,可以提供最高的性能,编译耗费的时间长,安装速度慢。

这里以源代码包编译安装为例

1.环境:
CentOS Linux release 7.4.1708 (Core)
mysql-5.6.36.tar.gz

2.依赖包安装
yum -y install gcc gcc-c++ ncurses-devel perl cmake autoconf

3.创建mysql的数据库存放目录
mkdir -p /data/mysql

4、 创建mysql用户及用户组
useradd -r mysql -s /sbin/nologin
id mysql

5.设置mysql的数据库存放目录权限
chown -R mysql:mysql /data/mysql

6.编译安装MySQL
cd /usr/local/src
//下载,地址仅供参考。
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz -O /usr/local/src
tar -zxvf mysql-5.6.36.tar.gz
cd mysql-5.6.36
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 - DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data/mysql -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1
echo $?
make && make install
echo $?

7.配置MySQL
7.1 初始化配置
cd /usr/local/mysql
进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql

7.2 设置配置文件
\cp ./support-files/my-default.cnf /etc/my.cnf
修改配置文件
vim /etc/my.cnf 修改如下如下内容:
basedir = /usr/local/mysql
datadir = /data/mysql

7.3启动MySQL
添加服务,拷贝服务脚本到init.d目录,并设置开机启动
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on
service mysqld start --启动MySQL
ss -nat |grep 3306
LISTEN 0 80 :::3306 ::😗

8、设置PATH(否则不能直接调用mysql)
修改/etc/profile文件,在文件末尾添加
export PATH=/usr/local/mysql/bin:$PATH

关闭文件,运行下面的命令,让配置立即生效
source /etc/profile

Error
FATAL ERROR: please install the following Perl modules before executing scripts/mysql_install_db:
Data::Dumper
解决:yum -y install autoconf


四、MariaDB安装

以源代码包安装为例

1.环境:
CentOS Linux release 7.4.1708 (Core)
mariadb-5.5.57.tar.gz

2.依赖包安装
yum -y install gcc gcc-c++ ncurses-devel perl cmake autoconf

3.创建mariadb的数据库存放目录
mkdir -p /data/mariadb

4、 创建mariadb用户及用户组
useradd -r mariadb -s /sbin/nologin
id mariadb

5.设置mariadb的数据库存放目录权限
chown -R mariadb:mariadb /data/mariadb

6.编译安装Mmariadb
cd /usr/local/src
//下载,地址仅供参考。
wget https://mirrors.shu.edu.cn/mariadb//mariadb-5.5.60/source/mariadb-5.5.60.tar.gz -O /usrlocal/src
tar -zxvf mariadb-5.5.60
cd mariadb-5.5.60
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb
-DSYSCONFDIR=/etc
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all
echo $?
make && make install
echo $?

7.配置mariadb

7.1 初始化配置
cd /usr/local/mariadb
进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表
scripts/mysql_install_db --basedir=/usr/local/mariadb --datadir=/data/mariadb --user=mariadb

7.2 设置配置文件
\cp ./support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mariadbd
cd /etc/init.d
chkconfig mariadbd on
修改配置文件
vim /etc/my.cnf 修改如下内容:
basedir = /usr/local/mariadb
datadir = /data/mariadb
//启动mariadb
/etc/init.d/mariadbd start

8.设置mariadb环境变量
echo "export PATH=$PATH:/usr/local/mariadb/bin">>/etc/profile

9.安全初始化mysql及设定
/usr/local/mysql/bin/mysql_secure_installation

10.登录测试
mysql -uroot -p


五、Apache安装

1.环境
CentOS Linux release 7.4.1708 (Core)
httpd-2.4.33
apr-1.6.3
apr-util-1.6.1

2.下载软件包
wget https://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz -O /usr/local/src/apr-1.6.3.tar.gz
wget https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz -O /usr/local/src/apr-util-1.6.1.tar.gz
wget https://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz -O /usr/local/src/httpd-2.4.33.tar.gz

3.依赖包
yum -y install libtool libtool-ltdl-devel.x86_64 expat-devel pcre.x86_64 pcre-devel.x86_64
如无gcc,可将开发工具组装上
rpm -q gcc
yum group -y install "Development Tools"

4.编译安装

4.1 解压软件包
cd /usr/local/src/
tar zxvf httpd-2.4.33.tar.gz
tar zxvf apr-1.6.3.tar.gz
tar zxvf apr-util-1.6.1.tar.gz

4.2 编译安装apr
cd apr-1.6.3/
./configure --prefix=/usr/local/apr
echo $?
make && make install
echo $?

4.3编译安装apr-util
cd ../apr-util-1.6.1/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
echo $?
make && make install
echo $?

4.4编译安装httpd
cd ../httpd-2.4.33/
./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
echo $?
make && make install
echo $?

4.5防火墙规则设定及selinux状态
systemctl status firewalld.service
firewall-cmd --get-default-zone
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

getenforce

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

4.7测试
服务端查看端口
netstat -nltup | grep :80

从宿主机访问

lambda架构实例 lamp架构的四个构成组件_lambda架构实例_02

[root@lanquark httpd-2.4.33]# curl 127.0.0.1

It works!

Error 1
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory

include

解决:yum -y install expat-devel

Error 2
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/ 解决:yum -y install pcre.x86_64 pcre-devel.x86_64

Error 3
collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] Error 1
解决:yum -y install libtool-ltdl-devel.x86_64
注意:如果已经编译过了apr-util,需要重新编译

Error 4
configure: error: no acceptable C compiler found in $PATH
解决:yum group -y install "Development Tools"

//bin/apachectl -t测试配置语法

//重载配置
[root@localhost apache2.4]# bin/apachectl --gracefully
httpd (pid 50431) already running


六、安装PHP5

1.环境

CentOS Linux release 7.4.1708 (Core)
php5.5.38

2.依赖安装

yum -y install libxml2-devel libpng-devel openssl openssl-devel bzip2 bzip2-devel libjpeg-devel freetype-devel libmcrypt.x86_64 libmcrypt-devel.x86_64

3.编译安装php

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
echo $?
cp php.ini-production /usr/local/php/etc/php.ini

Error
Cannot find OpenSSL's <evp.h>
yum install openssl openssl-devel

configure: error: Please reinstall the BZip2 distribution
yum install bzip2 bzip2-devel

configure: error: jpeglib.h not found.
yum -y install libjpeg-devel

configure: error: freetype-config not found.
yum install freetype-devel

configure: error: mcrypt.h not found. Please reinstall libmcrypt.
libmcrypt.x86_64 libmcrypt-devel.x86_64


七、安装PHP7

1.环境

CentOS Linux release 7.4.1708 (Core)
php-7.2.7.tar.gz

2.依赖安装

yum -y install libxml2-devel libpng-devel openssl openssl-devel bzip2 bzip2-devel libjpeg-devel freetype-devel libmcrypt.x86_64 libmcrypt-devel.x86_64 pcre pcre-devel
libxslt libxslt-devel

3.编译安装php

cd /usr/local/src/
wget http://php.net/get/php-7.2.7.tar.gz/from/a/mirror tar php-7.2.7.tar.gz
cd php-7.2.7
./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip
make && make install
echo $?
cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/bin


八、Apache和PHP结合

1.配置httpd支持php
httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf //修改以下4个地方
ServerName-->我改的localhost
Require all denied-->Require all granted
AddType application/x-httpd-php .php-->增加这一行
DirectoryIndex index.html index.php-->增加 index.php
//修改配置文件后测试语法
/usr/local/apache2.4/bin/apachectl -t
//启动服务
/usr/local/apache2.4/bin/apachectl start
//重载配置文件
/usr/local/apache2.4/bin/apachectl graceful

2.验证

curl localhost

//增加如下内容,验证php解析是否正常

vim /usr/local/apache2.4/htodcs/index.php   
<?php  
phpinfo;  
?>
curl localhost/index.php


九、扩展链接

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