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

L A M P

  • 一、LAMP架构简介
    • 1.1 LAMP架构的组成
    • 1.2 LAMP各组件的主要作用
    • 1.3 LAMP工作过程
    • 1.4 CGI和fastcgi
  • 二、搭建Discuz论坛的思路
  • 三、编译安装Apache httpd
    • 3.1 前置准备
    • 3.2 移动apr包 apr-util包到安装目录中,并切换到 httpd-2.4.29目录中
    • 3.3 编译安装
    • 3.4 建立软连接,方便补全
    • 3.5 添加httpd系统服务
    • 3.6 修改配置文件
  • 四、编译安装Mysql
    • 4.1 前置准备
    • 4.2 解压源代码包
    • 4.3 配置软件模块
    • 4.4 修改MySQL配置文件
    • 4.5 设置路径环境变量
    • 4.6 初始化数据库
    • 4.7 添加mysqld系统服务
    • 4.8 修改mysql 的登录密码
  • 五、编译安装PHP
    • 5.1 前置准备
    • 5.2 配置软件模块,编译安装php
    • 5.3 复制模版文件作为PHP 的主配置文件,进行修改
    • 5.4 优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
    • 5.5 修改httpd 服务的配置文件,让apache支持PHP
    • 5.6 验证PHP 测试页
  • 六、安装论坛
    • 6.1 以 root 用户身份登录到 MySQL 数据库,进行配置
    • 6.2 解压Discuz源码包
    • 6.3 更改论坛目录的属主
    • 6.4 安装Discuz论坛
    • 6.5 访问192.168.2.100/bbs ,进入Discuz论坛界面

一、LAMP架构简介

1.1 LAMP架构的组成

在这里插入图片描述

LAMP 架构是一种常见的用于构建动态网站的技术栈。

组成部分功能
Linux (操作系统)LAMP 架构的基础,用于托管 Web 服务器和应用程序。
Apache (Web 服务器)接收和处理客户端请求,并将静态和动态内容发送给客户端。
MySQL (数据库):存储和检索应用程序的数据
PHP (编程语言)用于动态生成网页内容。

1.2 LAMP各组件的主要作用

Linux 提供了可靠的操作系统环境;

Apache负责处理客户端的请求;

MySQL负责存储和检索数据 ;

PHP 负责处理业务逻辑并生成网页内容。

1.3 LAMP工作过程

静态资源
当客户端请求的是静态资源时,web服务器会直接把静态资源返回给客户端。

动态资源
当客户端请求的是动态资源时,httpd的PHP模块会进行相应的动态资源运算。

如果此过程还需要数据库的数据作为运算参数时,php会连接mysql取得数据然后进行运算。

运算的结果转为静态资源由web服务器返回到客户端;

1.4 CGI和fastcgi

CGI(通用网关接口)和FastCGI(快速公共网关接口)都是用于将Web服务器与后端应用程序(如PHP、Python等)进行交互的协议/接口

特点CGIFastCGI
运行方式每个请求启动新的进程复用进程处理多个请求
性能每个请求需要重新加载代码多个请求共享同一份代码
资源消耗每个请求都需要消耗大量资源多个请求间资源共享
扩展性难以扩展更容易实现扩展性
缓存能力依赖于服务器配置有较好的缓存能力
安全性比较低更高
适用场景适用于小型或低流量应用适用于高流量或复杂应用

二、搭建Discuz论坛的思路

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

编译安装Apache httpd服务 ----->编译安装MySQL----->编译安装PHP ----->搭建LAMP平台

三、编译安装Apache httpd

3.1 前置准备

systemctl disable --now firewalld #开机自动关闭防火墙setenforce 0yum -y install gcc gcc-c++ make pcre-devel expat-devel perl pcre#安装依赖环境

在这里插入图片描述

解压软件包

在这里插入图片描述

3.2 移动apr包 apr-util包到安装目录中,并切换到 httpd-2.4.29目录中

mv apr-1.6.2 httpd-2.4.29/srclib/aprmv apr-util-1.6.0 httpd-2.4.29/srclib/apr-utilcd httpd-2.4.29;ls 

在这里插入图片描述

3.3 编译安装

#检测编译环境 加功能
./configure --prefix=/test/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi #--enable-so  启用动态加载模块支持,使httpd具备进一步扩展功能的能力
#--enable-rewrite 启用网页地址的重写功能,用于网站优化、防盗链及目录迁移维护   
#--enable-charset-lite 启用字符集支持,以便支持使用各种字符集编码的页面
#--enable-cgi  启用CGI(通用网关接口)脚本程序支持,便于网站外部扩展应用访问的能力make j2 && make install #安装 

在这里插入图片描述

3.4 建立软连接,方便补全

cp /test/httpd/bin/apachectl  /etc/init.d/httpd
#将文件拷入/etc/init.d/httpd
ln -s /test/httpd/conf/httpd.conf /etc/
#建立配置文件软连接放入etc目录下
ln -s /test/httpd/bin/* /usr/local/bin/

3.5 添加httpd系统服务

#新建.service文件
vim /usr/lib/systemd/system/httpd.service [Unit]
Description=The Apache HTTP Server    
After=network.target [Service]
Type=forking
PIDFile=/test/httpd/logs/httpd.pid
ExecStart=/test/httpd/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP ${MAINPID}[Install]
WantedBy=multi-user.targetsystemctl daemon-reload
systemctl start httpd.service;systemctl status httpd.service

在这里插入图片描述

ss -ntap |grep 80

在这里插入图片描述

3.6 修改配置文件

vim /test/httpd/httpd.conf--52行--修改
Listen 192.168.2.100:80
--197行--取消注释,修改
ServerName www.byyd.com:80--221行--默认首页存放路径
DocumentRoot "/test/httpd/htdocs"
--255行--默认首页文件名设置
DirectoryIndex index.html

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

在这里插入图片描述

httpd -t  #语法检查cat /test/httpd/htdocs/index.htmlsystemctl restart httpd.service;systemctl status httpd

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

四、编译安装Mysql

4.1 前置准备

systemctl disable --now firewalld #开机自动关闭防火墙setenforce 0yum install -y ncurses-devel autoconf cmake#安装依赖环境useradd -s /sbin/nologin  mysql#一定要新建用户

在这里插入图片描述

4.2 解压源代码包

mv boost_1_59_0  /test/boost 

在这里插入图片描述

4.3 配置软件模块

cd /rw/mysql-5.7.20/cmake \
#指定将 mysql 数据库程序安装到某目录下
-DCMAKE_INSTALL_PREFIX=/test/mysql \ 
#指定套接字文件的存储路径,数据库连接的文件
-DMYSQL_UNIX_ADDR=/test/mysql/mysql.sock \
#指定配置文件的存储路径
-DSYSCONFDIR=/etc \
#指定进程文件的存储路径
-DSYSTEMD_PID_DIR=/test/mysql \
#指定默认使用的字符集编码为utf8
-DDEFAULT_CHARSET=utf8  \
#指定默认使用的字符集校对规则
-DDEFAULT_COLLATION=utf8_general_ci \
#指定支持其他字符集编码
-DWITH_EXTRA_CHARSETS=all \
#安装INNOBASE存储引擎 ARCHIVE存储引擎 BLACKHOLE存储引擎  FEDERATED存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#指定数据库文件的存储路径
-DMYSQL_DATADIR=/test/mysql/data \
#指定boost的路径
-DWITH_BOOST=/test/boost \
#生成便于systemctl管理的文件
-DWITH_SYSTEMD=1

在这里插入图片描述

make j2 && make install  #编译安装

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

chown -R mysql:mysql /test/mysql/  #改变数据库目录的属主属组

4.4 修改MySQL配置文件

vim /etc/my.cnf #删除原配置,添加新配置
#客户端配置
[client] 
port = 3306
default-character-set=utf8
socket = /test/mysql/mysql.sock
#服务端配置
[mysql]
port = 3306
default-character-set=utf8
socket = /test/mysql/mysql.sock
#服务端全局配置
[mysqld]
user = mysql
basedir = /test/mysql
datadir = /test/mysql/data
port = 3306
character_set_server=utf8
pid-file = /test/mysql/mysqld.pid
socket = /test/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_A    UTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PI    PES_AS_CONCAT,ANSI_QUOTES
/etc/my.cnf
chown mysql:mysql /etc/my.cnf #改变配置文件的属主属组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7jo9v9e4-1692687828347)(LAMP.assets/image-20230822131104740.png)]

4.5 设置路径环境变量

#将 MySQL 的可执行文件和库文件的路径添加到系统的环境变量中
#可以直接运行 MySQL 相关的命令,而不需要每次都输入完整的路径echo 'PATH=/test/mysql/bin:/test/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile #刷新使生效

4.6 初始化数据库

cd /test/mysql/bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/test/mysql \
--datadir=/test/mysql/data

在这里插入图片描述

4.7 添加mysqld系统服务

cp /test/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ 
#能用systemd启动
#刷新识别 
systemctl daemon-reload             
#开启服务
systemctl start mysqld.service   
#开机自启动
systemctl enable mysqld  #查看端口
ss -natp | grep 3306        

在这里插入图片描述

4.8 修改mysql 的登录密码

mysqladmin -u root -p password "abc123" 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kIZ07VLQ-1692687828347)(LAMP.assets/image-20230822135258838.png)]

五、编译安装PHP

5.1 前置准备

#安装GD库和GD库关联程序,用来处理和生成图片
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
#解压源代码包
tar jxvf php-7.1.10.tar.bz2

5.2 配置软件模块,编译安装php

cd /rw/php-7.1.10/
#检测编译环境
./configure \
#指定将 PHP 程序的安装路径
--prefix=/test/php7 \
#指定Apache httpd服务提供的apxs 模块支持程序的文件位置
--with-apxs2=/test/httpd/bin/apxs \
#指定mysql 数据库连接文件的存储路径
--with-mysql-sock=/test/mysql/mysql.sock \
#设置 PHP 的配置文件 php.ini 将要存放的位置
--with-config-file-path=/test/php7 \
#添加 MySQL 扩展支持
--with-mysqli \
#支持zlib功能,提供数据压缩
--with-zlib \
#开启curl扩展功能,实现HTTP的Get下载和Post请求的方法
--with-curl \
#激活gd库/的支持 激活jpeg 的支持 激活png的支持
--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 \
#zip压缩格式
--enable-zip

在这里插入图片描述

make -j2 && make install #安装

在这里插入图片描述

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

cp /rw/php-7.1.10/php.ini-development /test/php7/php.inivim /test/php7/php.ini

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

5.4 优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /test/php7/bin/* /usr/local/bin/php -m #查看功能模块

在这里插入图片描述

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

vim /etc/httpd.conf

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

5.6 验证PHP 测试页

rm -rf /test/httpd/htdocs/index.htmlvim /test/httpd/htdocs/index.php

在这里插入图片描述

systemctl restart httpd.service #重启服务打开浏览器,输入本机IP地址

在这里插入图片描述

六、安装论坛

6.1 以 root 用户身份登录到 MySQL 数据库,进行配置

mysql -u root -p 
#以 root 用户身份登录到 MySQL 数据库

在这里插入图片描述

mysql> CREATE DATABASE bbs;  #创建一个数据库mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';  #把bbs数据库里面所有表的权限授予给bbsuser,并设置密码mysql>flush privileges; #刷新数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lQzx7j0g-1692687828350)(LAMP.assets/image-20230822143733896.png)]

6.2 解压Discuz源码包

unzip /rw/Discuz_X3.4_SC_UTF8.zip -d /rw/dis #解压cd /rw/dis/dir_SC_UTF8/cp -r upload/ /test/httpd/htdocs/bbs

6.3 更改论坛目录的属主

cd /test/httpd/htdocs/bbschown -R daemon ./config
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data

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

6.4 安装Discuz论坛

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

6.5 访问192.168.2.100/bbs ,进入Discuz论坛界面

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

dvwa xss通关

反射型XSS通关 low难度 选择难度&#xff1a; 直接用下面JS代码尝试&#xff1a; <script>alert(/xss/)</script>通关成功&#xff1a; medium难度 直接下面代码尝试后失败 <script>alert(/xss/)</script>发现这段代码直接被输出&#xff1a; 尝试…

开始MySQL之路——外键关联和多表联合查询详细概述

多表查询和外键关联 实际开发中&#xff0c;一个项目通常需要很多张表才能完成。例如&#xff0c;一个商城项目就需要分类表&#xff0c;商品表&#xff0c;订单表等多张表。且这些表的数据之间存在一定的关系&#xff0c;接下来我们将在单表的基础上&#xff0c;一起学习多表…

Qt --- 自定义提示框 类似QMessagebox

QMessageBox::information(NULL, QString("title"), QString("I am information")); 以下是自定义提示框的代码&#xff0c;有图有真相&#xff01;提示框大部分都采用模态的形式&#xff0c;关于模态也不再多提&#xff01;所以父类为QDialog&#xff0c;…

若依移动端Ruoyi-App 项目的后端项目入门

后端项目运行 运行报错 Error creating bean with name sysConfigServiceImpl: Invocation of init method failed 数据库创建了。 代码连接数据库地方了也匹配上了。但是还是报错。 分析 &#xff1a; 想起来我电脑从来没有安装过redis 下载安装redis到windows 链接&…

【Mac】编译Spring 源码和Idea导入

今天我们开始Spring源码的阅读之旅。阅读Spring的源码的第一步当然是编译Spring源码。首先我们要去GitHub上将spring源码给clone下来。 笔者编译环境如下&#xff1a; Spring版本&#xff1a;5.28 https://github.com/spring-projects/spring-framework/tree/v5.2.8.RELEASE …

人工智能项目集合推荐(数据集 模型训练 C++和Android部署)

人工智能项目集合推荐(数据集 模型训练 C和Android部署) 目录 人工智能项目集合推荐(数据集 模型训练 C和Android部署) 1.三维重建项目集合 ★双目三维重建 ★结构光三维重建 2.AI CV项目集合 ★人脸检测和人体检测 ★人体姿态估计(人体关键点检测) ★头部朝向估计 …

【C++初阶】模拟实现list

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

Consul的简介与安装

1、Consul简介 Consul是一套开源的分布式服务发现和配置管理系统&#xff0c;由HashiCorp公司用Go语言开发&#xff0c;Consul提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用&#xff0c;也可以一起使用以构建全方位的服…

Docker容器与虚拟化技术:GitHub账户注册

目录 一、实验 1.GitHub 一、实验 1.GitHub &#xff08;1&#xff09;GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持Git作为唯一的版本库格式进行托管&#xff0c;故名GitHub。 &#xff08;2&#xff09;官网 GitHub: Let’s build from here …

DQL语句的用法(MySQL)

文章目录 前言一、DQL语句间接和语法1、DQL简介2、DQL语法 二、DQL语句使用1、基础查询&#xff08;1&#xff09;查询多个字段&#xff08;2&#xff09;为字段设置别名&#xff08;3&#xff09;去除重复记录 总结 前言 本文主要介绍SQL语句中DQL语句的功能和使用方法&#…

本地私有仓库、harbor私有仓库部署与管理

本地私有仓库、harbor私有仓库部署与管理 一、本地私有仓库1.本地私有仓库简介2.搭建本地私有仓库3.容器重启策略介绍 二、harbor私有仓库部署与管理1.什么是harbor2.Harbor的特性3.Harbor的构成4.harbor部署及配置5.客户端测试 三、Harbor维护1.创建2.普通用户操作私有仓库3.日…

opencv-全景图像拼接

运行环境 python3.6 opencv 3.4.1.15 stitcher.py import numpy as np import cv2class Stitcher:#拼接函数def stitch(self, images, ratio0.75, reprojThresh4.0,showMatchesFalse):#获取输入图片(imageB, imageA) images#检测A、B图片的SIFT关键特征点&#xff0c;并计算…

C#,《小白学程序》第四课:数学计算

1 文本格式 /// <summary> /// 《小白学程序》第四课&#xff1a;数学计算 /// 这节课超级简单&#xff0c;就是计算成绩的平均值&#xff08;平均分&#xff09; /// 这个是老师们经常做的一件事。 /// </summary> /// <param name"sender"></…

【操作记录】CLion 中引入 Gurobi 并使用 C++ 编程

文章目录 一、前言二、具体操作2.1 创建项目2.2 修改编译工具2.3 修改 CMakeLists.txt2.4 修改 main.cpp2.5 运行测试 一、前言 虽然C编程大部分人都会选择使用VS&#xff0c;但是作为 IDEA 的长期用户&#xff0c;我还是比较习惯 JetBrains 风格的编译器&#xff0c;所以就选…

YARN资源管理框架论述

一、简介 为了实现一个Hadoop集群的集群共享、可伸缩性和可靠性&#xff0c;并消除早期MapReduce框架中的JobTracker性能瓶颈&#xff0c;开源社区引入了统一的资源管理框架YARN。 YARN是将JobTracker的两个主要功能&#xff08;资源管理和作业调度/监控&#xff09;分离&…

Scikit-Learn中的特征选择和特征提取详解

概要 机器学习在现代技术中扮演着越来越重要的角色。不论是在商业界还是科学领域&#xff0c;机器学习都被广泛地应用。在机器学习的过程中&#xff0c;我们需要从原始数据中提取出有用的特征&#xff0c;以便训练出好的模型。但是&#xff0c;如何选择最佳的特征是一个关键问…

NFT Insider #104:The Sandbox:全新土地销售活动 Turkishverse 来袭

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…

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

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

死锁相关概念

死锁的概念 在并发环境下&#xff0c;各进程因竞争资源而造成的一种互相等待对方手里的资源&#xff0c;导致各进程都阻塞&#xff0c;都无法向前推进的现象&#xff0c;就是“死锁”。&#xff08;死锁进程一定处于阻塞态&#xff09; 死锁 各进程互相等待对方手里的资源&a…

论文阅读 FOCUS-AND-DETECT: A SMALL OBJECT DETECTION FRAMEWORK FOR AERIAL IMAGES

文章目录 FOCUS-AND-DETECT: A SMALL OBJECT DETECTION FRAMEWORK FOR AERIAL IMAGESABSTRACT1 Introduction2 Related Work3 Focus-and-Detect3.1 Overview3.2 Focus Stage3.2.1 Generating Ground-Truth Boxes of Focal Regions Using Gaussian Mixture Model 3.3 Detection …