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

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

  • 1、LAPM架构简介
    • 1.1动态资源与语言
    • 1.2LAPM架构得组成
    • 1.3LAPM架构说明
    • 1.4CGI和astcgi
      • 1.4.1CGI
      • 1.4.2fastcgi
      • 1.4.3CGI和fastcgi比较
  • 2、搭建LAMP平台
    • 2.1编译安装apache httpd
    • 2.2编译安装mysql
    • 2.3编译安装php
    • 2.4安装论坛

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 = 1sql_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/bbscd /usr/local/httpd/htdocs/bbschown -R daemon ./config
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data

在这里插入图片描述

在浏览器输入192.168.190.254/bbs

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/108310.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql--技术文档--基本概念--《世界上最流行的关系型数据库之一》

官方网址 MySQL 阿丹&#xff1a; 作为关系型数据库管理的老大哥&#xff0c;一个合格的程序员多多少少一定要了解mysql库。 官方解释 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管…

SpringCache

SpringCache是Spring提供的一个缓存框架&#xff0c;在Spring3.1版本开始支持将缓存添加到现有的spring应用程序中&#xff0c;在4.1开始&#xff0c;缓存已支持JSR-107注释和更多自定义的选项。 Spring Cache利用了AOP&#xff0c;实现了基于注解的缓存功能&#xff0c;并且进…

智慧能源助力绿色发展

居民生活是碳排放的重要贡献源&#xff0c;作为居民生活的主要场所&#xff0c;社区是低碳城市建设的重要空间载体。推动低碳社区建设&#xff0c;逐渐打造低碳生活方式&#xff0c;是低碳社会建设的重要内容之一。智慧新能源公共设施助力碳中和&#xff0c;用于各社区改造&…

CSDN编程题-每日一练(2023-08-27)

CSDN编程题-每日一练&#xff08;2023-08-27&#xff09; 一、题目名称&#xff1a;异或和二、题目名称&#xff1a;生命进化书三、题目名称&#xff1a;熊孩子拜访 一、题目名称&#xff1a;异或和 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述&#xff1a; …

【广州华锐互动】VR沉浸式体验红军长征路:追寻红色记忆,传承红色精神

在历史的长河中&#xff0c;长征无疑是一段充满艰辛和英勇的伟大征程。为了让更多的人了解这段历史&#xff0c;我们利用虚拟现实&#xff08;VR&#xff09;技术&#xff0c;为您带来一场沉浸式的体验&#xff0c;重温红军万里长征的壮丽篇章。 一、踏上长征之路 戴上VR眼镜&a…

【沐风老师】如何在3dMax中将3D物体转化为样条线构成的对象?

在3dMax中如何把三维物体转化为由样条线构成的对象&#xff1f;通常这样的场景会出现在科研绘图或一些艺术创作当中&#xff0c;下面给大家详细讲解一种3dmax三维物体转样条线的方法。 第一部分&#xff1a;用粒子填充3D对象&#xff1a; 1.创建一个三维对象&#xff08;本例…

linux操作系统的权限的深入学习(未完)

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在linux下做有限的事情。 超级用户的命令提示符是“#”&#xff0c;普通用户…

华为OD七日集训第2期 - 按算法分类,由易到难,循序渐进,玩转OD(文末送书)

目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第2期五、精心挑选21道高频100分经典题目&#xff0c;作为入门。第1天、逻辑分析第2天、字符串处理第3天、数据结构第4天、递归回溯第5天、二分查找第6天、深度优先搜索dfs算法第7天、动态规划 六、集训总结1、《代码…

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第三天)动态SQL

动态SQL—SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录&#xff08;第三天&#xff09;Mybatis的动态SQL操作 昨天我们深入学习了Mybatis的核心对象SqlSessionFactoryBuilder&#xff0c;掌握MyBatis核心配置文件以及元素的使用,也掌握My…

java八股文面试[数据结构]——集合框架

Java集合体系框架 Java集合类主要由两个根接口Collection和Map派生出来的。 Collection派生出了三个子接口&#xff1a; Map接口派生&#xff1a; Map代表的是存储key-value对的集合&#xff0c;可根据元素的key来访问value。 因此Java集合大致也可分成List、Set、Queue、Map…

美创科技荣获“2023年网络安全优秀创新成果大赛—杭州分站赛”两项优胜奖

近日&#xff0c;由浙江省互联网信息办公室指导、中国网络安全产业联盟&#xff08;CCIA&#xff09;主办&#xff0c;浙江省网络空间安全协会承办的“2023年网络安全优秀创新成果大赛-杭州分站赛”正式公布评选结果。 经专家评审&#xff0c;美创科技报名参赛的解决方案—“医…

什么是回调函数(callback function)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 回调函数&#xff08;Callback Function&#xff09;⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这…

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第五天)MyBatis的注解开发

SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录&#xff08;第五天&#xff09;MyBatis的注解开发 ​ 昨天我们深入学习了MyBatis多表之间的关联映射&#xff0c;了解掌握了一对一关联映射&#xff0c;一对多关联映射&#xff0c;嵌套查询方…

Python 潮流周刊#17:Excel 终于支持 Python 了、Meta 重磅开源新项目、Mojo 新得 1 亿美元融资

你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。标题取自其中两则分享&#xff0c;不代表全部内容都是该主题&#xff0c;特此声明。 本周刊由 Python猫 出品&#xff0c;精心筛选国内外的 250 信息源&#xff0c;为你挑选…

Proteus软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Proteus软件是一款电路设计和仿真的综合性软件&#xff0c;由Labcenter公司开发。它提供了一个交互式的图形界面&#xff0c;用户可以在其中构建电路、仿真结果并实时观察仿真结果。 1、Proteus的历史和演变 Proteus软件最初于…

Golang struct 结构体注意事项和使用细节

结构体所有字段在内存当中是连续的 type Point struct {x, y int }type Rect struct {leftUp, rightDown Point }func main() {//r1会在内存当中有四个整数r1 : Rect{leftUp: Point{x: 1,y: 2,},rightDown: Point{x: 3,y: 4,},}//r1有四个int&#xff0c;在内存当中是连续分布的…

HTTP 框架修炼之道 | 青训营

Powered by:NEFU AB-IN 文章目录 HTTP 框架修炼之道 | 青训营 走进 HTTP 协议HTTP 框架的设计与实现应用层中间件层路由设计协议层 传输层&#xff08;网络层&#xff09;1. BIO&#xff08;Blocking I/O&#xff09;:2. NIO&#xff08;Non-blocking I/O&#xff09;:区别&…

MyBatis 的关联关系配置 一对多,一对一,多对多 关系的映射处理

目录 一.关联关系配置的好处 二. 导入数据库表&#xff1a; 三. 一对多关系&#xff1a;-- 一个订单对应多个订单项 四.一对一关系&#xff1a;---一个订单项对应一个订单 五.多对多关系&#xff08;两个一对多&#xff09; 一.关联关系配置的好处 MyBatis是一…

高阶数据结构并查集

目录&#xff1a; 并查集的概念代码实现 LeetCode例题 并查集的概念 将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中反复遇到查询某一个元素属于那个集合的运算…

【Linux】目录结构、路径

目录 1. 目录结构 1.1 基本概念 1.2 具体的目录结构 2. 路径 2.1 绝对路径和相对路径 2.2 特殊路径符 1. 目录结构 1.1 基本概念 Linux的目录结构是一个树形结构。 Windows系统可以拥有多个盘符&#xff0c;如 C盘、D盘、E盘。Linux没有盘符这个概念&#xff0c;只有一…