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(基于jupyter notebook) 1.创建数组2.数据类型3.数组切片和索引4.Numpy的广播与数组操作5.数组合并与通用函数6.其他通用函数 1.创建数组 #引入numpy包,以后np就代表numpy import numpy as npanp.arange(10,30,2)#10为起点…...

nvm集合node版本,解决新版本jeecgboot3.5.3前端启动失败问题
jeecgboot前端3.5.3页面如下 使用之前的pnpm启动会报错,pnpm是node进行安装的,查询后发现,vue3版本的页面至少需要node16版本,我之前的版本只有15.5,适用于vue2 那么我将先前的node15.5版本删除,然后安装…...

Windows命令行初步:更改配色、提示符以及编码方式
文章目录 启动和退出窗口标题和提示符命令行颜色更改编码 启动和退出 按下winR,调出运行窗口,输入cmd就可以进入命令行了。在Win10以前的系统种,如果在命令行中再输入一个cmd,就会再打开一个命令行。但最近的Win11版本中…...
uniapp onLoad生命周期 uni.$on接受参数无法改变data数据解决办法
问题阐述: a: uni.$emit(name,data)uni.navigateTo({url:b})b:onload(){ uni.$on(name,(res)>{ this.nameres console.log(this.name) })}用以上写法来跨页面传参会发现在b页面,虽然能够接受到参数但是赋值到data时候没生效,虽然控制台能…...
Android Camera开发入门(4):USB/UVC Camera的使用
Android Camera开发入门(4):USB/UVC Camera的使用 本文基于开源项目https://github.com/saki4510t/UVCCamera之上进行二次封装和使用 在前几篇文章中,我们介绍了Camera到CameraX的基础功能应用,同时附上了相关代码,需要的源码的大佬们可以滑到最底部获取。 本篇我们一起…...

Java网络爬虫——jsoup快速上手,爬取京东数据。同时解决‘京东安全’防爬问题
文章目录 介绍jsoup使用1.解析url,获取前端代码2.解决京东安全界面跳转3.获取每一组的数据4.获取商品数据的具体信息4.最终代码 介绍 网络爬虫,就是在浏览器上,代替人类爬取数据,Java网络爬虫就是通过Java编写爬虫代码࿰…...

外观模式:简化复杂子系统的访问与使用
文章目录 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含义,递推公式,dp初始化,遍历顺序,打印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 功能及作用 网上有很多文章介绍,例如在游戏中只有一个实例,换关卡不会丢失等。暂时省略。 # UE5 C UGameInstance 应用 ## 应用一,UE5 C UGameInstance 里监听player创建事件 UWebSocketGameInstance.h里的定义 …...
NodeJs-http模块
目录 一、概念二、请求报文的组成三、响应报文的组成四、创建http服务4.1 操作步骤4.2 注意事项 五、获取 HTTP 请求报文5.1 获取请求报文5.2 提取路径和查询字符串 六、设置 HTTP 响应报文七、MIME设置资源类型 一、概念 HTTP(hypertext transport protocol&#…...
翻译句子 前面的路是非常狭窄的 不能翻译成 the ahead of road is narrow 的原因
翻译句子 前面的路是非常狭窄的。The road ahead is very narrow. 可以将句子翻译成 “The ahead of road is narrow.”,但这个翻译可能不太符合英语的表达习惯。更常见的表达方式是 “The road ahead is narrow.”,这样更符合英语的语法和习惯用法。 …...

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

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

【python】可视化
柱状图 matplotlib之pyplot模块之柱状图(bar():基础参数、外观参数)_plt.bar_mighty13的博客-CSDN博客 bar()的基础参数如下: x:柱子在x轴上的坐标。浮点数或类数组结构。注意x可以为字符串数组! height&…...
C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题
问题重现 定义了两个接口IA IB class IA{public:virtual void funA() = 0; }; class IB{public:virtual void funB() = 0; }...

C++:日期类
学习目标: 加深对四个默认构造函数的理解: 1.构造函数 2.析构函数 3.拷贝构造 4.运算符重载 实现功能 1.比较日期的大小 2.日期-天数 3.前/后置,-- 这里基本会使用运算符重载 定义一个日期类 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内存寻找重复元素 题目:给定一个数组,包含从1到N的整数,N最大为32000,数组可能还有重复值,且N的取值不定,若只有4KB的内存可用,该如何打印数组中所有重复元素。 分析: 本身是…...
qemu编译与使用
文章目录 1、安装依赖2、下载qemu源码3、编译4、运行5、qemu参数 qemu 是一个硬件虚拟化程序(hypervisor that performs hardware virtualization),与传统的 VMware / VirtualBox 之类的虚拟机不同,它可以通过 binary translation…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
python打卡第47天
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图,展示模…...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...

npm安装electron下载太慢,导致报错
npm安装electron下载太慢,导致报错 背景 想学习electron框架做个桌面应用,卡在了安装依赖(无语了)。。。一开始以为node版本或者npm版本太低问题,调整版本后还是报错。偶尔执行install命令后,可以开始下载…...