LAMP架构详解+构建LAMP平台之Discuz论坛

1、LAPM架构简介

1.1动态资源与语言

WEB资源类型:

  • 静态资源:原始形式与响应内容一致,在客户端浏览器执行
  • 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端
    注意:静态和动态的区别,不在于网页是否能动态变化,而在于服务端的页面文件和客户端得到页面文件是否一致

范例:静态资源

vim   test.html
#客户端主机现在的时间:
<script type="text/javascript">
document.write(new Date());
</script>

1.2LAPM架构得组成

在这里插入图片描述

  • L:linux
  • A:apache (httpd)
  • M:mysql, mariadb
  • P:php, perl, python

1.3LAPM架构说明

在这里插入图片描述

工作过程:
1、当客户端请求的是静态资源时,web服务器会直接把静态资源返回给客户端
2、当客户端请求的是动态资源时,http的php模块会进行相应的动态资源运算,如果此过程还需要数据的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算结果转为静态资源由web服务器返回到客户端。

apache主要实现如下功能:

  1. 第一:处理http的请求、构建响应报文等自身服务;
  2. 第二:配置让Apache支持PHP程序的响应(通过PHP模块或FPM);
  3. 第三:配置Apache具体处理php程序的方法,如通过反向代理将php程序交给fcgi处理。

mysql 主要实现如下功能:

  1. 第一:提供PHP程序对数据的存储;
  2. 第二:提供PHP程序对数据的读取(通常情况下从性能的角度考虑,尽量实现数据库的读写分离)。

php主要实现如下功能:

  1. 第一:提供apache的访问接口,即CGI或Fast CGI(FPM);
  2. 第二:提供PHP程序的解释器;
  3. 第三:提供mysql数据库的连接函数的基本环境。

1.4CGI和astcgi

1.4.1CGI

CGI 可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准

请求流程:
Client – (http协议) --> httpd – (cgi协议) --> application server (program file) – (mysql协议) --> mysql

1.4.2fastcgi

fastcgi的方式是,web服务器收到一个请求时,不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出

请求流程:
Client – (http协议) --> httpd – (fastcgi协议) --> fastcgi服务器 – (mysql协议) --> mysql

1.4.3CGI和fastcgi比较

CGI: 兼职, 一次性的过河拆桥式的服务
FASTCGI: 专职,全周期的持续式的服务
在这里插入图片描述

2、搭建LAMP平台

2.1编译安装apache httpd

关闭防火墙

systemctl disable --now firewalld #开机自动关闭防火墙
setenforce 0

在这里插入图片描述
安装环境依赖包

yum -y install gcc gcc-c++ make pcre-devel expat-devel perl pcre   //安装依赖环境包

在这里插入图片描述
拷贝软件包

[root@localhost /]# cd data
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# rz -E
rz waiting to receive.
[root@localhost data]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
[root@localhost data]# 

在这里插入图片描述
解压软件包

[root@localhost data]# tar xf apr-1.6.2.tar.gz 
[root@localhost data]# tar xf apr-util-1.6.0.tar.gz 
[root@localhost data]# tar xf httpd-2.4.29.tar.bz2
[root@localhost data]# 
[root@localhost data]# ls
apr-1.6.2         apr-util-1.6.0         httpd-2.4.29
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
[root@localhost data]# 

在这里插入图片描述
移动apr包 apr-util包到安装目录中,并切换到 httpd-2.4.29目录中

[root@localhost data]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost data]# 
[root@localhost data]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost data]# 
[root@localhost data]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29  httpd-2.4.29.tar.bz2
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# cd httpd-2.4.29
[root@localhost httpd-2.4.29]# 

在这里插入图片描述
在这里插入图片描述
编译安装

./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

在这里插入图片描述

make -j2&&make install

在这里插入图片描述

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
//将文件拷入/etc/init.d/httpd
ln -s /usr/local/httpd/conf/httpd.conf /etc/
//建立配置文件软连接放入etc目录下
ln -s /usr/local/httpd/bin/* /usr/local/bin/
//将启动文件放入/usr/local/bin/目录下可以直接使用

在这里插入图片描述
添加httpd系统服务

vim /etc/init.d/httpd   //进入配置文件
在开头行加入
# chkconfig: 35 85 21                //35级别自动运行  第85个启动 第21个关闭

在这里插入图片描述

chkconfig --add httpd     //将httpd加入service管理器

在这里插入图片描述

vim /usr/local/httpd/conf/httpd.conf  //#修改主机地址

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

service httpd start  //启动httpd服务

在这里插入图片描述
在浏览器输入ip地址,发现http启动成功
在这里插入图片描述

2.2编译安装mysql

解压安装包

[root@localhost httpd-2.4.29]# cd /data
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29  httpd-2.4.29.tar.bz2
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# rz -E
rz waiting to receive.
[root@localhost data]# ls
apr-1.6.2.tar.gz       httpd-2.4.29          mysql-boost-5.7.20.tar.gz
apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
[root@localhost data]# 
[root@localhost data]# tar xf mysql-boost-5.7.20.tar.gz 
[root@localhost data]# ls
apr-1.6.2.tar.gz       httpd-2.4.29          mysql-5.7.20
apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2  mysql-boost-5.7.20.tar.gz
[root@localhost data]# 
[root@localhost data]# 

在这里插入图片描述
安装依赖包

yum install -y ncurses-devel autoconf cmake

在这里插入图片描述

[root@localhost data]# cd mysql-5.7.20/
[root@localhost mysql-5.7.20]# 
[root@localhost mysql-5.7.20]# ls
boost            dbug                 libmysql     rapid          testclients
BUILD            Docs                 libmysqld    README         unittest
client           Doxyfile-perfschema  libservices  regex          VERSION
cmake            extra                man          scripts        vio
CMakeLists.txt   include              mysql-test   sql            win
cmd-line-utils   INSTALL              mysys        sql-common     zlib
config.h.cmake   libbinlogevents      mysys_ssl    storage
configure.cmake  libbinlogstandalone  packaging    strings
COPYING          libevent             plugin       support-files
[root@localhost mysql-5.7.20]# 

在这里插入图片描述

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
//配置编译选项

在这里插入图片描述

make -j2 && make install

在这里插入图片描述

[root@localhost mysql-5.7.20]# useradd -s /sbin/nologin  mysql
[root@localhost mysql-5.7.20]# 
[root@localhost mysql-5.7.20]# 
[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/

在这里插入图片描述

vim /etc/my.cnf

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

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

在这里插入图片描述

chown mysql:mysql /etc/my.cnf

在这里插入图片描述

[root@localhost mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile //加入PATH中,使其可以补全
[root@localhost mysql-5.7.20]# echo 'export PATH' >> /etc/profile //声明这个变量为全局变量

在这里插入图片描述

[root@localhost mysql-5.7.20]# cd /usr/local/mysql/
[root@localhost mysql]# 
[root@localhost mysql]# 
[root@localhost mysql]# bin/mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data

在这里插入图片描述

[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost mysql]# 
[root@localhost mysql]# systemctl daemon-reload
[root@localhost mysql]# 
[root@localhost mysql]# 
[root@localhost mysql]# systemctl start mysqld.service
[root@localhost mysql]# 
[root@localhost mysql]# netstat -anpt | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      77743/mysqld        

在这里插入图片描述

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

在这里插入图片描述

quit;   //退出

在这里插入图片描述

2.3编译安装php

安装依赖环境

yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

在这里插入图片描述
配置软件模块

cd /data
tar xf php-7.1.10.tar.bz2
cd /opt/php-7.1.10/

./configure \
--prefix=/usr/local/php7 \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-config-file-path=/usr/local/php7 \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

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

 make -j2 && make install //编译与安装

在这里插入图片描述

cp /data/php-7.1.10/php.ini-development /usr/local/php7/php.ini	
//复制模版文件作为PHP 的主配置文件,并进行修改

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

vim /usr/local/php7/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock   --1170行--修改 1170 G,大写的G,直接跳转
date.timezone = Asia/Shanghai --939行

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

ln -s /usr/local/php7/bin/* /usr/local/bin/
把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
php -m   //查看PHP 加载了哪些模块

在这里插入图片描述

vim /etc/httpd.conf   //修改httpd 服务的配置文件,让apache支持PHP
AddType application/x-httpd-php .php       --393行--插入以下内容(插在下面,原行不删)
AddType application/x-httpd-php-source .phps   ##这里的点前面空格一定要加,否则报错

在这里插入图片描述

DirectoryIndex index.html index.php    --255行--修改首页文件名设置

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

验证PHP 测试页
vim /usr/local/httpd/htdocs/index.php  //进入配置文件
添加
<?php
phpinfo();
?>

在这里插入图片描述

systemctl restart httpd

在这里插入图片描述

2.4安装论坛

[root@localhost data]# mysql -u root -p
Enter password: 

在这里插入图片描述

mysql> CREATE DATABASE bbs;  //创建一个数据库//

mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';   //把bbs数据库里面所有表的权限授予给bbsuser,并设置密码//

在这里插入图片描述

show databases;//查看是否创建成功

在这里插入图片描述

select user,host from mysql.user;

在这里插入图片描述
unzip /opt/Discuz_X3.4_SC_UTF8.zip
在这里插入图片描述

cp -r upload/ /usr/local/httpd/htdocs/bbs

cd /usr/local/httpd/htdocs/bbs

chown -R daemon ./config
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data

在这里插入图片描述

在浏览器输入192.168.190.254/bbs

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

猜你喜欢

转载自blog.csdn.net/m0_62231324/article/details/132508788