LNMP搭建Discuz和Wordpress

1、LNMP

L:linux操作系统

N:nginx展示前端页面web服务

M:mysql数据库,保存用户和密码,以及论坛相关的内容

P:php动态请求转发的中间件

数据库的作用:

  1. 登录时验证用户名和密码

  2. 创建用户和密码

  3. 发布和评论帖子,需要保存到数据库

2、搭建论坛原理图

3、 编译安装nginx

安装前:

rpm -q nginx,如果显示有这个软件,就yum -y remove nginx

如果显示没有这个软件,或者yum卸载了之后,再nginx -t 看一下有没有执行结果,

如果提示你没有这个命令,说明没有用源码安装过,接下来就可以搞今天的安装内容了;如果不放心,去/usr/local/目录找一下有没有nginx这个目录,有就删掉这个目录。

如果提示有结果,不管是OK还是失败,都说明之前用源码安装过了,这时候去/usr/local/目录下把nginx目录删了,再进行今天的步骤。源码安装只要删除安装目录就行。

准备:关闭防火墙及安全机制,准备接收文件

systemctl stop firewalld        #关闭防火墙
setenforce 0                    #关闭安全机制
rz -E                           //接收文件

第一步:把源码包放入到系统之中。

使用xshell终端的可以直接从本机拖进虚拟机

第二步:安装编译过程中需要的依赖环境。

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel

第三步:创建Nginx程序运行需要的用户和组

useradd -M -s /sbin/nologin nginx   #不创建家目录,指定/sbin/nologin

第四步:编译安装

  1. 解压源码包

tar -xf nginx-1.22.0.tar.gz
cd 到解压出来的目录下进行下面的操作(nginx-1.22.0)
  1. 开始配置,配置程序的安装路径,安装基于程序需要的安装组件(在安装包的目录里进行这个操作,下面有不带注释的版本)

./configure --prefix=/usr/local/nginx \ #配置安装路径
--user=nginx \                          #配置用户
--group=nginx \                         #配置组
--with-http_ssl_module \                #支持https的加密功能ssl/tsl
--with-http_v2_module \                 #支持http2.0协议
--with-http_realip_module \             #支持Nginx获取客户端的真实IP地址
--with-http_stub_status_module \        #支持Nginx获取访问状态信息的功能
--with-http_gzip_static_module \        #支持页面压缩文本
--with-pcre \                           #支持pcre库
--with-stream \                         #支持4层代理的模块
--with-stream_ssl_module \              #支持对tcp连接的加密
--with-stream_realip_module             #持从代理协议中获取客户端的真实ip地址
  1. 编译和安装

make -j 4 && make install   #第一个make:编译;第二个make install:安装
#make -j 4 启动4个CPU进行处理

第五步:后续配置,设置权限和系统管理配置

  1. 配置权限

cd /usr/local 
chown -R nginx.nginx nginx      #对/usr/local目录下nginx目录更改所属
  1. /usr/local/nginx目录下的四个目录的解释

    conf :配置文件目录,主配置文件nginx.conf

    html :工作目录:50x.html默认的访问操作打开的页面,index.html

    logs :日志目录:访问日志、报错日志

    sbin :二进制启动脚本nginx

  2. 做一个软连接,让系统能够识别nginx的指令

ln -s  /usr/local/nginx/sbin/nginx /usr/bin (/usr/sbin也行)

如果系统提示“该文件已存在”,没有关系,这一步也算完成了

  1. 设置系统控制,系统能够对nginx这个软件的运行状态进行控制。

vim /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
#表示支持dns解析以及该软件依赖于网络。
Wants=network-online.target
#先启动网络服务,才能启动nginx
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
#支持多用户模

 1、修改nginx的配置文件,把pid文件的位置指向到设置的位置

cd  /usr/local/nginx
mkdir run
chown -R nginx.nginx /usr/local/nginx/run   #递归修改run目录所属
cd /usr/local/nginx/conf
vim nginx.conf      #编辑要修改的配置文件

修改 nginx.conf 文件的内容中 pid 指向的位置

pid /usr/local/nginx/run/nginx.pid;

修改完后

nginx -t                    #检测nginx.conf当中的语法是否正确,提示OK则正常
systemctl daemon-reload     #重新加载systemd守护进程
systemctl restart nginx     #重启nginx服务
nginx -v                    #查看nginx版本号
systemctl stop nginx        #停止nginx服务

在web页面访问虚拟机IP地址,可以看到“welcome to nginx”

4、安装mysql

本次安装使用的是绿色硬盘版本,无需额外安装依赖环境。

cd /opt
tar -xf mysql安装包
mv 解压出的目录 /usr/local/mysql
#创建程序用户
useradd -M -s /sbin/nologin mysql
#mysql的主配置文件设定所属用户和组
chown -R mysql.mysql /usr/local/mysql/
chown mysql.mysql /etc/my.cnf

  修改配置文件:

vim /etc/my.cnf
[client]
port = 3306
#客户端访问的端口
socket=/usr/local/mysql/mysql.sock
#指定MySQL的通信套接字文件

[mysqld]
user = mysql
basedir=/usr/local/mysql
#MySQL的安装目录
datadir=/usr/local/mysql/data
#MySQL数据保存的目录
port = 3306
#服务端的端口
character-set-server=utf8
#字符集的编码
pid-file = /usr/local/mysql/mysqld.pid
#pid文件位置
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
#表示任意地址都可以访问数据库
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
#MySQL默认的存储引擎
max_allowed_packet=16M
server-id = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#MySQL支持的数据类型和相关的模块

  设置环境变量,声明/宣告MySQL命令便于系统识别:

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

  初始化数据库:

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

设置系统识别,进行操作:  

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl daemon-reload
systemctl restart mysqld

初始化数据库密码:

mysqladmin -u root -p password "123456"
#在交互界面直接回车,不要输入!

  进入数据库:

mysql -u root -p123456
#进入数据库交互界面
show databases;
#创建用户并设置密码
create user 'root'@"%" identified by '123456';
#赋予远程连接的权限
grant all privileges on *.* to 'root'@'%';
#刷新生效
flush privileges;
#修改加密方式,可以进行远程连接
alter user 'root'@'%' identified with mysql_native_password by "123456";
exit;

  数据库安装完成。

5、安装php

1、安装依赖环境:

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 \
oniguruma-devel \
sqlite-devel

 2、编译安装:

tar -xf php-8.1.27.tar.gz
cd php-8.1.27
./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

 --with-mysqli: 启用MySQLi扩展,用于支持MySQL数据库。

--with-zlib: 启用Zlib库,用于压缩和解压缩数据。

--with-curl: 启用cURL库,用于支持对URL的操作,如下载文件等。

--with-gd: 启用GD库,用于处理图像。

--with-jpeg-dir: 指定JPEG库的路径,用于GD库对JPEG格式图片的处理。

--with-png-dir: 指定PNG库的路径,用于GD库对PNG格式图片的处理。

--with-freetype-dir: 指定FreeType库的路径,用于GD库对字体的支持。

--with-openssl: 启用OpenSSL库,用于支持SSL加密和HTTPS协议。

--enable-fpm: 启用PHP-FPM(FastCGI Process Manager),用于提供更高效的PHP进程管理和请求处理。

--enable-mbstring: 启用多字节字符串支持,用于处理多字节字符集的操作。 --enable-xml: 启用XML支持,用于处理XML文档和数据。

--enable-session: 启用会话支持,用于在不同页面间保持用户会话状态。

--enable-ftp: 启用FTP支持,用于对FTP服务器进行操作。

--enable-pdo: 启用PDO(PHP Data Objects),用于支持数据库访问的统一接口。

--enable-tokenizer: 启用Tokenizer扩展,用于对字符串进行分词处理。

--enable-zip: 启用Zip扩展,用于对ZIP文件进行操作。

3、路径优化:使系统能识别到PHP:

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

4、调整PHP配置文件:

 PHP有三个配置文件:

php.ini :主配置文件

php_fpm.conf :进程服务配置文件

www.conf :扩展配置文件,在安装包目录下的/php_fpm.d目录下

调整主配置文件

cp /opt/php-8.1.27/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 -m

调整进程服务配置文件

cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
#--17行--去掉";"注释
pid = run/php-fpm.pid

  调整扩展配置文件

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

 5、启动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 进程进行解析。

cd /opt/php-8.1.27/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl daemon-reload
systemctl restart php-fpm.service
netstat -anpt | grep 9000
#直接看9000端口是不是PHP占用中

6、 配置 Nginx 支持 PHP 解析

nginx.conf中修改

location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            #把当前Nginx的工作目录,作为处理动态请求的目录,访问.php文件就会转发到PHP进行处理
            include        fastcgi_params;
}
systemctl restart nginx.service #重启

 7、验证PHP测试页

vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

 8、验证数据库工作是否正常

进入数据库,创建专门用来保存论坛信息的用户和库

mysql -u root -p123456
#进入数据库交互界面
create database bbs;
create user 'bbsuser'@'%' identified by 'admin123';
#创建用户 bbsuser ,密码 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;
exit

修改测试页:  

vim /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.10.10','bbsuser','admin123');
#ip地址为提供MySQL服务的主机地址
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

测试页面返回Success!则成功,失败则返回Fail!!

6、部署Discuz

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

#调整论坛目录的权限:懒人版
chown -R nginx.nginx bbs/
chmod -R 777 bbs/

#实际需要调整权限的目录
cd /usr/local/nginx/html/bbs/
chown -R nginx ./config/
chown -R nginx ./data/
chown -R nginx ./uc_client/
chown -R nginx ./uc_server/
#以及
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/


浏览器访问
http://192.168.10.10/bbs/install/index.php
安装discuz
访问 192.168.10.10/bbs/index.php
访问 192.168.10.10/bbs/admin.php

7、部署Woedpress

 进入数据库,创建专门用来保存论坛信息的用户和库

mysql -u root -p123456
#进入数据库交互界面
create database wordpress;
#创建数据库wordpress
create user 'wdpuser'@'%' identified by 'admin123';
#创建用户 wdpuser ,密码 admin123
grant all privileges on wordpress.* to 'wdpuser'@'%';
flush privileges;

CREATE USER 'wdpuser'@'localhost' IDENTIFIED BY 'admin123';
grant all privileges on wordpress.* to 'wdpuser'@'localhost';
flush privileges;
exit

解压WordPress的压缩包命名为wordpress,复制解压缩的包到/usr/local/nginx/html下  

cd /usr/local/nginx/html/wordpress
cp wp-config-sample.php wp-config.php
vim wp-config.php
#把对应的数据库名称、用户名、用户密码改成和数据库中的设定一致

#对wordpress目录递归赋权和改变所属
cd ..
chmod -R 777 wordpress
chown -R nginx.nginx  wordpress

浏览器访问http://20.0.0.10/wordpress/index.php

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

存储产品选型策略 OSS生命周期管理与运维

最近在看阿里云的 云存储通关实践认证训练营这个课程还是不错的。 存储产品选型策略、对象存储OSS入门、基于对象存储OSS快速搭建网盘、 如何做好权限控制、如何做好数据安全、如何做好数据管理、涉及对象存储OSS的权限控制、使用OSS完成静态网站托管、对OSS中存储的数据进行分…

ubuntu使用kubeadm搭建k8s集群

一、卸载k8s kubeadm reset -f modprobe -r ipip lsmod rm -rf ~/.kube/ rm -rf /etc/kubernetes/ rm -rf /etc/systemd/system/kubelet.service.d rm -rf /etc/systemd/system/kubelet.service rm -rf /usr/bin/kube* rm -rf /etc/cni rm -rf /opt/cni rm -rf /var/lib/etcd …

压缩感知2——算法模型

采集原理 其中Y就是压缩后的信号表示(M维)&#xff0c;Φ表示采集的测量矩阵&#xff0c;可以是一个随机矩阵&#xff0c;X代表原始的数字信号&#xff08;N维&#xff09;。 常见的测量矩阵——随机高斯矩阵 随机伯努利矩阵 稀疏随机矩阵等&#xff0c;矩阵需要满足与信号的稀…

57、基于概率神经网络(PNN)的分类(matlab)

1、基于概率神经网络(PNN)的分类简介 PNN&#xff08;Probabilistic Neural Network&#xff0c;概率神经网络&#xff09;是一种基于概率论的神经网络模型&#xff0c;主要用于解决分类问题。PNN最早由马科夫斯基和马西金在1993年提出&#xff0c;是一种非常有效的分类算法。…

OpenCV MEI相机模型(全向模型)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 对于针孔相机模型,由于硬件上的限制(如进光量等),他的视野夹角往往有效区域只有140度左右,因此就有研究人员为每个针孔相机前面再添加一个镜片,如下所示: 通过折射的方式增加了相机成像的视野,虽然仍然达不…

精讲:java之多维数组的使用

一、多维数组简介 1.为什么需要二维数组 我们看下面这个例子&#xff1f;“ 某公司2022年全年各个月份的销售额进行登记。按月份存储&#xff0c;可以使用一维数组。如果改写为按季度为单位存储怎么办呢&#xff1f; 或许现在学习了一维数组的你只能申请四个一维数组去存储每…

修改服务器挂载目录

由于我们的项目通常需要挂载一个大容量的数据盘来存储文件数据&#xff0c;所以我们每台服务器都需要一个默认的挂载目录来存放这些数据&#xff0c;但是由于我们的误操作&#xff0c;导致挂载目录名字建错了&#xff0c;这时候后端就读不到挂载目录了&#xff0c;那我们我们的…

公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作

公司内部配置GitLab&#xff0c;通过SSH密钥来实现免密clone、push等操作。以下是配置SSH密钥以实现免密更新的步骤&#xff1a; 1.生成SSH密钥 在本地计算机上打开终端或命令提示符。输入以下命令以生成一个新的SSH密钥&#xff1a;ssh-keygen -t rsa -b 4096 -C "your…

AGE Cypher 查询格式

使用 ag_catalog 中的名为 cypher 的函数构建 Cypher 查询&#xff0c;该函数返回 Postgres 的记录集合。 Cypher() Cypher() 函数执行作为参数传递的 Cypher 查询。 语法&#xff1a;cypher(graph_name, query_string, parameters) 返回&#xff1a; A SETOF records 参…

高铁站客运枢纽IPTV电视系统-盐城高铁站西广场IP电视系统应用浅析

高铁站客运枢纽IPTV电视系统-盐城高铁站西广场IP电视系统应用浅析 由北京海特伟业科技有限公司任洪卓于2024年7月9日发布 随着科技的飞速发展&#xff0c;特别是“互联网”战略的深入推进&#xff0c;高铁站客运枢纽的信息化建设成为提升服务质量、增强乘客体验的重要手段。盐…

FTP与TFTP

1、TFTP&#xff08;简单文件传输协议&#xff09; TFTP是TCP/IP协议族中一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务。 基于UDP协议 端口号&#xff1a;69 特点&#xff1a;简单、轻量级、易于实现 传输过程&…

20240710 每日AI必读资讯

&#x1f916;微软&#xff1a;不会像 OpenAI 一样阻止中国访问 AI 模型 - OpenAI 将于周二&#xff08;7 月 9 日&#xff09;开始阻止中国用户访问其 API。 - 微软发言人表示&#xff1a;Azure OpenAI API服务在中国的提供方式没有变化。 - 公司仍然通过部署在中国以外地区…

uniapp——银行卡号脱敏

样式 代码 {{bankNumber.replace(/(\d{4})(?\d)/g, "●●●● ").replace(/(\d{2})(?\d{2}$)/, " $1")}} 将银行卡号按照每四位一组的方式进行处理&#xff0c;前面的变成 剩下的正常显示

谷粒商城-个人笔记(集群部署篇三)

前言 ​学习视频&#xff1a;​Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强​学习文档&#xff1a; 谷粒商城-个人笔记(基础篇一)谷粒商城-个人笔记(基础篇二)谷粒商城-个人笔记(基础篇三)谷粒商城-个人笔记(高级篇一)谷粒商城-个…

昇思MindSpore25天学习打卡Day17:K近邻算法实现红酒聚类

昇思MindSpore25天学习打卡Day17&#xff1a;K近邻算法实现红酒聚类 1 实验目地2 K近邻算法(KNN)原理介绍2.1 分类问题2.2 回归问题2.3 距离的定义 3 实验环境4 数据处理4.1 数据准备4.2 数据读取与处理4.2.1 导入MindSpore模块和辅助模块 5 模型构建--计算距离6 模型预测 及 打…

java算法day9

232.用栈实现队列 用队列实现栈 有效的括号 删除字符串中的所有相邻重复项 逆波兰表达式求值 解决栈和队列的基本数据结构 Queue&#xff08;队列&#xff09; 在java中是一个接口。定义的方法&#xff1a; //boolean add(E e): 将指定的元素插入此队列&#xff08;如果…

软考高级里《系统架构设计师》容易考吗?

我还是22年通过的架构考试。系统架构设计师属于软考高级科目&#xff0c;难度比初级和中级都要大&#xff0c;往年的通过率也比较低&#xff0c;一般在10-20%左右。从总体来说&#xff0c;这门科目确实是不好过的&#xff0c;大家如果想要备考系统架构设计师的话&#xff0c;还…

【界面态】霍尔效应表征氮化对SiC/SiO2界面陷阱的影响

引言 引言主要介绍了硅碳化物&#xff08;SiC&#xff09;金属-氧化物-半导体场效应晶体管&#xff08;MOSFETs&#xff09;作为新一代高压、低损耗功率器件的商业化背景。SiC MOSFETs因其优越的电气特性&#xff0c;在高电压和高温应用领域具有巨大的潜力。然而&#xff0c;尽…

Leedcode刷题——7 滑动窗口 双指针

注&#xff1a;以下代码均为c 1. 两数之和2&#xff08;输入有序数组&#xff09; // 法1&#xff1a;暴力 vector<int> twoSum1(vector<int>& numbers, int target) {vector<int> ans(2);int n numbers.size();for(int i 0; i < n-1; i){if(i ! 0…

预算有限?如何挑选经济适用的安全管理系统?

如今&#xff0c;无论是信息安全、生产安全还是人员安全&#xff0c;都直接关系到企业的稳定运营和长远发展。然而&#xff0c;对于许多中小企业而言&#xff0c;高昂的安全管理系统投入往往成为一大难题。那么&#xff0c;在预算有限的情况下&#xff0c;如何挑选一款既经济适…