LNMP架构(搭建论坛+博客)

news2024/11/18 12:45:26

目录

一、LNMP架构概述

1、LNMP架构的概念

2、LNMP架构的优点

二、编译安装nginx软件

1、准备工作

1.1 关闭防火墙

1.2 安装依赖包

1.3 创建运行nginx用户

1.4 压缩包解压

2、编译与安装

3、添加nginx自启动文件

三、编译安装mysql软件

1、准备工作

1.1 安装mysql环境依赖包

1.2 创建运行的mysql用户

1.3 压缩包解压

2、编译与安装

3、修改mysql配置文件

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

5、初始化数据库

6、添加mysql自启动文件

7、修改mysql的登录密码

四、编译安装php软件

1、准备工作

1.1 安装php环境依赖包

1.2 压缩包解压

2、编译与安装

3、调整php的三大配置文件

3.1 调整主配置文件

3.2 调整进程服务配置文件

3.3 调整扩展配置文件

4、添加php开机自启动文件

五、配置nginx支持php解析

1、修改nginx的主配置文件

2、验证php测试页

3、测试数据库工作是否正常

六、安装论坛

1、压缩包解压

2、修改论坛目录权限

3、安装论坛并登录

4、注册论坛用户并使用

七、安装博客

1、压缩包解压

2、修改博客目录权限

3、创建数据库的blog用户信息

4、安装博客并登录


一、LNMP架构概述

1、LNMP架构的概念

LNMP架构是一种典型的Web服务器架构,它由Linux、Nginx、MySQL和PHP(或Python、Perl)四个开源软件组成。LNMP架构的主要特点是高性能、高稳定性和高可靠性

  • Linux:作为操作系统,提供了稳定的运行环境

  • Nginx:作为Web服务器,具有高性能和高并发处理能力,可以作为反向代理服务器,负责接收用户的请求并将请求转发给后端的应用服务器

  • MySQL:作为关系型数据库,提供了数据存储和管理的功能

  • PHP(或Python、Perl):作为服务器端脚本语言,用于处理用户的请求,生成动态的网页内容

2、LNMP架构的优点

  • 高性能:Nginx和MySQL都是高性能的开源软件,可以提供快速的数据处理和响应速度
  • 高稳定性:Linux作为操作系统,提供了稳定的运行环境,可以保证系统的稳定性
  • 高可靠性:LNMP架构的各个组件都是开源软件,有大量的用户和开发者,可以提供良好的技术支持和维护

总之,LNMP架构在Web开发和运维中得到了广泛的应用,特别是在高并发和大数据量的场景下,可以提供良好的性能和稳定性

二、编译安装nginx软件

在同一个服务器上配置Nginx、MySQL和PHP服务

1、准备工作

1.1 关闭防火墙

[root@localhost ~]#systemctl disable --now  firewalld
[root@localhost ~]#setenforce 0

1.2 安装依赖包

[root@localhost ~]#yum -y install pcre-devel zlib-devel gcc gcc-c++ make

1.3 创建运行nginx用户

# Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限
[root@localhost ~]#useradd -M -s /sbin/nologin nginx

1.4 压缩包解压

#这里将nginx安装包存放在/opt目录下
[root@localhost ~]#cd /opt

[root@localhost opt]#tar zxvf nginx-1.22.0.tar.gz

2、编译与安装

[root@localhost opt]#cd /opt/nginx-1.22.0/
[root@localhost nginx-1.22.0]#./configure \ 
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

[root@localhost nginx-1.22.0]#make && make install

#设置软连接,让系统识别nginx的操作命令可以自动补全nginx,$PATH
[root@localhost nginx-1.22.0]#ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

 3、添加nginx自启动文件

#配置nginx自启动文件
[root@localhost ~]#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

#重新加载配置
[root@localhost ~]#systemctl daemon-reload

[root@localhost ~]#chown -R nginx.nginx /lib/systemd/system/nginx.service
或者chmod 777 /lib/systemd/system/nginx.service

[root@localhost ~]#systemctl enable --now nginx.service

三、编译安装mysql软件

1、准备工作

1.1 安装mysql环境依赖包

[root@localhost ~]#yum -y install ncurses ncurses-devel bison cmake
[root@localhost ~]#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

1.2 创建运行的mysql用户

# Mysql服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限
[root@localhost ~]#useradd -M -s /sbin/nologin  mysql

1.3 压缩包解压

#这里将mysql安装包存放在/opt目录下
[root@localhost ~]#cd /opt
[root@localhost opt]#tar zxvf mysql-boost-5.7.20.tar.gz

2、编译与安装

[root@localhost opt]#cd /opt/mysql-5.7.20/
[root@localhost 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

[root@localhost mysql-5.7.20]#make && make install

#设置路径环境变量,让系统识别mysql的操作命令可以自动补全mysql
[root@localhost mysql-5.7.20]#echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.20]#source /etc/profile

3、修改mysql配置文件

[root@localhost ~]#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

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

[root@localhost ~]#chown -R mysql:mysql /usr/local/mysql/
[root@localhost ~]#chown mysql:mysql /etc/my.cnf

5、初始化数据库

[root@localhost ~]#cd /usr/local/mysql/bin/
[root@localhost bin]#./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

6、添加mysql自启动文件

#mysql的自启动文件在安装包已有,只要复制到系统规定目录即可
[root@localhost ~]#cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost ~]#systemctl daemon-reload
[root@localhost ~]#systemctl enable --now mysqld

7、修改mysql的登录密码

#给root账号设置密码为abc123,提示输入的是原始密码(为空)要求输入的是原密码直接回车即可
[root@localhost ~]#mysqladmin -u root -p password "abc123"

#现在可以被授权远程登录到mysql
[root@localhost ~]#mysql -u root -pabc123      #ctrl+z退出

四、编译安装php软件

1、准备工作

1.1 安装php环境依赖包

[root@localhost ~]#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

1.2 压缩包解压

#这里将php安装包存放在/opt目录下
[root@localhost ~]#cd /opt
[root@localhost opt]#tar jxvf php-7.1.10.tar.bz2

2、编译与安装

[root@localhost opt]#cd /opt/php-7.1.10
[root@localhost 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

[root@localhost php-7.1.10]#make && make install

设置软连接,让系统识别php的操作命令可以自动补全php,$PATH
[root@localhost php-7.1.10]#ln -s /usr/local/php/bin/* /usr/local/bin/
[root@localhost php-7.1.10]#ln -s /usr/local/php/sbin/* /usr/local/sbin/

3、调整php的三大配置文件

php有三个配置文件: 

  • php.ini:主配置文件  
  • php-fpm.conf:进程服务配置文件 
  • www.conf:扩展配置文件

3.1 调整主配置文件

[root@localhost ~]#cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini	
[root@localhost ~]#vim /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock     #第1170行修改

date.timezone = Asia/Shanghai                           #第939行去掉注释

3.2 调整进程服务配置文件

[root@localhost ~]#cd /usr/local/php/etc/
[root@localhost etc]#cp  php-fpm.conf.default php-fpm.conf
[root@localhost etc]#vim php-fpm.conf
pid = run/php-fpm.pid     #第17行去掉注释";"

3.3 调整扩展配置文件

[root@localhost ~]#cd /usr/local/php/etc/php-fpm.d/
[root@localhost php-fpm.d]#cp www.conf.default www.conf

4、添加php开机自启动文件

#mysql的自启动文件在安装包已有,只要复制到系统规定目录即可
[root@localhost ~]#cd /opt/php-7.1.10/sapi/fpm
[root@localhost fpm]#cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
[root@localhost fpm]#systemctl daemon-reload
[root@localhost fpm]#systemctl enable --now php-fpm.service

五、配置nginx支持php解析

1、修改nginx的主配置文件

[root@localhost ~]#vim /usr/local/nginx/conf/nginx.conf
#第45行修改
index  index.html index.htm  index.php;

#第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;
}
 
[root@localhost ~]#systemctl restart nginx.service

2、验证php测试页

#服务器操作
[root@localhost ~]#vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
#客户端浏览器测试
http://172.16.12.12/index.php

3、测试数据库工作是否正常

#服务器操作
[root@localhost ~]#mysql -u root -pabc123
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;

[root@localhost ~]#vim /usr/local/nginx/html/index.php   #替换原来测试页内容
<?php
$link=mysqli_connect('172.16.12.12','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

#客户端浏览器测试
http://172.16.12.12/index.php

六、安装论坛

1、压缩包解压

[root@localhost ~]#cd /opt
[root@localhost opt]#unzip Discuz_X3.4_SC_UTF8.zip  
[root@localhost opt]#cd /opt/dir_SC_UTF8/
[root@localhost dir_SC_UTF8]#cp -r upload/ /usr/local/nginx/html/bbs/

2、修改论坛目录权限

[root@localhost ~]chmod -R 777 ./config/
[root@localhost ~]chmod -R 777 ./data/
[root@localhost ~]chmod -R 777 ./uc_client/
[root@localhost ~]chmod -R 777 ./uc_server/

3、安装论坛并登录

#客户端服务器访问
http://172.16.12.12/bbs/install/index.php
 
数据库服务器:localhost     #本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
管理员账号:admin
管理员密码:123

4、注册论坛用户并使用

七、安装博客

1、压缩包解压

[root@localhost ~]#cd /opt
[root@localhost opt]#unzip wordpress-6.1.1-zh_CN.zip  
[root@localhost opt]#cp -r wordpress  /usr/local/nginx/html/

2、修改博客目录权限

[root@localhost ~]#cd /usr/local/nginx/html/
[root@localhost ~]#chmod 777 wordpress/ -R

3、创建数据库的blog用户信息

[root@localhost ~]#mysql -u root -p abc123
CREATE DATABASE blog;
GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;

4、安装博客并登录

http://172.16.12.12/wordpress/wp-admin/install.php
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123

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

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

相关文章

HTTPS的加密过程

文章目录 前言一、为什么需要加密&#xff1f;二、只用对称加密可以吗&#xff1f;三、只使用非对称加密四、双方都使用非对称加密五、使用非对称加密对称加密六、引入证书1.如何放防止数字证书被篡改&#xff1f;2.中间人有可能篡改该证书吗&#xff1f;3.中间人有可能掉包该证…

环境配置 |Jupyter lab/Jupyter Notebook 安装与设置

ipynb使用Jupyterlab/Jupyter Notebook 来编写Python程序时的文件,在使用时,可以现转换为标准的.py的python文件 1.Jupyter Lab 1.1.下载安装 环境&#xff1a;Linux pip install jupyterlab 1.2.使用 jupyter lab 点击后进入 1.3.jupyter lab更换内核 因为我的是在anac…

arm板运行程序时寻找动态库的路径设置

问题&#xff1a;error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file&#xff1f; 第一种方法---- 解决&#xff1a; ①复制需要用到的arm库到板子上。 ②pwd指令获取该库的绝对路径&#xff0c;把路径复制到/etc/ld.so.conf文件 ③输…

google最新大语言模型gemma本地化部署

Gemma是google推出的新一代大语言模型&#xff0c;构建目标是本地化、开源、高性能。 与同类大语言模型对比&#xff0c;它不仅对硬件的依赖更小&#xff0c;性能却更高。关键是完全开源&#xff0c;使得对模型在具有行业特性的场景中&#xff0c;有了高度定制的能力。 Gemma模…

网络传输基本流程(封装,解包)+图解(同层直接通信的证明),报头分离问题,协议定位问题,协议多路复用

目录 网络传输基本流程 引入 封装 过程梳理 图解 报文 解包 过程梳理 图解 -- 同层直接通信的证明 总结 解包时的报头分离问题 举例 -- 倒水 介绍 自底向上传输时的协议定位问题 介绍 解决方法 协议多路复用 介绍 优势 网络传输基本流程 引入 首先,我们明确…

Python学习 --- 面向对象

1.什么是对象 1.Python中创建类的关键字是 class 2.类的成员方法 1.函数是写在类外面的,方法则是写在类里面的 1.上面这一段代码中就展示了如何在方法中访问类的成员变量: self.成员变量名 3.魔术方法 魔术方法其实就是python中的类中的内置方法,下面这几个只是我们比较常…

02| JVM堆中垃圾回收的大致过程

如果一直在创建对象&#xff0c;堆中年轻代中Eden区会逐渐放满&#xff0c;如果Eden放满&#xff0c;会触发minor GC回收&#xff0c;创建对象的时GC Roots&#xff0c;如果存在于里面的对象&#xff0c;则被视为非垃圾对象&#xff0c;不会被此次gc回收&#xff0c;就会被移入…

深度神经网络联结主义的本质

一、介绍 在新兴的人工智能 (AI) 领域&#xff0c;深度神经网络 (DNN) 是一项里程碑式的成就&#xff0c;突破了机器学习、模式识别和认知模拟的界限。这一技术奇迹的核心是一个与认知科学本身一样古老的思想&#xff1a;联结主义。本文深入探讨了联结主义的基本原理&#xff0…

阿里云启动实例进入了急救模式解决办法

相关文档 问题描述 通过远程连接软件无法登录Linux实例&#xff0c;通过使用管理终端连接Linux实例远程连接时&#xff0c;发现系统进入到急救模式&#xff08;emergency mode&#xff09;&#xff0c;且出现报错。 CentOS实例报如下错误。 systemctl default to try again…

小(2)型土石坝安全监测设施配置详解

小(2)型土石坝的安全监测是确保大坝稳定、安全运行的重要环节。为此&#xff0c;合理配置安全监测设施显得尤为重要。以下是对小(2)型土石坝安全监测设施配置的详细介绍。 一、渗流量监测 渗流量是反映大坝安全状况的关键指标之一。为准确监测渗流量&#xff0c;我们采用仪器量…

PackagingTool_x64_v2.0.1.0图片转档打包二进制文件合并字库生成图片软件介绍

继去年12月份发布的打包软件PackagingTool v1.4.0.2之后&#xff0c;今年再度投入精力&#xff0c;完善了软件功能&#xff0c;同时开发了几个更加实用的工具&#xff0c;可助力UI界面的设计开发。当前最新版本为PackagingTool_x64_v2.0.1.0&#xff0c;该版本主界面如下&#…

php基础学习之错误处理(其二)

在实际应用中&#xff0c;开发者当然不希望把自己开发的程序的错误暴露给用户&#xff0c;一方面会动摇客户对己方的信心&#xff0c;另一方面容易被攻击者抓住漏洞实施攻击&#xff0c;同时开发者本身需要及时收集错误&#xff0c;因此需要合理的设置错误显示与记录错误日志 一…

全国夜间灯光指数数据、GDP密度分布、人口密度分布、土地利用数据、降雨量数据

引言 DMSP/OLS的1992-2013年全球遥感影像&#xff0c;包括三种非辐射定标的夜间灯光影像。三种全年平均影像分别是&#xff1a;无云观测频数影像、平均灯光影像和稳定灯光影像。目前地理遥感生态网可提供全国稳定灯光影像免费下载。稳定灯光影像是标定夜间平均灯光强度的年度栅…

java 大学生社团管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 大学生社团管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5…

概率基础——多元正态分布

概率基础——多元正态分布 介绍 多元正态分布是统计学中一种重要的多维概率分布&#xff0c;描述了多个随机变量的联合分布。在多元正态分布中&#xff0c;每个随机变量都服从正态分布&#xff0c;且不同随机变量之间可能存在相关性。本文将以二元标准正态分布为例&#xff0…

免费pr素材(漂亮的波浪图形动画背景视频素材)下载

10个漂亮的免费波浪图形动画pr素材&#xff0c;PR动态背景视频素材mogrt下载。 特点&#xff1a;Premiere Pro 2023或更高版本&#xff0c;超高清分辨率&#xff1a;38402160&#xff0c;每秒25帧的帧速率&#xff0c;包括教程视频。来自pr素材网&#xff0c;下载地址&#xff…

数字孪生与智慧交通的融合发展:推动交通行业数字化转型,构建智慧城市新生态

随着信息技术的快速发展和城市化进程的深入推进&#xff0c;交通行业正面临着前所未有的机遇与挑战。传统的交通管理模式已难以满足日益增长的交通需求&#xff0c;而数字化转型则成为了推动交通行业创新发展的必由之路。数字孪生技术作为一种前沿的信息技术手段&#xff0c;为…

Echarts图标初始化实例的时候传入的参数

一般我们初始化实例的时候都是这么写的 其实echarts.init()还可以传入另外两个选项&#xff0c; 第二个选项为主题色 分为深色主题以及浅色主题&#xff0c;默认为浅色主题&#xff0c;传入light 深色主题的话可以传入dark 第三个选项为option 但是用得比较多的是渲染器ren…

MySQL 使用 pt-archiver 删除数据

文章目录 前言1. 环境准备1.1 模拟造数1.2 工具安装 2. 删除数据2.1 批次删除表2.2 原理解析2.3 批处理思路 后记 前言 在线核心业务都会有日志表&#xff0c;随着业务持续运行&#xff0c;日志表每天都在增大&#xff0c;最后超过阈值触发空间使用率告警。DBA 处理空间告警时…

WPF 滑动条样式

效果图&#xff1a; 浅色&#xff1a; 深色&#xff1a; 滑动条部分代码&#xff1a; <Style x:Key"RepeatButtonTransparent" TargetType"{x:Type RepeatButton}"><Setter Property"OverridesDefaultStyle" Value"true"/&g…