Linux系列——LAMP架构的详细搭建过程

Posted 清晨丶暖阳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系列——LAMP架构的详细搭建过程相关的知识,希望对你有一定的参考价值。

一、LAMP的认识

1.1 LAMP的作用与组成

**LAMP架构:**是协同工作的一整套系统和相关软件,可提供动态Web站点服务及其应用开发环境。具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。

1.2 LAMP组成作用

  • Linux:作为LAMP架构的基础平台,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性
  • Apache:作为LAMP架构的前端页面服务,稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容
  • mysql:作为LAMP架构的后端服务,在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息。
  • php:作为LAMP架构的中间连接器,负责解释动态网页文件,负责沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境。

构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。

二、 Apache httpd服务配置

1. 先说明搭建步骤

  1. 关闭防火墙,准备安装服务软件包。
  2. 安装环境依赖包
  3. 配置软件模块
  4. 编译及安装
  5. 添加httpd系统服务
  6. 修改httpd 服务配置文件
  7. 浏览器访问验证

防火墙容易忽略,谨记

2. 实验操作

2.1 关闭防火墙&导入服务软件包

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

在这里插入图片描述
软件包导入Linux系统中、/opt 目录下
在这里插入图片描述
在这里插入图片描述

2.2 安装环境依赖包和解压软件包

### 安装环境依赖包
[root@localhost /opt]# yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl
[root@localhost /opt]# tar zxvf apr-1.6.2.tar.gz 
[root@localhost /opt]# tar zxvf apr-util-1.6.0.tar.gz                                         
[root@localhost /opt]# tar jxvf httpd-2.4.29.tar.bz2
### 移动到httpd服务目录内:
[root@localhost /opt]# mv apr-1.6.2 /opt/httpd-2.4.29/srclib/apr 
[root@localhost /opt]# mv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util

在这里插入图片描述

2.3 配置模块

### 需要进入httpd服务目录
[root@localhost /opt]# cd httpd-2.4.29/
[root@localhost /opt/httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

在这里插入图片描述
在这里插入图片描述

2.4 编译和安装

### 编译及安装同时进行
make && make install
# 开两个核心进行编译
make -j 2

2.5 优化配置文件路径

### 软链接加入
[root@localhost /opt/httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf  /etc/
[root@localhost /opt/httpd-2.4.29]# ln -s /usr/local/httpd/bin/*  /usr/local/bin/
### 直接加入PATH环境
[root@localhost /opt/httpd-2.4.29]# export PATH=/usr/local/httpd/bin:$PATH      
[root@localhost /opt/httpd-2.4.29]# export PATH=/usr/local/httpd/conf/httpd.conf:$PATH 

在这里插入图片描述

2.6 添加httpd系统服务

### 将Apachectl服务添加为系统服务
[root@localhost /opt/httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
### 用于服务管理,添加执行权限,实现systemctl管理
[root@localhost /opt/httpd-2.4.29]# chmod +x /etc/init.d/httpd 
### 这样就加入到了系统服务管理
[root@localhost /opt/httpd-2.4.29]# chkconfig --add httpd
### 上序操作全是为了此处这条命令
[root@localhost /opt/httpd-2.4.29]# systemctl start httpd.service

在这里插入图片描述
在这里插入图片描述

2.7 修改httpd 服务配置文件

### 修改配置文件:发布web服务(网页上线)
vim /etc/httpd.conf
-- 52--修改
Listen 192.198.80.10:80
-- 197--取消注释,修改
ServerName www.kgc.com:80

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### 启动服务即可
[root@localhost /opt/httpd-2.4.29]# systemctl restart httpd.service 
### /etc/hosts;这个文件告诉本主机哪些域名对应那些ip,那些主机名对应哪些ip:
[root@localhost /opt/httpd-2.4.29]# echo "192.168.88.88 www.YGB.com" >> /etc/hosts

在这里插入图片描述

三、MySQL服务配置

1. 先说明搭建步骤

  1. 安装环境依赖包
  2. 配置软件模块
  3. 编译及安装
  4. 创建mysql用户
  5. 修改mysql 配置文件
  6. 更改mysql安装目录和配置文件的属主属组
  7. 设置路径环境变量
  8. 初始化数据库
  9. 添加mysqld系统服务
  10. 修改mysql 的登录密码
  11. 授权远程登录

2. 服务搭建操作

2.1 安装环境依赖包

yum -y install \\
gcc \\
gcc-c++ \\
ncurses \\				#字符终端下图形互动功能的动态库
ncurses-devel \\			#ncurses开发包
bison \\					#语法分析器
cmake					#mysql需要用cmake编译安装

在这里插入图片描述

2.2 配置软件模块

[root@localhost /opt]# tar zxvf mysql-5.7.17.tar.gz 
[root@localhost /opt]# tar zxvf boost_1_59_0.tar.gz

在这里插入图片描述

### 将服务移动到/usr/local目录下
[root@localhost /opt]# mv boost_1_59_0 /usr/local/boost
### 加入mysql服务目录后对环境进行配置和检测
cd /opt/mysql-5.7.17/
cmake \\
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \\		#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \\ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \\                             #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \\            #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \\                       #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \\			#指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \\						#指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \\              #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \\               #安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \\             #安装BLACKHOLE存储引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \\            #安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \\         #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \\          #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1								#生成便于systemctl管理的文件

这一大串代码需要在mysql服务目录下执行。
在这里插入图片描述
在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧。尽量不要存在多余的文件。

2.2.1 存储引擎说明(简单介绍)

存储引擎选项:
MYISAMMERGE,MEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装。
静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1
可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)

  • MyISAM它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
  • InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
  • memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。

2.3 编译和安装

### 执行上序检测搭建mysql配置文件后,进行编译和安装。
make && make install

2.4 创建mysql用户

### M:不创建家目录,s:指定用户登入后所使用的shell(应用环境)
[root@localhost /opt/mysql-5.7.17]# useradd -M -s /sbin/nologin mysql

2.5 修改mysql配置文件

vim /etc/my.cnf								#删除原配置项,再重新添加下面内容
[client]									#客户端设置
port = 3306
socket = /usr/local/mysql/mysql.sock			

[mysql]										#服务端设置
port = 3306
socket = /usr/local/mysql/mysql.sock
auto-rehash									#开启自动补全功能

[mysqld]									#服务全局设置
user = mysql       							#设置管理用户
basedir=/usr/local/mysql					#指定数据库的安装目录
datadir=/usr/local/mysql/data				#指定数据库文件的存储路径
port = 3306									#指定端口
character-set-server=utf8					#设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid		#指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock			#指定数据库连接文件
bind-address = 0.0.0.0						#设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve							#禁用DNS解析
max_connections=2048						#设置mysql的最大连接数
default-storage-engine=INNODB				#指定默认存储引擎
max_allowed_packet=16M						#设置数据库接收的数据包大小的最大值
server-id = 1								#指定服务ID号

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

在这里插入图片描述

2.5.1 sql_mode常用值如下以及说明

  1. NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
  2. STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
  3. NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户
  4. NO_AUTO_VALUE_ON_ZERO:mysql中的自增长列可以从0开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错
  5. NO_ZERO_IN_DATE:不允许日期和月份为零
  6. NO_ZERO_DATE:mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
  7. ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MySQL返回NULL
  8. PIPES_AS_CONCAT:将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
  9. ANSI_QUOTES:启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

2.6 更改mysql安装目录和配置文件的属主属组

### R:表示递归设置,该目录下所有文件属主都一致
[root@localhost /opt/mysql-5.7.17]# chown -R mysql:mysql /usr//local/mysql/
[root@localhost /opt/mysql-5.7.17]# chown mysql:mysql /etc/my.cnf

在这里插入图片描述

2.7 设置路径环境变量

在这里插入图片描述

### 系统环境中追加指定目录
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile	
### 执行文件,刷新系统环境
source /etc/profile

2.8 初始化数据库

为后续操作准备干净的环境

在这里插入图片描述


cd /usr/local/mysql/bin/
./mysqld \\
--initialize-insecure \\				#生成初始化密码为空
--user=mysql \\                      #指定管理用户
--basedir=/usr/local/mysql \\        #指定数据库的安装目录
--datadir=/usr/local/mysql/data		#指定数据库文件的存储路径

2.9 添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/		#用于systemctl服务管理
systemctl daemon-reload         #刷新识别     
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启动
netstat -anpt | grep 3306       #查看端口

在这里插入图片描述

2.10 修改mysql 的登录密码

在这里插入图片描述

#给root账号设置密码为4321,提示输入的是原始密码(为空)
[root@localhost ~]# mysqladmin -u root -p password "4321"
	

2.11 授权远程登录

mysql -u root -p
### 授予root用户可以在所有终端远程登录,使用的密码是4321,并对所有数据库和所有表有操作权限
grant all privileges on *.* to 'root'@'%' identified by '4321';
###  查看当前已有的数据库
show databases;			

在这里插入图片描述

四、PHP动态连接解析服务搭建

1. 步骤流程

  1. 安装GD库和GD库关联程序,用来处理和生成图片
  2. 配置软件模块
  3. 编译及安装
  4. 复制模版文件作为PHP 的主配置文件,并进行修改
  5. 优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
  6. 修改httpd 服务的配置文件,让apache支持PHP
  7. 验证PHP 测试页

2. 操作搭建

2.1 安装GD库和GD库关联程序

用来处理和生成图片

[root@localhost /opt]# yum -y install gd libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel \\

在这里插入图片描述

2.2 配置软件模块

### 解压软件包,
[root@localhost /opt]# tar jxvf php-7.1.10.tar.bz2 
### 搭建配置环境,先进入服务目录下
cd /opt/php-7.1.10/
./configure \\
--prefix=/usr/local/php7 \\							#指定将 PHP 程序的安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \\			#指定Apache httpd服务提供的apxs 模块支持程序的文件位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \\		#指定mysql 数据库连接文件的存储路径
--with-config-file-path=/usr/local/php7				#设置 PHP 的配置文件 php.ini 将要存放的位置
--with-mysqli \\										#添加 MySQL 扩展支持 #mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
--with-zlib \\										#支持zlib功能,提供数据压缩
--with-curl \\										#开启curl扩展功能,实现HTTP的Get下载和Post请求的方法
--with-gd \\											#激活gd 库的支持
--with-jpeg-dir \\									#激活jpeg 的支持
--with-png-dir \\									#激活png 的支持
--with-freetype-dir \\
--with-openssl \\
--enable-mbstring \\									#启用多字节字符串功能,以便支持中文等代码
--enable-xml \\										#开启扩展性标记语言模块
--enable-session \\									#会话
--enable-ftp \\										#文本传输协议
--enable-pdo \\										#函数库
--enable-tokenizer \\								#令牌解释器
--enable-zip										#ZIP压缩格式

在这里插入图片描述

2.3 编译与安装

make && make install

2.4 复制模版文件作为PHP 的主配置文件,并进行修改



#在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件
[root@localhost /opt]# cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini
### 修改配置文件
[root@localhost /opt]# vim /usr/local/php7/php.ini
--1170--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939--取消注释,修改
date.timezone = Asia/Shanghai

在这里插入图片描述

2.5放入路径环境变量的目录中便于系统识别

### 加入路径环境变量:软链接
ln -s /usr/local/php7/bin/* /usr/local/bin/
#### 查看PHP 加载了哪些模块
php -m 			

在这里插入图片描述

2.6 修改httpd 服务的配置文件,让apache支持PHP

vim /etc/httpd.conf 
--393--插入以下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
--255--修改首页文件名设置
DirectoryIndex index.html index.php
/etc/httpd.conf 文件内
---检查支持php7的模块是否存在------
LoadModule php7_module        modules/libphp7.so

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.7 验证PHP 测试页

### 删除原有的网络
rm -rf /usr/local/httpd/htdocs/index.html
### 创建php页面
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>

systemctl restart httpd.service 重启服务,访问网址
在这里插入图片描述

完整的论坛搭建

在这里插入图片描述
完整的LAMP构建Web服务网页论坛系统搭建在下列连接操作系统内,可下载使用。

****

以上是关于Linux系列——LAMP架构的详细搭建过程的主要内容,如果未能解决你的问题,请参考以下文章

linux架构学习第二十六天之LAMP架构原理及搭建详解

LAMP架构搭建以及基于LAMP架构的主流论坛和博客搭建过程详解

搭建LAMP架构

CentOS 7 搭建 LNMP 架构详细过程 + Discuz 论坛安装 (手工编译)

LAMP 系统服务搭建过程详解

linux下Yum搭建lamp网站架构