搭建Discuz论坛

lnmp

l:linux操作系统
n:nginx前端页面
m:mysql数据库,账号密码等等都是保存在这个数据库里面
p:php------nginx擅长处理的是静态页面,页面登录账户,需要请求到数据库,通过php把动态请求转发数据库

搭建Discuz论坛

1、编译安装数据库mysql

安装依赖源

apt install -y libaio1 libncurses5

将mysql的源代码包放置到/opt的目录下,然后解压mysql源代码包,将解压好的mysql移到/usr/local/目录下

tar -xf mysql-8.0.30-el7-x86_64.tar.gz
mv mysql-8.0.30-el7-x86_64 /usr/local/mysql

创建用户并修改mysql的所属者和所属组为mysql

useradd -s /usr/sbin/nologin mysql
chown -R mysql.mysql mysql/

修改mysql的主配置文件,并修改其的所属者和所属组

vim /etc/my.cnf[client]port = 3306socket=/usr/local/mysql/mysql.sock[mysqld]user = mysqlbasedir=/usr/local/mysqldatadir=/usr/local/mysql/dataport = 3306character-set-server=utf8pid-file = /usr/local/mysql/mysqld.pidsocket=/usr/local/mysql/mysql.sockbind-address = 0.0.0.0skip-name-resolvemax_connections=2048default-storage-engine=INNODBmax_allowed_packet=16Mserver-id = 1sql_mode = 	STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_D		IVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION保存退出
chown mysql.mysql /etc/my.cnf

配置环境变量

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile 

初始化数据库,并给/etc/init.d/mysqld赋权

cd /usr/local/mysql/bin
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/datacd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
#刷新和重启
systemctl daemon-reload
systemctl restart mysql
#查看数据库的端口是否开启
netstat -antp | grep 3306

初始化数据库密码

mysqladmin -u root -p password "123456"
#测试数据库是否完成
mysql -u root -p123456
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%';
flush privileges;
alter user 'root'@'%' identified with mysql _native_password by '123456';

2、php

安装php的依赖环境
将php的源码包放到/opt目录下,并将其解压

apt-get install -y libgd-dev libjpeg8-dev libpng-dev libfreetype6-dev libxml2-dev zlib1g-dev libcurl4-openssl-dev libssl-dev libonig-dev libsqlite3-dev
tar -xf php-8.1.27.tar.gz

创建用户

groupadd nobody

编译安装

编译
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-pdo-mysql \
--with-openssl \
--with-sqlite-devel \
--with-oniguruma-devel \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
安装
make -j 4 && make install

建立软链接

ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

php有三个配置文件
php.ini:主配置文件
php-fpm.conf:进程服务端的配置文件
www.conf:扩展配置文件
php.ini:主配置文件

#从php源码包中复制主配置文件到指定目录
cp php.ini-development /usr/local/php/lib/php.ini
#修改主配置文件
vim /usr/local/php/lib/php.ini
#第976行
date.timezone = Asia/Shanghai
#第1181行
mysqli.default_socket = /usr/local/mysql/mysql.sock

php-fpm.conf:进程服务端的配置文件

cd /usr/local/php/etc/
#把 php-fpm.conf.default重命名php-fpm.conf
cp php-fpm.conf.default  php-fpm.conf
vim php-fpm.conf
#第17行去掉注释,并改变路径
pid = /var/log/php-fpm.pid
#第24行去掉注释,改变路径
error_log = /var/log/php-fpm.pid

www.conf:扩展配置文件

cp /usr/local/php/etc/php-fpm.d/www.conf.default   /usr/local/php/etc/php-fpm.d/www.conf
#启动
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
#把系统管理文件复制到指定目录
cp php-fpm.service  /usr/lib/systemd/system/php-fpm.service

3、nginx的配置

修改nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
loction / {root /var/www/html;index index.html;
}
location ~ \.php$ {#locatioan的正则匹配root /var/www/html;fastcgi_pass 127.0.0.1:9000;#指定转发动态请求的地址fastcgi_index index.php;#指定处理动态请求的文件和后缀名fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;#表示当前请求的脚本路径,$fastcgi_script_name/bbs/install/index.phpfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#$document_root,nginx访问的默认的路径/usr/local/nginx/html/bbs/install/index.php,变量赋值,传给phpinclude fastcgi_params;#使用include指令,把fastcgi_param的配置合并到一起
}
#重启nginx
systemctl restart nginx

创建数据库

mysql -u root -p123456
CREATE DATABASE bbs;
CREATE USER 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT ALL PRIVILEGES ON bbs.* TO 'bbsuser'@'%';
FLUSH PRIVILEGES;
CREATE USER 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
GRANT ALL PRIVILEGES ON bbs.* TO 'bbsuser'@'localhost';
FLUSH PRIVILEGES;

创建网页文件

cd /usr/local/nginx/html
vim index.php
<?php
$link=mysqli_connect('192.168.233.61','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

4、搭建论坛discuz

将discuz源码包放到/opt目录下,并将其解压到dis目录下

unzip Discuz_X3.5_SC_UTF8.zip -d /opt/dis/

创建目录

mkdir -p /var/www/html
#拷贝文件到数据
cp -r upload/ /var/www/html/bbs/
cd  /var/www/html/bbs/config
cp config_global_default.php config_global.php
cp config_ucenter_default.php config_ucenter.php
#修改所属者和所属组
chmod -R 777 bbs/
chown -R nginx.nginx bbs/

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

nginx的优化

1、隐藏版本号

第一种:通用方法编译,apt,yum都可以使用

vim nginx.conf
在http模块
http {
server_tokens off;
}

在这里插入图片描述

在这里插入图片描述
第二种(仅限于编译安装)

vim /opt/nginx-1.22.0/src/core/nignx.h
第13行和14行可以改成xy104和xy105
cd /opt/nginx-1.22.0
./configure --prefix=/usr/local/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 -j 4 && make install
vim /usr/local/nignx/conf/nginx.conf
http {
server_tokens on;
}
systemctl restart nginx

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

2、日志分割

nginx本身没有设计日志分割的工具,是由运维人员自己进行处理和分割
使用shell脚本实现日志分割

vim /opt/nginxlogs.sh
#!/bin/bash
d=$(date +%Y-%m-%d)
#直接获取当前日期
dir=/usr/local/nginx/logs”
#获取日志目录所在的位置
logs_access='/usr/local/nginx/logs/access.log'
logs_error='/usr/local/nginx/logs/error.log'
#定义需要分割的日志文件
pid_file='/usr/local/nginx/run/nginx.pid'
#定义pid文件的位置
if [ ! -d "$dir" ]
then
mkdir -p $dir
fi
mv ${logs_access} ${dir}/access_${d}.log
mv ${logs_error} ${dir}/error_${d}.log
kill -USR1 $(cat ${pid_file})
#-USR1,通过发送USR1这个信号,给nginx的主进程,让nginx重新生成access.log和error.log#日志清理,清理30天以前的日志
find $dir -mtime +30 -exec rm -rf {} \;

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

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

相关文章

鸿蒙分享(四):弹窗简单封装

代码仓库&#xff1a;https://gitee.com/linguanzhong/share_harmonyos 鸿蒙api:12 引用的harmony-utils地址&#xff1a;OpenHarmony三方库中心仓 引用的harmony-dialog地址&#xff1a;OpenHarmony三方库中心仓 引用的loading-dialog地址OpenHarmony三方库中心仓 import…

厦门凯酷全科技有限公司抖音电商服务的卓越典范

在短视频和直播带货迅速崛起的时代&#xff0c;厦门凯酷全科技有限公司&#xff08;以下简称“凯酷全科技”&#xff09;以其专业的服务、创新的精神以及对市场的深刻理解&#xff0c;在抖音电商领域中脱颖而出&#xff0c;成为众多品牌商家信赖的选择。本文将深入探讨凯酷全科…

扫二维码进小程序的指定页面

草料二维码解码器 微信开发者工具 获取二维码解码的参数->是否登陆->跳转 options.q onLoad: function (options) {// console.log("options",options.q)if (options && options.q) {// 解码二维码携带的链接信息let qrUrl decodeURIComponent(optio…

MitelMiCollab 身份绕过导致任意文件读取漏洞复现(CVE-2024-41713)

0x01 产品描述: Mitel MiCollab 是一个企业协作平台,它将各种通信工具整合到一个应用程序中,提供语音和视频通话、消息传递、状态信息、音频会议、移动支持和团队协作功能。0x02 漏洞描述: Mitel MiCollab 的 NuPoint 统一消息 (NPM) 组件中存在身份验证绕过漏洞,由于输入…

电子商务人工智能指南 6/6 - 人工智能生成的产品图像

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

如何在 Ubuntu 上安装开源监控工具 Uptime Kuma

简介 Uptime Kuma&#xff08;或简称 Kuma&#xff09;是一个开源监控工具&#xff0c;用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能&#xff0c;如多语言支持、多个状态页面、代理支持等。 接下来&#xff0c;我将一步一步教大家如何进行安装和部署&am…

国城杯2024——Curve

相关知识链接&#xff1a;https://tangcuxiaojikuai.xyz/post/187210a7.html #sagemath from Crypto.Util.number import *def add(P, Q):(x1, y1) P(x2, y2) Qx3 (x1*y2 y1*x2) * inverse(1 d*x1*x2*y1*y2, p) % py3 (y1*y2 - a*x1*x2) * inverse(1 - d*x1*x2*y1*y2, p…

第三部分:进阶概念 8.事件处理 --[JavaScript 新手村:开启编程之旅的第一步]

JavaScript 事件处理是 Web 开发中不可或缺的一部分&#xff0c;它允许开发者响应用户的交互行为&#xff08;如点击、键盘输入等&#xff09;或浏览器的行为&#xff08;如页面加载完成&#xff09;。通过事件处理&#xff0c;我们可以使网页更加动态和互动。以下是关于 JavaS…

STM32WB55 FUS烧录

FUS固件下载 Firmware Update Service&#xff08;FUS&#xff09;是一种用于在STM32WB微控制器上更新固件的功能。FUS下载是指通过FUS服务进行固件更新的过程。通过FUS下载&#xff0c;您可以通过无线方式将新的固件加载到STM32WB设备中&#xff0c;而无需使用传统的有线编程方…

BERT模型的实现

本文用 pytorch 实现一个BERT模型。 食用方法&#xff1a; 直接下载完整实现&#xff0c; 在自己本地跑一遍&#xff0c;保证不报错。先完成数据预处理阶段&#xff08;1-4&#xff09;的代码阅读&#xff0c;然后按照如下关键点的描述完成代码的实现。自己看着代码手写后续部…

Qt之第三方库‌QXlsx使用(三)

Qt开发 系列文章 - QXlsx&#xff08;三&#xff09; 目录 前言 一、Qt开源库 二、QXlsx 1.QXlsx介绍 2.QXlsx下载 3.QXlsx移植 4.修改项目文件.pro 三、使用技巧 1.添加头文件 2.写入数据 3.读出数据 总结 前言 Qt第三方控件库是指非Qt官方提供的、用于扩展Qt应用…

框架篇面试

一、Spring框架中的单例bean的安全性 Spring框架中有一个Scope注解&#xff0c;默认的值就是singleton&#xff0c;单例的&#xff1b;因为一般在spring的bean中注入的都是无状态的对象&#xff0c;所以没有线程安全问题。但是如果在bean中定义了可修改的成员变量&#xff0c;…

OpenAI 发布 o1 LLM,推出 ChatGPT Pro

OpenAI正式发布了专为复杂推理而构建的 OpenAI o1大型语言模型(LLM)。 该公司还推出了 ChatGPT Pro&#xff0c;这是一项每月 200 美元的套餐&#xff0c;包括无限制访问 OpenAI o1、o1-mini、GPT-4o 和高级语音对话。 OpenAI o1 从 9 月 12 日起在 ChatGPT 中推出预览版&…

【Linux】文件描述符fd

1.前置预备 文件 内容 属性访问文件之前&#xff0c;都必须先打开他 #include<stdio.h> int main() { FILE* fpfopen("log.txt","w"); if(fpNULL) { perror("fopen"); return 1; } fclose(fp); return 0…

字节高频算法面试题:小于 n 的最大数

问题描述&#xff08;感觉n的位数需要大于等于2&#xff0c;因为n的位数1的话会有点问题&#xff0c;“且无重复”是指nums中存在重复&#xff0c;但是最后返回的小于n最大数是可以重复使用nums中的元素的&#xff09;&#xff1a; 思路&#xff1a; 先对nums倒序排序 暴力回…

李飞飞首个“空间智能”模型发布:一张图,生成一个3D世界 | LeetTalk Daily

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心筛选&#xff0c;为您带来最新鲜、最具洞察力的科技新闻。 在人工智能技术迅速发展的背景下&#xff0c;李飞飞创立的世界实验室于近期发布了首个“空间智能”模型&#xff0c;这一创新成果引发了3D生…

Cursor+Devbox AI开发快速入门

1. 前言 今天无意间了解到 Cursor 和 Devbox 两大开发神器,初步尝试以后发现确实能够大幅度提升开发效率,特此想要整理成博客以供大家快速入门. 简单理解 Cursor 就是一款结合AI大模型的代码编辑器,你可以将自己的思路告诉AI,剩下的目录结构的搭建以及项目代码的实现均由AI帮…

机器学习--绪论

开启这一系列文章的初衷&#xff0c;是希望搭建一座通向机器学习世界的桥梁&#xff0c;为有志于探索这一领域的读者提供系统性指引和实践经验分享。随着人工智能和大数据技术的迅猛发展&#xff0c;机器学习已成为推动技术创新和社会变革的重要驱动力。从智能推荐系统到自然语…

计算机毕设-基于springboot的实践性教学系统设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

SpringMvc完整知识点二(完结)

SpringMVC获取请求参数 环境准备工作等均省略&#xff0c;可详见快速入门&#xff0c;此处只写非共有部分代码 该部分示例项目SpringMvcThree已上传至Gitee&#xff0c;可自行下载 客户端请求参数的格式为&#xff1a;namevalue&passwordvalue... ... 服务端想要获取请求…