LNMP架构搭建论坛

news2024/11/26 14:44:41

目录

一、LNMP简介:

二、LNMP搭建:

1.前提准备:

   关闭防火墙和安全机制:

2.编译安装nginx:

3.编译安装mysql:

   3.1 安装依赖环境:

  3.2 创建mysql运行用户:

  3.3 编译安装:

  3.4 修改mysql 配置文件:

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

  3.6 设置路径环境变量:

  3.7 初始化数据库:

  3.8 添加mysqld系统服务:

  3.9 修改mysql 的登录密码:

4.编译安装php:

  4.1 安装依赖包:

  4.2 编译安装:

  4.3 路径优化:

  4.4 调整主配置文件:

  4.5 调整进程服务配置文件:

  4.6 调整扩展配置文件:

  4.7 启动php-fpm:

5.  配置 Nginx 支持 PHP 解析:

6.创建数据库:

7. 安装论坛:


一、LNMP简介:

    LNMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,
能够提供动态Web站点服务及其应用开发环境。LNMP是一个缩写词,具体包括Linux操作系统、nginx网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。

  • L:(平台)Linux,作为LNMP架构的基础,提供用于支撑Web站点的操作系统,
  • 能够与其他三个组件提供更好的稳定性,兼容性(NMP组件也支持Windows、UNIX等平台)。
  • N:(前台)nginx,nginx网站服务,提供前端的静态页面服务。同时具有代理,转发作用。转发后端请求,转发PHP;nginx没有处理动态资源的功能,但是有可以支持转发动态请求的模块。
  • M:(后台)MySQL,MySQL关系型数据库,保存用户的账号和密码
  • P:(中间连接)PHP,动态页面的编程语言,负责解释动态网页文件,和nginx以及数据库协同

二、LNMP搭建:

1.前提准备:

   关闭防火墙和安全机制:

systemctl disable --now  firewalld
setenforce 0  

2.编译安装nginx:

yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#安装依赖环境

useradd -M -s /sbin/nologin nginx  #创建nginx运行用户

tar 解压安装包

cd nginx-1.22.0/

cd nginx-1.22.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module  #检测环境,安装所需模块

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

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#让系统识别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 -1 $MAINPID
  ExecStop=/bin/kill -3 $MAINPID
  PrivateTmp=true
  [Install]
  WantedBy=multi-user.target    ##编写.service文件,添加到系统服务中,便于管理

systemctl daemon-reload  ##刷新


 

3.编译安装mysql:

   3.1 安装依赖环境:

yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel   ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel

  3.2 创建mysql运行用户:

useradd -M -s /sbin/nologin  mysql

  3.3 编译安装:

cd /data

tar zxvf mysql-boost-5.7.20.tar.gz

cd 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 && make install

    时间很长,但是有满屏的代码陪伴0.o

  3.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 = 1
 
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

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

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

  3.6 设置路径环境变量:

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

  3.7 初始化数据库:

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

  3.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

  3.9 修改mysql 的登录密码:

mysqladmin -u root -p password "abc123" 

4.编译安装php:

  4.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

  4.2 编译安装:

cd /data

tar jxvf php-7.1.10.tar.bz2

cd 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-zip
 
make && make install

  4.3 路径优化:

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

  4.4 调整主配置文件:

cp /data/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini	

vim /usr/local/php/lib/php.ini

  --1170行--修改
  mysqli.default_socket = /usr/local/mysql/mysql.sock
  --939行--取消注释,修改
  date.timezone = Asia/Shanghai

  4.5 调整进程服务配置文件:

cd /usr/local/php/etc/

cp  php-fpm.conf.default php-fpm.conf

vim php-fpm.conf

  4.6 调整扩展配置文件:

cd /usr/local/php/etc/php-fpm.d/

cp www.conf.default www.conf

  4.7 启动php-fpm:

  将php服务加入到systemd服务中

cp /opt/php-7.1.10/sapi/fpmphp-fpm.service /usr/lib/systemd/system/php-fpm.service

systemctl restart php-fpm.service

5.  配置 Nginx 支持 PHP 解析:

vim /usr/local/nginx/conf/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;
            include        fastcgi_params;
        }
##取消注释

   45行 添加indexphp

systemctl restart nginx.service

6.创建数据库:

mysql -u root -p

CREATE DATABASE bbs;

GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';

flush privileges;

7. 安装论坛:

cd /data
unzip Discuz_X3.4_SC_UTF8.zip  
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.88.100/bbs/install/index.php

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

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

相关文章

Vue.js核心技术深度解析与uni-app跨平台开发实战

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 Vue.js是一款流行的Java…

算法训练day39|动态规划 part02(LeetCode62.不同路径、63. 不同路径 II)

文章目录 62.不同路径思路分析代码实现 63. 不同路径 II思路分析代码实现思考总结 62.不同路径 题目链接🔥🔥 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步…

Lua语法结构

Lua基础 注释 print("hello.") -- 单行注释的写法 --[[ 多行注释的写法 --]]标识符 关键字 **and **break**do **else**elseif ****end **falsefor**function **ifinlocalnilnotorrepeatreturnthentrueuntil**while ** 数据类型 nil** boolean**** number**** st…

MyBatis-Plus排除不必要的字段

查询学生信息排除年龄列表 📚🔍 使用MyBatis-Plus排除某些字段。如果你想要进行查询,但又不需要包含某些字段,那么这个功能将非常适合你。🔍🎓📝 1. 学生信息查询-排除年龄列表 在使用 MyBat…

Vue.js基础(一)

目录 1、{{ }} 文本插值 2、v-html原始html 3、v-bind Attribute&#xff08;属性&#xff09;绑定\三元运算符 4、v-for列表渲染 5、v-on监听事件 6、事件调用方法 7、v-model表单的输入绑定 8、Props组件交互 父传子 子传父 子传父总结 1、{{ }} 文本插值 <…

手写Spring:第3章-实现Bean的定义、注册、获取

文章目录 一、目标&#xff1a;实现Bean的定义、注册、获取二、设计&#xff1a;实现Bean的定义、注册、获取三、实现&#xff1a;实现Bean的定义、注册、获取3.1 工程结构3.2 实现Bean的定义、注册、获取类图3.3 定义Bean异常3.4 BeanDefinition定义和注册3.4.1 BeanDefinitio…

解决 Spring Boot 与 springfox 的 NullPointerException 问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

MRI多任务技术及应用

目录 一、定量心血管磁共振成像&#xff08;CMR&#xff09;的改进方法二、磁共振多任务三、磁共振多任务的成像框架四、磁共振多任务的图像模型和采样和重建策略五、利用MR多任务进行快速三维稳态CEST(ss-CEST)成像5.1 利用MR多任务进行快速三维稳态CEST(ss-CEST)成像介绍5.2 …

嵌入式学习笔记(14)位置有关编码

位置无关编码&#xff08;PIC,position independent code&#xff09;&#xff1a;汇编源文件被编码成二进制可执行程序时编码方式与位置&#xff08;内存地址&#xff09;无关。在我们写程序时&#xff0c;必须给链接器指定地址。将来的程序被执行时必须放在当时链接时给定的地…

iPhone照片导入电脑的绝佳教程,赶快get起来!

为什么都说苹果手机拍照比安卓手机好看&#xff1f;因为苹果手机拍照更加真实&#xff0c;其镜头和硬件能让照片更好地接近原始色彩。手机拍照好看就会让人忍不住多拍几张&#xff0c;久而久之手机内存就满了。有什么方法能将照片保存到电脑上吗&#xff1f;iPhone照片导入电脑…

《vue3实战》运用push()方法实现电影评价系统的添加功能

目录 前言 电影评价系统的添加功能是什么&#xff1f; 电影评价系统的添加功能有什么作用&#xff1f; 一、push&#xff08;&#xff09;方法是什么&#xff1f;它有什么作用&#xff1f; 含义&#xff1a; 作用&#xff1a; 二、功能实现 这段是添加开始时点击按钮使…

私募证券基金动态-23年8月报

成交量&#xff1a;8月日均8,252.00亿元 8月A股两市日均成交8,252.00亿元&#xff0c;环比下降12.23%、同比下降18.11%。8月整体23个交易日&#xff0c;仅有3个交易日单日成交金额过万亿&#xff0c;且成交量起伏较大&#xff0c;单日成交金额最低仅有6805.32亿元&#xff08;…

C# 实现电子签名

本项目基于Emgu.CV&#xff08;C#下OpenCv的封装&#xff09;开发的&#xff0c;编译器最新版Vs2022&#xff0c;编译环境x86 直接看效果图 1.主页面 2.我们先看手写的方式&#xff1a; 点击确认就到主界面&#xff0c;如下 &#xff1a; 点击自动适配-&#xff0c;再点击生成…

windows安装向量数据库milvus

本文介绍windows下安装milvus的方法。 一.Docker安装 1.1docker下载 首先到Docker官网上下载docker:Docker中文网 官网 1.2.安装前前期准备 先使用管理员权限打开windows powershell 然后在powershell里面输入下面那命令&#xff0c;启用“适用于 Linux 的 Windows 子系统”…

JMeter压力测试入门教程

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库&#xff0c; FTP服务器, 等等。J…

JavaScript中的深拷贝和浅拷贝

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 浅拷贝&#xff08;Shallow Copy&#xff09;&#xff1a;⭐深拷贝&#xff08;Deep Copy&#xff09;&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带…

数据结构day7栈-顺序栈的实现

用指针比用数组好&#xff0c;这样用户可以自己指定空间的大小&#xff0c;有参与感。 全部代码: main.c #include <stdio.h> #include <string.h> #include "sqstack.h"int main(int argc, char *argv[]) {sqstack *s;int i;s stack_create(100);if(…

数据结构 - 单链表

文章目录 目录 文章目录 一、什么是链表? 线性表: 顺序表: 二、链表的分类和实现 分类: 实现: 1.创建节点类 2.创建单链表 1.addTail(尾增) 2.删除节点值为key的第一个节点 3.插入节点(在指定位置) 4.获取链表长度 总结 前言 大家好,这篇博客给大家讲一下什么是…

《代码随想录》刷题笔记——数组篇【java实现】

*二分查找 题目链接 https://leetcode.cn/problems/binary-search/ 左闭右闭区间实现 时间复杂度&#xff1a;O(log n)空间复杂度&#xff1a;O(1) /*** 左闭右闭写法** param nums* param target* return*/ public static int search1(int[] nums, int target) {if (nums…

关于工信部发布的app备案以及小程序备案流程

一、相关政策 通知&#xff1a;https://beian.miit.gov.cn/#/Integrated/lawStatute 腾讯备案&#xff1a;网站备案 首次备案-网站备案-文档中心-腾讯云 阿里备案&#xff1a;网站备案_ICP备案_备案迁移_备案-阿里云 二、遇到的问题 APP备案 安卓获取平台公钥方法&#xf…