LNMP搭建以及Discuz论坛部署

目录

LNMP

编译安装

LNMP搭建 

Nginx 服务

MySQL 服务

PHP 解析环境

部署 Discuz社区论坛


LNMP

目前成熟的企业网站的应用模式之一,指的是一套协同工作的系统和相关软件,能提供静态页面服务和动态web服务
L linux系统
N nginx网站服务,前端。提供前端的静态页面服务。同时具有代理和转发的作用。转发后端请求。转发到 PHP。nginx没有处理动态资源的功能,他有可以支持动态请求的模块。
M mysql 关系型数据库,主要保存用户的账号和密码
P PHP 动态页面的编程语言,负责解释动态网页文件,和nginx以及数据库协同工作。PHP的主要作用就是web开发。

编译安装

用二进制包进行安装
yum安装只是安装了基础的服务模块,其他模块要想使用,用户要手动重新安装,编译安装可以自由的指定需要的模块,企业中nginx、mysql都是编译安装

LNMP搭建 

 关闭防火墙,禁止防火墙开机自启,关闭安全机制

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

Nginx 服务

1、安装依赖包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

 2、创建运行用户

useradd -M -s /sbin/nologin nginx

 3、编译安装

cd /opt
tar zxvf nginx-1.22.0.tar.gz -C /opt/cd nginx-1.22.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_modulemake -j 4 && make install

4、优化路径

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

 5、添加 Nginx 系统服务

vim /lib/systemd/system/nginx.service[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.targetchmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

MySQL 服务

1、安装Mysql环境依赖包 

yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

 2、创建运行用户

useradd -M -s /sbin/nologin  mysql

 3、编译安装

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \       #指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \                             #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \            #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \                       #指定默认使用的字符集编码,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \           #指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \               #安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \             #安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \            #安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \         #指定数据库文件的存储路径
-DWITH_BOOST=boost \                            #指定boost的路径,
-DWITH_SYSTEMD=1                                #生成便于systemctl管理的文件make && make install

4、修改mysql 配置文件

vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1sql_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

 5、更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

 6、设置路径环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile	
source /etc/profile

7、初始化数据库

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

8、添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld

9、修改mysql 的登录密码

mysqladmin -u root -p password "123456"

10、授权远程登录

mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by '123456';   
flush privileges;

注一定要有分号

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

2、编译安装 

cd /opt
tar jxvf php-7.1.10.tar.bz2cd php-7.1.10
./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-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zipmake -j 4 && make install

3、路径优化

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        扩展配置文件

调整主配置文件

cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini    
vim /usr/local/php/lib/php.ini#939行取消注释,修改
date.timezone = Asia/Shanghai#1170行修改
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
netstat -anpt | grep 9000
cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service


6、配置 Nginx 支持 PHP 解析


vim /usr/local/nginx/conf/nginx.conf#65行取消注释,修改
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; #将 /scripts 修改为nginx的工作目录fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;      #$document_root 代表当前请求在root指令中指定的值include        fastcgi_params;
}systemctl restart nginx.service

7、验证PHP 测试页

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

浏览器访问
http://192.168.233.20/index.php

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

mysql -u root -p
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
vim /usr/local/nginx/html/index.php              #替换原来的测试页内容
<?php
$link=mysqli_connect('192.168.233.20','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>


浏览器访问
http://192.168.233.20/index.php

部署 Discuz社区论坛

cd /opt
unzip Discuz_X3.4_SC_UTF8.zip  -d /opt/dis
cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/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.233.20/bbs/install/index.php
注要全是绿钩才行
数据库服务器:localhost     ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
管理员账号:admin
管理员密码:admin123

访问论坛页面:
http://192.168.233.20/bbs/index.php
http://192.168.233.20/bbs/admin.php

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

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

相关文章

社区团购行业的解决方案:重塑业务模式,提升效率和质量

社区团购业务正在中国迅速崭露头角&#xff0c;而随着行业的快速发展&#xff0c;也带来了一系列挑战&#xff0c;包括供应链管理、物流配送、产品质量和用户体验等问题。本文将探讨这些问题&#xff0c;并提出一些可能的解决方案。 一、问题和挑战 1.1 供应链管理 对于社区团…

k8s pod数据存储Volumes

一、说在前面的话 在 Kubernetes 的 Deployment 中&#xff0c;您可以使用多种类型的 Volumes 来管理 Pod 中的数据。 作用是用来共享目录及配置&#xff0c;不用在每个pod里进行配置。 本文主要概述怎么使用HostPath、PersistentVolumeClaim、ConfigMap。 二、k8s有哪些Vol…

OC实现GZIP压缩及解压缩

这恍恍的天日晒的大地嗞嗞的作响。这湉湉的阴雨下的祖国母亲到处洪水泛滥。人本不该有三六九等&#xff0c;可这丑陋的阴雨竟然选择性的泄洪到无辜的县区以示人却有三六九等。谁的财产不是财产&#xff0c;谁的生命不是生命&#xff1f;谁特妈的不是母亲养大的&#xff1f; 一首…

C#核心知识回顾——21.归并排序

理解递归逻辑 一开始不会执行sort函数的 要先找到最小容量数组时 才会回头递归调用Sort进行排序 基本原理 归并 递归 合并 数组分左右 左右元素相比较 一侧用完放对面 不停放入新数组 递归不停分 分…

《golang设计模式》第一部分·创建型模式-04-抽象工厂模式(Abstract Factory)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 1.1 角色 AbstractFactory&#xff08;抽象工厂&#xff09;&#xff1a;它声明了一组用于创建产品的方法&#xff0c;每一个方法对应一种产品。ConcreteFactory&#xff08;具体工厂&#xf…

Python学习笔记:If、While

1.if if的基本结构&#xff1a; if xxxxx:xxxxxxx elif xxxx:xxxxxxx else:xxxxxxx 通过boolean判断的实例 is_hot True is_cold True if is_hot:print("its a hot day\nDrink plenty of water") elif is_cold:print("its a cold day\nWear warm clothes&…

【网络|TCP】三次握手、四次握手

TCP是一种面向连接的可靠的传输协议&#xff0c;建立和断开TCP连接时需要进行握手的过程。其中&#xff0c;TCP的连接建立需要进行三次握手&#xff0c;而连接断开则需要进行四次握手。 解释 三次握手 第一次握手&#xff1a;客户端发送一个SYN&#xff08;同步&#xff09;报…

vue el-input 使用 回车键会刷新页面的问题

场景&#xff1a; vue项目中 在输入框输入字符并按下回车键搜索时&#xff0c;不会进行搜索&#xff0c; 而是会刷新页面 原因&#xff1a; 当form表单中只有一个input时&#xff0c;按下回车建会自动触发页面的提交功能&#xff0c; 产生刷新页面的行为 解决&#xff1a; 在…

问题聚集度Hive SQL

问题聚集度&#xff1a;最小的分母占比&#xff0c;贡献最多的分子占比&#xff0c;即小规模贡献大问题。 selectcity_name,user_id,rf_type,deal_ord_cnt,sale_amt,rf_ord_cnt,rf_amt,rf_ra,rf_amt_ra,rf_all,ord_cnt_all,rf_gx,ord_cnt_gx,del_gx,row_number() over(partiti…

Spring 事务详解(注解方式)

目 录 序言 1、编程式事务 2、配置声明式事务 2.1 基于TransactionProxyFactoryBean的方式&#xff08;不常用&#xff0c;因为要为每一个类配置TransactionProxyFactoryBean&#xff09; 2.2 基于AspectJ的XML方式&#xff08;常用&#xff0c;可配置在某些类下的所有子…

docker: CMD和ENTRYPOINT的区别

ENTRYPOINT&#xff1a; 容器的执行命令&#xff08;属于正统命令&#xff09; 可以使用--build-arg ENVIROMENTintegration参数覆盖 ocker build --build-arg ENVIROMENTintegration 两者同时存在时 CMD作为ENTRYPOINT的默认参数使用外部提供参数会覆盖CMD提供的参数。 CMD单…

无涯教程-Perl - unless...else 语句函数

Perl 除非语句后可以跟可选的 else 语句&#xff0c;该语句在布尔表达式为true时执行。 unless...else - 语法 Perl编程语言中的unless... else 语句的语法为- unless(boolean_expression) {# statement(s) will execute if the given condition is false } else {# stateme…

编程导航算法村第八关 | 树的深度优先遍历

编程导航算法村第八关 | 树的深度优先遍历 判断两棵树是否相同 LeetCode100&#xff1a;给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。思路&…

Go重写Redis中间件 - Go实现Redis持久化

GO实现Redis持久化 项目开发到这里,我们的下一步就是实现Redis的持久化落盘功能,Redis是一个内存型的数据库,在之前我们实现的单机版Redis如果把进程杀掉,我们通过GET、SET指令存储的数据都将不复存在,数据只存在内存的map里面,重启之后什么都没有了 我们现在的目标就是…

Net Core Webapi 使用Redis实现连续登录失败N次 锁定账号N分钟

由于最近项目发现有尝试密码登录的操作&#xff0c;需要设置密码复杂度及账号多次登录失败&#xff0c;将账号锁定N分钟后&#xff0c;才可以继续登录操作。 开始思路是使用登录记录数据处理连续登录失败的问题&#xff0c;如果频繁请求可能会导致数据库查询变慢&#xff0c;影…

322. 零钱兑换

322. 零钱兑换 原题链接&#xff1a;完成情况&#xff1a;一开始错误原因 解题思路&#xff1a;参考代码&#xff1a;__322 零钱兑换__错误思路还得是dp去做 原题链接&#xff1a; 零钱兑换 完成情况&#xff1a; 一开始错误 原因 /*解题思路&#xff1a;1.先sort一下coins…

python列表处理方法

原始文件&#xff1a; id start end a1 10 19 a1 25 34 a2 89 124 a2 149 167 a2 188 221目的文件&#xff1a; a1 1 10 a1 16 25 a2 1 36 a2 61 79 a2 100 133解释说明&#xff1a; 原始文件是gff3文件的一部分&#xff0c;第一列id是基因的名字&#xff0c;第二列和第三列分…

chatGPT在软件测试中应用方式有哪些?

ChatGPT可以在软件测试中以以下方式应用&#xff1a; 1. 自动化对话测试&#xff1a;ChatGPT可以用于自动化对话测试&#xff0c;模拟用户与软件系统进行实时对话。它可以扮演用户的角色&#xff0c;向系统发送各种类型的指令和请求&#xff0c;并验证系统的响应是否符合预期。…

react ant icon的简单使用

refer: 快速上手 - Ant Design 1.引入ant npm install antd --save 2.在页面引用&#xff1a; import { StarOutlined } from ant-design/icons; 如果想要引入多个icon&#xff0c;可以这样书写&#xff1a; import { UserOutlined, MailOutlined, PieChartOutlined } fr…

2023年第三届工业自动化、机器人与控制工程国际会议 | IET独立出版 | EI检索

会议简介 Brief Introduction 2023年第三届工业自动化、机器人与控制工程国际会议&#xff08;IARCE 2023&#xff09; 会议时间&#xff1a;2023年10月27 -30日 召开地点&#xff1a;中国成都 大会官网&#xff1a;www.iarce.org 2023年第三届工业自动化、机器人与控制工程国际…