当前位置: 首页 > news >正文

LNMP架构:搭建Discuz论坛

文章目录

  • 1. 编译安装Nginx
    • 1.1 前置准备
    • 1.2 编译安装
    • 1.3 添加nginx系统服务
  • 2.编译安装MySql
    • 2.1 前置准备
    • 2.2 编译安装
    • 2.3 修改mysql 配置文件
    • 2.4 设置路径环境变量
    • 2.5 初始化数据库
    • 2.6 添加musql系统服务
    • 2.7 修改MySql登录密码
  • 3. 编译安装PHP
    • 3.1 前置准备
    • 3.2 编译安装
    • 3.3 复制模版文件作为PHP 的主配置文件,进行修改
    • 3.4 把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
    • 3.5 调整进程服务配置文件
    • 3.6 调整扩展配置文件
    • 3.7 启动php-fpm
    • 3.8 配置 Nginx 支持 PHP 解析
    • 3.9 验证PHP测试页
  • 4. 搭建Discuz论坛
    • 4.1 创建数据库并进行授权
    • 4.2 解压论坛压缩包并上传站点压缩包
    • 4.3 调整论坛目录的权限
    • 4.4 安装Discuz论坛

1. 编译安装Nginx

1.1 前置准备

systemctl stop firewalld
setenforce 0
#关闭防火墙和selinux服务yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#安装依赖包

在这里插入图片描述

useradd -M -s /sbin/nologin nginx
#Nginx 服务程序默认以 nobody 身份运行,为其创建专门的用户账号,以便更准确地控制其访问权限

1.2 编译安装

cd /opttar zxvf nginx-1.22.0.tar.gz -C /opt/
#解压缩源码包

在这里插入图片描述

cd nginx-1.22.0/
#搭建编译环境
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_modulemake -j2 && make install
#编译并安装

在这里插入图片描述

ln -s /apps/nginx/sbin/nginx /usr/sbin/
#让系统识别nginx的操作命令

1.3 添加nginx系统服务

vim /lib/systemd/system/nginx.service
vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.targetsystemctl daemon-reload
#重新加载
systemctl start nginx
#启动服务

在这里插入图片描述

2.编译安装MySql

2.1 前置准备

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
#安装Mysql环境依赖包useradd -M -s /sbin/nologin  mysql
#创建运行用户

2.2 编译安装

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz
#解压缩软件包

在这里插入图片描述

cd /opt/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_EXTRA_CHARSETS=all \
-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
#编译并安装

在这里插入图片描述

2.3 修改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                    #设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid       #指定pid 进程文件路径
socket = /usr/local/mysql/mysql.sock         #指定数据库连接文件
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
#更改mysql安装目录和配置文件的属主属组
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

2.4 设置路径环境变量

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profileecho 'export PATH' >> /etc/profilesource /etc/profile  #刷新使其生效

2.5 初始化数据库

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

在这里插入图片描述

2.6 添加musql系统服务

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

在这里插入图片描述

2.7 修改MySql登录密码

mysqladmin -u root -p password "abc123" 
#刚开始没密码是空的直接回车

在这里插入图片描述

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

在这里插入图片描述

3. 编译安装PHP

3.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 xf php-7.1.10.tar.bz2
#解压软件模块

3.2 编译安装

cd 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 扩展支持
--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压缩格式

在这里插入图片描述

make -j2 && make install
#编译并安装

在这里插入图片描述

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

#php有三个配置文件: 
php.ini			主配置文件  
php-fpm.conf	进程服务配置文件 
www.conf		扩展配置文件cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.inivim /usr/local/php/lib/php.ini

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

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

ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/php -m 
#查看php加载了那些模块

在这里插入图片描述

3.5 调整进程服务配置文件

cd /usr/local/php/etc/cp  php-fpm.conf.default php-fpm.confvim php-fpm.conf

在这里插入图片描述

3.6 调整扩展配置文件

cd /usr/local/php/etc/php-fpm.d/cp www.conf.default www.conf

在这里插入图片描述

3.7 启动php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
#PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。ss -natp |grep 9000|tr -s " "

在这里插入图片描述

cd /opt/php-7.1.10/sapi/fpmcp php-fpm.service /usr/lib/systemd/system/php-fpm.service
#拷贝模板文件
systemctl restart php-fpm.service

在这里插入图片描述

3.8 配置 Nginx 支持 PHP 解析

vim /apps/nginx/conf/nginx.conf
#编辑主配置文件

在这里插入图片描述

sytemctl restart nginx
#重启服务

3.9 验证PHP测试页

#创建网页文件
vim /apps/nginx/html/index.php<?php
phpinfo();
?>#重启nginx服务
systemctl restart nginx#在网页测试
http://192.168.67.100/index.php

在这里插入图片描述

4. 搭建Discuz论坛

4.1 创建数据库并进行授权

#验证数据库工作是否正常
mysql -u root -pCREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
#刷新数据库

在这里插入图片描述

show databases;
#查看当前创建数据库

在这里插入图片描述

4.2 解压论坛压缩包并上传站点压缩包

unzip Discuz_X3.4_SC_UTF8.zip  cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/

在这里插入图片描述

4.3 调整论坛目录的权限

#改权限 改属组属主
cd /apps/nginx/html/bbs/chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

4.4 安装Discuz论坛

http://192.168.67.100/bbs/install/index.php

进入安装向导界面
在这里插入图片描述
进入开始安装界面
在这里插入图片描述
设置运行环境
在这里插入图片描述

进入安装数据库界面,等待安装完成

在这里插入图片描述

访问论坛

http://192.168.67.100/bbs/index.php

在这里插入图片描述

相关文章:

LNMP架构:搭建Discuz论坛

文章目录 1. 编译安装Nginx1.1 前置准备1.2 编译安装1.3 添加nginx系统服务 2.编译安装MySql2.1 前置准备2.2 编译安装2.3 修改mysql 配置文件2.4 设置路径环境变量2.5 初始化数据库2.6 添加musql系统服务2.7 修改MySql登录密码 3. 编译安装PHP3.1 前置准备3.2 编译安装3.3 复制…...

详解Numpy(基于jupyter notebook)

详解Numpy&#xff08;基于jupyter notebook&#xff09; 1.创建数组2.数据类型3.数组切片和索引4.Numpy的广播与数组操作5.数组合并与通用函数6.其他通用函数 1.创建数组 #引入numpy包&#xff0c;以后np就代表numpy import numpy as npanp.arange(10,30,2)#10为起点&#xf…...

nvm集合node版本,解决新版本jeecgboot3.5.3前端启动失败问题

jeecgboot前端3.5.3页面如下 使用之前的pnpm启动会报错&#xff0c;pnpm是node进行安装的&#xff0c;查询后发现&#xff0c;vue3版本的页面至少需要node16版本&#xff0c;我之前的版本只有15.5&#xff0c;适用于vue2 那么我将先前的node15.5版本删除&#xff0c;然后安装…...

Windows命令行初步:更改配色、提示符以及编码方式

文章目录 启动和退出窗口标题和提示符命令行颜色更改编码 启动和退出 按下winR&#xff0c;调出运行窗口&#xff0c;输入cmd就可以进入命令行了。在Win10以前的系统种&#xff0c;如果在命令行中再输入一个cmd&#xff0c;就会再打开一个命令行。但最近的Win11版本中&#xf…...

uniapp onLoad生命周期 uni.$on接受参数无法改变data数据解决办法

问题阐述&#xff1a; a: uni.$emit(name,data)uni.navigateTo({url:b})b:onload(){ uni.$on(name,(res)>{ this.nameres console.log(this.name) })}用以上写法来跨页面传参会发现在b页面&#xff0c;虽然能够接受到参数但是赋值到data时候没生效&#xff0c;虽然控制台能…...

Android Camera开发入门(4):USB/UVC Camera的使用

Android Camera开发入门(4):USB/UVC Camera的使用 本文基于开源项目https://github.com/saki4510t/UVCCamera之上进行二次封装和使用 在前几篇文章中,我们介绍了Camera到CameraX的基础功能应用,同时附上了相关代码,需要的源码的大佬们可以滑到最底部获取。 本篇我们一起…...

Java网络爬虫——jsoup快速上手,爬取京东数据。同时解决‘京东安全’防爬问题

文章目录 介绍jsoup使用1.解析url&#xff0c;获取前端代码2.解决京东安全界面跳转3.获取每一组的数据4.获取商品数据的具体信息4.最终代码 介绍 网络爬虫&#xff0c;就是在浏览器上&#xff0c;代替人类爬取数据&#xff0c;Java网络爬虫就是通过Java编写爬虫代码&#xff0…...

外观模式:简化复杂子系统的访问与使用

文章目录 1. 简介2. 外观模式的基本结构3. 外观模式的实现步骤4. 外观模式的应用与实例4.1 图形界面库的外观模式应用4.2 文件压缩与解压缩的外观模式应用4.3 订单处理系统的外观模式应用 5. 外观模式的优缺点5.1 优点5.2 缺点 6. 总结 1. 简介 外观模式是一种结构型设计模式&…...

代码随想录day38|509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯

509. 斐波那契数 class Solution:def fib(self, n: int) -> int:#dp含义&#xff0c;递推公式&#xff0c;dp初始化&#xff0c;遍历顺序&#xff0c;打印dpif n 0:return 0dp [0] * (n1)dp[0]0dp[1]1for i in range(2,n1):dp[i] dp[i-1] dp[i-2]return dp[n] 70. 爬楼梯…...

UE5 C++ UGameInstance 功能、作用及应用

# UE5 C UGameInstance 功能及作用 网上有很多文章介绍&#xff0c;例如在游戏中只有一个实例&#xff0c;换关卡不会丢失等。暂时省略。 # UE5 C UGameInstance 应用 ## 应用一&#xff0c;UE5 C UGameInstance 里监听player创建事件 UWebSocketGameInstance.h里的定义 …...

NodeJs-http模块

目录 一、概念二、请求报文的组成三、响应报文的组成四、创建http服务4.1 操作步骤4.2 注意事项 五、获取 HTTP 请求报文5.1 获取请求报文5.2 提取路径和查询字符串 六、设置 HTTP 响应报文七、MIME设置资源类型 一、概念 HTTP&#xff08;hypertext transport protocol&#…...

翻译句子 前面的路是非常狭窄的 不能翻译成 the ahead of road is narrow 的原因

翻译句子 前面的路是非常狭窄的。The road ahead is very narrow. 可以将句子翻译成 “The ahead of road is narrow.”&#xff0c;但这个翻译可能不太符合英语的表达习惯。更常见的表达方式是 “The road ahead is narrow.”&#xff0c;这样更符合英语的语法和习惯用法。 …...

NTT功能与实现

NTT的基础功用与拓展功能: 1.evaluate和interpolate evaluate的本质是选择n个点(假设f(x)的度为n)&#xff0c;计算得到其值&#xff0c;因此根据定义可以直接进行代入计算。为了加快计算的过程选取 w n w_n wn​的幂次(DFT问题即离散傅里叶变换)&#xff0c;使用FFT算法来加…...

Flutter(九)Flutter动画和自定义组件

目录 1.动画简介2.动画实现和监听3. 自定义路由切换动画4. Hero动画5.交织动画6.动画切换7.Flutter预置的动画过渡组件自定义组件1.简介2.组合组件3.CustomPaint 和 RenderObject 1.动画简介 Animation、Curve、Controller、Tween这四个角色&#xff0c;它们一起配合来完成一个…...

【python】可视化

柱状图 matplotlib之pyplot模块之柱状图&#xff08;bar()&#xff1a;基础参数、外观参数&#xff09;_plt.bar_mighty13的博客-CSDN博客 bar()的基础参数如下&#xff1a; x&#xff1a;柱子在x轴上的坐标。浮点数或类数组结构。注意x可以为字符串数组&#xff01; height&…...

C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题

问题重现 定义了两个接口IA IB class IA{public:virtual void funA() = 0; }; class IB{public:virtual void funB() = 0; }...

C++:日期类

学习目标&#xff1a; 加深对四个默认构造函数的理解&#xff1a; 1.构造函数 2.析构函数 3.拷贝构造 4.运算符重载 实现功能 1.比较日期的大小 2.日期-天数 3.前/后置&#xff0c;-- 这里基本会使用运算符重载 定义一个日期类 class Date { public://1.全缺省参数的构造函数Da…...

c++ 学习之 构造函数的使用

上代码 class person { public:person(){cout << " person 的无参默认构造函数 " << endl;}person(int age){cout << " person 的有参默认构造函数 " << endl;m_age age;}person(const person& other){cout << "…...

算法通关村15关 | 超大规模数据场景常见问题

1.用4KB内存寻找重复元素 题目&#xff1a;给定一个数组&#xff0c;包含从1到N的整数&#xff0c;N最大为32000&#xff0c;数组可能还有重复值&#xff0c;且N的取值不定&#xff0c;若只有4KB的内存可用&#xff0c;该如何打印数组中所有重复元素。 分析&#xff1a; 本身是…...

qemu编译与使用

文章目录 1、安装依赖2、下载qemu源码3、编译4、运行5、qemu参数 qemu 是一个硬件虚拟化程序&#xff08;hypervisor that performs hardware virtualization&#xff09;&#xff0c;与传统的 VMware / VirtualBox 之类的虚拟机不同&#xff0c;它可以通过 binary translation…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...