源码编译构建LAMP架构

目录

 


 

一、LAMP介绍

LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态 Web 站点服务及其应用开发环境。LAMP 是一个缩写词,具体包括 Linux 操作系统、Apache 网站服务器、MySQL 数据库服务器、PHP(或 Perl、Python)网页编程语言。本章将以源码编译的方式搭建 LAMP 环境,能够满足企业定制化的需求。在构建 LAMP 平台时,各组件的安装顺序依次为 Linux、Apache、MySQL、PHP。其中 Apache 和 MySQL 的安装并没有严格的顺序;而 PHP 环境的安装一般放到最后,负责沟通 Web 服务器和数据库系统以协同工作。

 

 

二、Apache简介

2.1、“Apache HTTP Server”是开源软件项目的杰出代表,基于标准的 HTTP 网络协议提供网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。Apache 服务器可以运行在 Linux、UNIX、Windows 等多种操作系统平台中。

2.2、Apache 服务器是针对之前出现的若干个 Web 服务器程序进行整合、完善后形成的软件,其名称来源于“A Patchy Server”,意思是“基于原有 Web 服务程序的代码进行修改(补丁)后形成的服务器程序”。

2.3、1995 年, Apache 服务程序发布了 1.0 版本,之后一直由“Apache Group”负责该项目的管理和维护;直到 1999 年,在“Apache Group”的基础上成立了 Apache 软件基金会(Apache Software Foundation,ASF)。目前,Apache 项目一直由 ASF 负责管理和维护。ASF 是非盈利性质的组织,最初只负责“Apache Web”服务器项目的管理,随着 Web应用需求的不断扩大,ASF 逐渐增加了许多与 Web 技术相关的开源软件项目,因此 Apache现在不仅仅代表着 Web 服务器,更广泛地代表着 ASF 管理的众多开源软件项目。ASF 基金会的官方网站是 http://www.apache.org/

2.4、“Apache HTTP Server”是 ASF 旗下著名的软件项目之一,其正式名称是“httpd”,也就是历史上的 Apache 网站服务器。在后续内容中,若未作特殊说明,使用“Apache”或者“httpd”,均指的是“Apache HTTP Server”。

 

 

三、Apache特点

3.1、开放源代码:这是 Apache 服务器的重要特性之一,也是其他特性的基础。Apache 服务程序由全世界的众多开发者共同维护,并且任何人都可以*使用,这充分体现了开源软件的精神。

3.2、跨平台应用:这个特性得益于 Apache 的源代码开放。Apache 服务器可以运行在绝大多数软硬件平台上,所有 UNIX 操作系统都可以运行 Apache 服务器,甚至 Apache 服务器可以良好地运行在大多数 Windows 系统平台中。Apache 服务器的跨平台特性使其具有被广泛应用的条件。

3.3、支持各种Web 编程语言:Apache服务器可支持的网页编程语言包括PerlPHP、

Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中使用。支持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。

3.4、模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过标准的模块实现专有的功能,这为 Apache 服务器带来了良好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加 Apache 本身并不具有的其他功能。

3.5、运行非常稳定:Apache 服务器可用于构建具有大负载访问量的 Web 站点,很多知名的企业网站都使用 Apache 作为 Web 服务软件。

3.6、良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共同具有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,为 Apache 的所有使用者提供尽可能安全的服务器程序。

 

四、搭建LAMP

4.1、搭建YUM仓库

1 [[email protected] ~]# mount /dev/cdrom /mnt    
2 [[email protected] ~]# cd /etc/yum.repos.d/
3 [[email protected] yum.repos.d]# ll
4 [[email protected] yum.repos.d]# mkdir backup
5 [[email protected] yum.repos.d]# mv C* backup/
6 [[email protected] yum.repos.d]# cp backup/CentOS-Base.repo local.repo
7 [[email protected] yum.repos.d]# vi local.repo
1 [centos]
2 name=centos
3 baseurl=file:///mnt
4 gpgcheck=0
5 enabled=1
6 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[[email protected] yum.repos.d]# yum clean all
[[email protected] yum.repos.d]# yum makecache
[[email protected] yum.repos.d]# systemctl stop firewalld
[[email protected] yum.repos.d]# setenforce 0

4.2、编译安装HTTP服务

4.2.1、利用xftp连接虚拟机,将上面软件包传到/opt目录下

 个人对源码编译构建LAMP架构认识

软件包说明:apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz(工具)是跨平台的组件包

要测APR给tomcat带来的好处最好的方法是在慢速网络上(模拟Internet),将Tomcat线程数开到300以上的水平,然后模拟一大堆并发请求。如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来。

APR对于Tomcat最大的作用就是socket调度。你在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用apr是非常必要的。

4.2.2、解压缩软件包

1 [[email protected] ~]# cd /opt
2 [[email protected] opt]# ll
3 [[email protected] opt]# tar xf apr-1.6.2.tar.gz
4 [[email protected] opt]# tar xf apr-util-1.6.0.tar.gz
5 [[email protected] opt]# tar xf httpd-2.4.29.tar.bz2    ###yum -y install bzip2
6 [[email protected] opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
7 [[email protected] opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util 
yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl

依赖环境包包说明:

gcc                   ###C语言的编译器

gcc-c++             ###C++的编译器

make                ###源代码编译(源代码转换成二进制文件)

pcre-devel       ###支持正则表达式

expat-devel      ###网站解析HTML文件

perl                ###perl编译器

4.2.4、./configure

1 [[email protected] opt]# cd /opt/httpd-2.4.29/
2 ./configure \
3 --prefix=/usr/local/httpd \
4 --enable-so \
5 --enable-rewrite \
6 --enable-charset-lite \
7 --enable-cgi

配置模块解释:

--prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd

--enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。

--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。

--enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码

--enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。

4.2.5、编译及安装并优化执行路径

1 make && make install        ###先make -j3   然后make install   -j3是你核心数,最大不要超过虚拟机的核心数
2 ####优化执行路径####
3 ln -s /usr/local/httpd/conf/httpd.conf /etc/
4 ln -s /usr/local/httpd/bin/* /usr/local/bin/
5 httpd -v      ###查看下HTTP版本

4.2.6、建立[service].service 配置文件添加系统给服务

在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,用于控制由 systemd 管理或监控的 httpd 服务

1 [[email protected] ~]# cd /lib/systemd/system/
2 [[email protected] system]# vim httpd.service
1 [Unit]
2 Description=The Apache HTTP Server
3 After=network.target
4 [Service]
5 Type=forking
6 PIDFile=/usr/local/httpd/logs/httpd.pid
7 ExecStart= /usr/local/bin/apachectl $OPTIONS
8 ExecrReload= /bin/kill -HUP $MAINPID
9 [Install]
10 WantedBy=multi-user.target

4.2.7、开启服务,设置开机自启,检查HTTP单元开机启动状态

1 [[email protected] system]# systemctl start httpd.service
2 [[email protected] system]# systemctl enable httpd.service         ###开机自启http
3 [[email protected] system]# systemctl is-enabled httpd.service   ###检查HTTP单元是否启动

4.2.8、httpd.conf修改配置文件并重启服务

1 [[email protected] system]# vi /etc/httpd.conf 
2 ServerName www.xuhao.com:80 
3 [[email protected] system]# systemcti restart httpd

4.2.9、主机测试

在windows中添加主机映射记录,在C:\Windows\System32\drivers\etc目录下有个hosts文件,以记事本方式打开并在末尾添加,打开浏览器测试

 个人对源码编译构建LAMP架构认识

 个人对源码编译构建LAMP架构认识

 个人对源码编译构建LAMP架构认识

httpd.conf配置文件解读

全局配置项

全局配置决定 httpd 服务器的全局运行参数,使用“关键字 值”的配置格式。例如,配置网站名称时使用的“ServerName www.kgc.com”,其中“ServerName”为配置关键字,而“www.kgc.com”为对应的值。 每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中。以下列出了 httpd.conf 文件中最常用的一些全局配置项

 1 ServerRoot "/usr/local/httpd"
 2 Listen 80
 3 User daemon
 4 Group daemon
 5 ServerAdmin [email protected]
 6 ServerName www.kgc.com
 7 DocumentRoot "/usr/local/httpd/htdocs"
 8 DirectoryIndex index.htmlindex.php
 9 ErrorLog "logs/error_log"
10 LogLevel warn
11 CustomLog logs/access_log
12 common PidFile logs/httpd.pid
13 AddDefaultCharset UTF-8
14 Include conf/extra/httpd-default.conf

在上述设置行中,各全局配置项的含义如下:

ServerRoot:设置 httpd 服务器的根目录,该目录下包括了运行 Web 站点必需的子目录和文件。默认的根目录为/usr/local/httpd,与 httpd 的安装目录相同。在httpd.conf 配置文件中,如果指定目录或文件位置时不使用绝对路径,则目录或文位置都认为是在服务器的根目录下

Listen:设置 httpd 服务器监听的网络端口号,默认为 80

User:设置运行 httpd 进程时的用户身份,默认为 daemon

Group:设置运行 httpd 进程时的组身份,默认为 daemon

ServerAdmin:设置 httpd 服务器的管理员 E-mail 地址,可以通过此 E-mail 地址及 时联系 Web 站点的管理员

ServerName:设置 Web 站点的完整主机名(主机名+域名)

DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。此配置 项比较容易和 ServerRoot 混淆,需要格外注意

DirectoryIndex:设置网站的默认索引页(首页),可以设置多个首页文件,以空格 分开,默认的首页文件为 index.html

ErrorLog:设置错误日志文件的路径,默认路径为 logs/error_log。LogLevel:设置记录日志的级别,默认级别为 warn(警告)

CustomLog:设置访问日志文件的路径、日志类型,默认路径为 logs/access_log,使用的类型为 common(通用格式)

PidFile:设置用于保存 httpd 进程号(PID)的文件,默认保存地址为 logs/httpd.pid, logs 目录位于 Apache 的服务器根目录下

AddDefaultCharset:设置站点中的网页默认使用的字符集编码,如 UTF-8、gb2312 Include:包含另一个配置文件的内容,可以实现将一些特殊功能的配置放到一个单 独的文件中,再使用 Include 配置项将其包含到 httpd.conf 文件中,这样便于独立 进行配置功能的维护而不影响主配置文件。 以上配置项是 httpd.conf 文件中主要的全局配置项。还有其他很多配置项

区域配置项

除了全局配置项以外,httpd.conf 文件中的大多数配置是包括在区域中的。区域配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置

1 <Directory />                           ###定义"/"目录区域的开始
2        Options FollowSymLinks          ###控制选项,允许使用符号链接
3        AllowOverride None         ###不允许隐含控制文件中的覆盖配置
4        Require all denied                    ###禁止任何人访问此区域
5 </Directory>                            ###定义"/"目录区域的结束

4.3、构建虚拟主机

虚拟 Web 主机指的是在同一台服务器中运行多个 Web 站点,其中的每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。使用 httpd 可以非常方便地构建虚拟主机服务器,只需要运行一个 httpd 服务就能够同时支撑大量的 Web 站点。httpd 支持的虚拟主机类型包括以下三种。

4.3.1、基于域名:为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的。例如,www.51xit.top 和 www.52xit.top 站点的 IP 地址都是 192.168.100.41。这是使用最为普遍的虚拟 Web 主机类型。

4.3.2、基于 IP 地址:为每个虚拟主机使用不同的域名,且各自对应的 IP 地址也不相同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。(安全)

4.3.3、基于端口:这种方式并不使用域名、IP 地址来区分不同的站点内容,而是使用了不同的TCP 端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问

4.3.1、基于域名

在部署环境中DNS需要修改下A记录,在本案中我们采用hosts映射的方式做域名解析,为虚拟主机准备网页文档

 

1 [[email protected] system] mkdir -p /opt/www/html/51xit.top

2 [[email protected] system] mkdir -p /opt/www/html/52xit.top

3 [[email protected] system] echo "<h1>www.51xit.top</h1>" > /opt/www/html/51xit.top/index.html

4 [[email protected] system] echo "<h1>www.52xit.top</h1>" > /opt/www/html/52xit.top/index.html

添加虚拟主机配置

1)虚拟主机区域:使用<VirtualHost 监听地址>……</VirtualHost>区域配置,为每一个虚拟 Web 主机建立独立的配置内容。其中至少应包括虚拟主机的网站名称、网页根目录的配置项;其他(如管理邮箱、访问日志等)配置项可根据实际需要添加。

2)目录权限:使用<Directory 目录位置>……</Directory>区域配置,为每一个虚拟 Web 主机的网站目录设置访问权限,如允许任何人访问。目录访问可以继承其父目录的授权许可,因此可以采取直接为父文件夹授权访问权限的方法来简化配置当虚拟Web 主机的数量较多时,建议使用独立的虚拟主机配置文件,然后在 httpd.conf文件中通过 Include 加载这些配置。这样可以将对 httpd.conf 文件的改动减至最少,更方便配置内容的维护。

1 [[email protected] ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
 1 <VirtualHost *:80>                                                             
 2     DocumentRoot "/opt/www/html/51xit.top"
 3     ServerName www.51xit.top
 4     ErrorLog "logs/www.51xit.top.error_log"
 5     CustomLog "logs/www.51xit.top.access_log" common
 6 <Directory "/opt/www/html">                      
 7         Require all granted
 8     </Directory>
 9 </VirtualHost>
10 
11 <VirtualHost *:80>                                                            
12     DocumentRoot "/opt/www/html/52xit.top"
13     ServerName www.52xit.top
14     ErrorLog "logs/www.52xit.top.error_log"
15     CustomLog "logs/www.52xit.top.access_log" common
16     <Directory "/opt/www/html">                                       
17        Require all granted
18     </Directory>
19 </VirtualHost>
[[email protected] ~]# vim /usr/local/httpd/conf/httpd.conf   
Include conf/extra/httpd-vhosts.conf                   去掉#加载独立的配置文件
#ServerName www.xuhao.com:80
[[email protected] ~]# systemctl restart httpd               ####重启服务使新配置生效

验证
更改客户机hosts映射关系
192.168.100.41   www.51xit.top  www.52xit.top
登录客户机访问www.51xit.top    在访问www.52xit.top

4.3.2、基于 IP 地址

主机上有2块网卡

VM1网卡:192.168.100.41

VM1网卡:192.168.100.42

添加另外一块网卡VM1  配置ens36网卡

 1 [[email protected] 51xit.top]# nmcli connection
 2 NAME        UUID                                  TYPE      DEVICE
 3 ens33       49511b41-e51a-41f0-a43e-d13274d3ce10  ethernet  ens33 
 4 virbr0      2526d384-aa95-4b4c-9c39-226fc07a2844  bridge    virbr0
 5 有线连接 1  816178ee-807e-3499-9d19-20507cbb8ad3  ethernet  ens36     
 6 复制UUID值  这里值 根据你实际情况来
 7 [[email protected] 51xit.top]# cd /etc/sysconfig/network-scripts/
 8 [[email protected] network-scripts]# ll
 9 总用量 252
10 -rw-r--r--. 1 root root   349 2月  20 17:27 ifcfg-ens33
11 [[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-ens36    
12 [[email protected] network-scripts]# vi ifcfg-ens36
13 TYPE=Ethernet
14 PROXY_METHOD=none
15 BROWSER_ONLY=no
16 BOOTPROTO=none
17 DEFROUTE=yes
18 IPV4_FAILURE_FATAL=no
19 IPV6INIT=no
20 IPV6_AUTOCONF=yes
21 IPV6_DEFROUTE=yes
22 IPV6_FAILURE_FATAL=no
23 IPV6_ADDR_GEN_MODE=stable-privacy
24 NAME=ens36                                             ###更改为ens36                    
25 UUID=816178ee-807e-3499-9d19-20507cbb8ad3             ###更改UUID值
26 DEVICE=ens36                                            ###更改为ens36                         
27 ONBOOT=yes
28 IPADDR=192.168.100.42                                    ###更改IP地址                 
29 PREFIX=24
30 GATEWAY=192.168.100.1
31 IPV6_PRIVACY=no
32 [[email protected] network-scripts]# systemctl restart network
33 [[email protected] network-scripts]# ifdown ens36
34 [[email protected] network-scripts]# ifup ens36
35 [[email protected] ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
 1 <VirtualHost 192.168.100.41:80>                ####设置 51xit.top 虚拟站点区域
 2 DocumentRoot "/opt/www/html/51xit.top"
 3 ServerName www.51xit.top
 4 ......
 5 </VirtualHost>
 6 
 7 <VirtualHost 192.168.100.42:80>               ####设置 52xit.top 虚拟站点区域
 8 DocumentRoot "/opt/www/html/52xit.top"
 9 ServerName www.52xit.top
10 ......
11 </VirtualHost>
12 [[email protected] ~]# vim /usr/local/httpd/conf/httpd.conf
13 Include conf/extra/httpd-vhosts.conf                  ####加载独立的配置文件
14 [[email protected] ~]# systemctl restart httpd                ####重启服务使新配置生效 

验证

更改客户机hosts映射关系

192.168.100.41   www.51xit.top

192.168.100.42   www.52xit.top

登录客户机访问www.51xit.top  在访问www.52xit.top

 

4.3.3、基于端口

 

1 [[email protected] ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

2 <VirtualHost 192.168.100.41:80> ####设置 51xit.top 虚拟站点区域

3 DocumentRoot "/opt/www/html/51xit.top"

4 ServerName www.51xit.top

5 </VirtualHost>

6

7

8 <VirtualHost 192.168.100.41:8080> ####设置 52xit.top 虚拟站点区域

9 DocumentRoot "/opt/www/html/52xit.top"

10 ServerName www.52xit.top

11 </VirtualHost>

12 [[email protected] ~]# vi /usr/local/httpd/conf/httpd.conf ####省略部分内容

13 Include conf/extra/httpd-vhosts.conf ####加载独立的配置文件

14 Listen 192.168.100.41:80 ####监听 80 端口

15 Listen 192.168.100.41:8080 ####监听 8080 端口

16 [[email protected] ~]# systemctl restart httpd ####重启服务使新配置生效

验证

更改客户机hosts映射关系

192.168.100.41   www.51xit.top  www.52xit.top

4.4、安装mysql

4.4.1、安装环境

1 yum -y install \
2 ncurses \
3 ncurses-devel \
4 bison \
5 cmake

4.4.2、上传mysql-boost-5.7.20.tar.gz到/opt目录下并解压缩

 个人对源码编译构建LAMP架构认识

1 useradd -s /sbin/nologin  mysql
2 cd /opt
3 tar xf mysql-boost-5.7.20.tar.gz
4 cd /opt/mysql-5.7.20/

4.4.3、添加配置选项

 1 cmake \
 2 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 3 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
 4 -DSYSCONFDIR=/etc \
 5 -DSYSTEMD_PID_DIR=/usr/local/mysql \
 6 -DDEFAULT_CHARSET=utf8  \
 7 -DDEFAULT_COLLATION=utf8_general_ci \
 8 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 9 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
10 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
11 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
12 -DMYSQL_DATADIR=/usr/local/mysql/data \
13 -DWITH_BOOST=boost \
14 -DWITH_SYSTEMD=1

 配置选项含义

1、DCMAKE_INSTALL_PREFIX:指定将 mysql 数据库程序安装到某目录下,

如目录/usr/local/ mysql。

2、DMYSQL_UNIX_ADDR:指定套接字文件的存储路径,数据库连接的文件

3、DSYSCONFDIR:指定初始化参数文件目录

3、DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf8。

5、DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci 是适用于 UTF-8 字符集的通用规则。

6、DWITH_INNOBASE_STORAGE_ENGINE=1 :安装INNOBASE存储引擎

7、DWITH_ARCHIVE_STORAGE_ENGINE=1 :安装ARCHIVE存储引擎

8、DWITH_BLACKHOLE_STORAGE_ENGINE=1 :安装BLACKHOLE存储引擎

9、DWITH_PERFSCHEMA_STORAGE_ENGINE :安装PERFSCHEMA存储引擎

其它常用的选项:

-DMYSQL_TCP_PORT=3306                    设置默认端口的

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock         MySQL进程间通信的套接字的位置

-DENABLED_LOCAL_INFILE=1                   是否启动本地的LOCAL_INFILE

-DEXTRA_CHARSETS=all                       支持哪些额外的字符集

-DDEFAULT_CHARSET=utf8                     默认字符集

-DDEFAULT_COLLATION=utf8_general_ci         默认的字符集排序规则

-DWITH_DEBUG=0                            是否启动DEBUG功能

-DENABLE_PROFILING=1                       是否启用性能分析功能

4.4.4、编译安装及数据库目录进行权限调整

1 make && make install 

2 chown -R mysql:mysql /usr/local/mysql/

4.4.5、建立调整配置文件

1 vi /etc/my.cnf
1 [client]
 2 port = 3306
 3 default-character-set=utf8
 4 socket = /usr/local/mysql/mysql.sock
 5 
 6 [mysql]
 7 port = 3306
 8 default-character-set=utf8
 9 socket = /usr/local/mysql/mysql.sock
10 
11 [mysqld]
12 user = mysql
13 basedir = /usr/local/mysql
14 datadir = /usr/local/mysql/data
15 port = 3306
16 character_set_server=utf8
17 pid-file = /usr/local/mysql/mysqld.pid
18 socket = /usr/local/mysql/mysql.sock
19 server-id = 1
20 
21 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
1 chown mysql:mysql /etc/my.cnf

4.4.6、设置环境变量

1 echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
2 echo 'export PATH' >> /etc/profile
3 source /etc/profile

4.4.7、安装及开启服务

1 cd /usr/local/mysql/
2 bin/mysqld \
3 --initialize-insecure \
4 --user=mysql \
5 --basedir=/usr/local/mysql \
6 --datadir=/usr/local/mysql/data
1 cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
2 systemctl enable mysqld
3 systemctl start mysqld
4 systemctl status mysqld
5 netstat -anpt | grep 3306

mysqladmin -u root -p password //刚开始没密码是空的直接回车,然后输入密码abc123,在此确认abc123,这是在root账户下运行的

mysql -u root -p     ##这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123

 

4.5、安装PHP

4.5.1、安装PHP环境

1 yum -y install \
 2 libjpeg \
 3 libjpeg-devel \
 4 libpng libpng-devel \
 5 freetype freetype-devel \
 6 libxml2 \
 7 libxml2-devel \
 8 zlib zlib-devel \
 9 curl curl-devel \
10 openssl openssl-devel

4.5.2、上传php-7.1.10.tar.bz2包到opt目录下

 个人对源码编译构建LAMP架构认识

4.5.3、解压缩并安装

1 cd /opt
 2 tar xjvf php-7.1.10.tar.bz2
 3 cd php-7.1.10
 4 ./configure \
 5 --prefix=/usr/local/php \
 6 --with-apxs2=/usr/local/httpd/bin/apxs \
 7 --with-mysql-sock=/usr/local/mysql/mysql.sock \
 8 --with-mysqli \
 9 --with-zlib \
10 --with-curl \
11 --with-gd \
12 --with-jpeg-dir \
13 --with-png-dir \
14 --with-freetype-dir \
15 --with-openssl \
16 --enable-mbstring \
17 --enable-xml \
18 --enable-session \
19 --enable-ftp \
20 --enable-pdo \
21 --enable-tokenizer \
22 --enable-zip
1 make && make install

编译详解:

1、prefix=/usr/local/php                ###指定将 PHP 程序安装到哪个目录下

2、with-apxs2=/usr/local/httpd/bin/apxs    ###设置 Apache HTTP Server 提供的 apxs 模块支持程序的文件位置

3、with-mysql-sock=/usr/local/mysql/mysql.sock     ###指定mysql的mysql.sock位置

4、with-mysqli   ###mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。

5、with-zlib                      ###支持zlib功能--压缩流

6、with-curl                      ###开启curl扩展功能

libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。PHP中使用cURL实现Get和Post请求的方法

7、with-gd                       ###**gd库的支持

8、with-jpeg-dir                            ###要** jpeg 的支持

9、with-png-dir                      ###要**png的支持

10、enable-mbstring                     ###启用多字节字符串功能,以便支持中文等代码。

4.5.4、配置文件

evelopment /usr/local/php/lib/php.ini          ###将php.ini-development开发样板,复制到生产环境中去
1 vi /usr/local/php/lib/php.ini
2 mysqli.default_socket = /usr/local/mysql/mysql.sock
3 date.timezone = Asia/Shanghai
1 /usr/local/php/bin/php -m //验证安装的模块
2 vi /etc/httpd.conf             ####在合适位置新增
3 AddType application/x-httpd-php .php
4 AddType application/x-httpd-php-source .phps
5 DirectoryIndex index.php index.html

如果开启了虚拟主机功能,需要在主配置文件里将其注释掉

4.5.5、删除默认测试网页并新建

1 rm -f /usr/local/httpd/htdocs/index.html
2 vi /usr/local/httpd/htdocs/index.php
3 <?php
4 phpinfo();
5 ?>

4.5.6、重启服务

1 systemctl restart httpd

4.5.7、下面测试数据库工作是否正常(未设置密码直接按回车进入)

1 mysql -u root -p
2 
3 CREATE DATABASE myadm;
4 GRANT all ON myadm.* TO 'myadm'@'%' IDENTIFIED BY 'admin123';
5 GRANT all ON myadm.* TO 'myadm'@'localhost' IDENTIFIED BY 'admin123';
6 flush privileges;

 

1 vi /usr/local/httpd/htdocs/index.php
2 
3 <?php
4 $link=mysqli_connect('20.0.0.10','myadm','admin123');
5 if($link) echo "<h1>Success!!</h1>";
6 else echo "Fail!!";
7 ?>

 

个人对源码编译构建LAMP架构认识

 

4.6、安装phpMyAdmin

4.6.1、上传phpMyAdmin-4.7.6-all-languages.zip到opt下面

 个人对源码编译构建LAMP架构认识

4.6.2、安装

1 cd /opt
2 unzip phpMyAdmin-4.7.6-all-languages.zip 
3 mv phpMyadmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
4 cd /usr/local/httpd/htdocs/myadm

4.6.3、更改配置文件

1 vi config.inc.php
2 $cfg['Servers'][$i]['host'] = '127.0.0.1'; //把localhost 改成IP 31行

4.6.4、测试

1 http://20.0.0.10/myadm        #客户端测试

 个人对源码编译构建LAMP架构认识

注意:利用之前设置的用户名root及密码登录,空密码不可以

 个人对源码编译构建LAMP架构认识

 

 

总结:

apache可以独立使用,当要支持动态网页时,这个时候我们选择了php语言来作为动态网页的语言,因为是动态网页,所以需要MySQL数据库的支持,而php是一种网页的文件,没办法在网页网站里面直接访问,因此需要在安装过程中添加一些模块,而按照好的php也作为一种apache的功能扩展放进apache的配置文件中,让apache的网页网站来支持php动态网页,因此当访问apache时也可访问php动态网页

 

分类:

技术点:

相关文章:

猜你喜欢