LNMP架构搭建实操

news2024/11/14 16:24:39

目录

一、安装Nginx服务

1.安装依赖包

2.创建Nginx运行用户

3.编译安装Nginx源码包

4.优化路径便于使用

5、添加 Nginx 系统服务

二、安装Mysql服务

1.安装Mysql环境依赖包

2.创建Mysql运行用户

3.编译安装

4.修改mysql配置文件

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

6.设置路径环境变量,便于使用

7.初始化数据库

8.添加mysqld系统服务

9.修改mysql的登录密码

10.授权root用户远程登录

​编辑​编辑

三、安装PHP服务

1.安装环境依赖包

2.编译安装

3.优化路径便于使用

4.调整php配置文件

5.启动php-fpm

6.配置 Nginx 支持 PHP 解析

7.添加inex.php文件用于测试php服务是否生效

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

四、使用LNMP架构搭建bbs论坛


LNMP架构是指Linux+Nginx+Mysql+PHP(Perl、Python)

首先准备Linux主机,关闭防火墙和selinux

需要获取相关的源码包

配置字段含义可参考 LAMP架构搭建实操_Evens7xxX的博客-CSDN博客

架构图

img编辑

与LAMP的区别

LNMP架构中,nginx处理静态页面请求,fastCGI会将动态页面请求转发给php-fpm模块中,再经过wrapper筛选,最后给php解析,涉及到数据库的数据,会打开数据库连接接口获取数据。

一、安装Nginx服务

1.安装依赖包

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

2.创建Nginx运行用户

useradd -M -s /sbin/nologin nginx

3.编译安装Nginx源码包

#解压源码包
cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/
​
#自定义安装
cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
​
#编译安装
make && make install

4.优化路径便于使用

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

5、添加 Nginx 系统服务

#自定义service文件
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.target
​
#设置权限,使文件生效
chmod 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.创建Mysql运行用户

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 \
-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

4.修改mysql配置文件

vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
​
[mysql]
port = 3306
socket = /usr/local/mysql/mysql.sock
auto-rehash
​
[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

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 "abc123"

10.授权root用户远程登录

mysql -u root -p

输入密码登入

img

三、安装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.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

3.优化路径便于使用

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

4.调整php配置文件

/usr/local/php/lib/php.ini主配置文件
/usr/local/php/etc/php-fpm.conf进程服务配置文件 (默认只有模板文件,需要复制改名为php-fpm.conf)
/usr/local/php/etc/php-fpm.d/www.conf扩展配置文件 (默认只有模板文件,需要复制改名)

(1)修改php.ini

​
#复制模板并修改
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


​

img

img

(2)修改 php-fpm.conf

​
#复制模板文件
cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
​
#修改进程服务配置文件
vim php-fpm.conf
​
#17行,去掉";"注释
pid = run/php-fpm.pid


​

img

最后一行代表加载/usr/local/php/etc/php-fpm.d/下所有conf文件

img

(3)修改www.conf

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

修改监听地址(默认指定ip为本机,如果提供nginx服务与提供php服务的主机不是一台,需要修改为提供nginx服务器的ip地址)

img

可修改属主属组为nginx

img

5.启动php-fpm

#进入软件包目录,复制并启用service文件
cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
​
#重载并开启服务
systemctl daemon-reload
systemctl restart php-fpm.service

检查发现服务已开启

img

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 $document_root$fastcgi_script_name;  
    include        fastcgi_params;
}
​
#重启服务使配置生效
systemctl restart nginx.service

将 /scripts 改为 $document_root 代表当前请求在root指令中指定的值(网页根目录)

img

7.添加inex.php文件用于测试php服务是否生效

首先需要在 /usr/local/nginx/conf/nginx.conf 中添加指定首页文件index.php

img

重载服务使配置生效

systemctl reload nginx.service

添加index.php文件用于访问测试

#在root指定的根目录下创建index.php文件,并添加内容
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

img

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

添加授权,编写测试页面

img

img编辑

img编辑

四、使用LNMP架构搭建bbs论坛

解压论坛压缩包

img

进入论坛文件中,将页面拷贝到bbs网页根目录下

img

img

数据库授权

img

访问页面

img

img

修正报错部分,更改属主和权限

img

刷新网页后继续下一步

img编辑

选择全新安装

img

设置刚刚的数据库和密码,再设置一个管理员和密码

img

安装成功后访问

img

可以在右上角登录管理员

img

至此使用LNMP发布一个网站就完成了

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

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

相关文章

ArduPilot开源代码之AP_Logger

ArduPilot开源代码之AP_Logger 1. 源由2. Logger类2.1 Copter初始化2.2 Copter任务 3. 实例理解3.1 Copter设备应用任务3.1.1 Copter::ten_hz_logging_loop3.1.2 Copter::twentyfive_hz_logging 3.2 AP_Logger应用类任务3.2.1 AP_Logger::periodic_tasks3.2.2 AP_Logger::io_th…

ORB_SLAM3 IMU预积分PreintegrateIMU

这篇博文主要分享ORB_SLAM3中Tracking::PreintegrateIMU()&#xff0c;其主要包括几个部分&#xff1a; 获得两帧之间的IMU数据中值积分IMU状态更新 关于IMU的理论推导参考&#xff1a; ORB_SLAM3_IMU预积分理论推导(预积分项)ORB_SLAM3_IMU预积分理论推导(噪声分析)ORB_SLA…

第五章 Linux的文件权限与目录配置

Linux最好的地方之一就在于他的多用户多任务环境。为了让各个使用者具有较保密的文件数据&#xff0c;因此文件的权限管理就变得很重要了。Linux一般将文件可存取的身份分为三个类别&#xff0c;分别是owner/group/others,且三种身份各有read/write/execute等权限。 5.1 使用者…

【Servlet学习一】认识Servlet 创建第一个Servlet项目

目录 &#x1f31f;需要知道&#xff1a; &#x1f308;1、Tomcat是什么&#xff1f; &#x1f308; 2、Maven &#x1f31f;一、认识Servlet &#x1f308;1、Servlet是什么&#xff1f; &#x1f308;2、实现第一个Servlet项目。 &#x1f308;3、简单了解Postman工具…

Python3 模块与输入与输出 | 菜鸟教程(十二)

目录 一、Python3 模块 &#xff08;一&#xff09;import 语句 1、想使用 Python 源文件&#xff0c;只需在另一个源文件里执行 import 语句&#xff0c;语法如下&#xff1a; 2、当解释器遇到 import 语句&#xff0c;如果模块在当前的搜索路径就会被导入。 3、搜索路径是…

PID控制算法 – 1、Sample Time(采样时间)

前面介绍的PID代码虽然能跑起来&#xff0c;但是还存在一些问题。 PID控制算法 – 0、PID原理_资深流水灯工程师的博客-CSDN博客 对应的代码也重新贴一下&#xff0c;方便比较 /*工作变量*/ unsigned long lastTime; double Input, Output, Setpoint; double errSum, lastEr…

【初识C语言(2)】字符串+转义字符+注释

文章目录 1. 字符串2. 转义字符转义字符表常见转义字符 3. 注释 1. 字符串 “hello world.\n” 上面这种由双引号引起的一串字符就被称为字符串&#xff1b; 字符串的存储 C 语言当中没有字符串类型&#xff0c;如果想要将字符串存储起来的话就需要用到字符串数组。 #include…

LLaMA及其子孙模型概述

文章目录 LLaMAAlpacaVicunaKoalaBaize (白泽)骆驼(Luotuo)BELLEGuanaco LLaMA 与原始transformer的区别: 预归一化[GPT3]。为了提高训练稳定性&#xff0c;对每个Transformer子层的输入进行归一化&#xff0c;而不是对输出进行归一化。使用了Zhang和Sennrich&#xff08;201…

Redis进阶篇(附面试快速答法)

文章目录 Redis使用场景1、缓存穿透布隆过滤器小总结面试快速答法 2、缓存击穿小总结面试快速答法 3、缓存雪崩面试快速答法 4、双写一致性小总结面试快速答法 5、持久化机制面试快速答法 6、数据过期策略小总结面试快速答法 7、数据淘汰策略小总结面试快速答法 8、分布式锁小总…

Pytest集成Allure Report

目录 安装 用法 基本报告 支持 Pytest features Xfail 条件标记 Fixtures and Finalizers 参数化 Allure Features Steps 附件 描述 标题 链接 重试 Tags BDD 标签 严重性标记 Behave 安装 使用 Features 严重性 步骤和场景状态 步骤数据 安装 Pytest可从…

SpringBoot 如何使用 @RequestBody 进行数据校验

SpringBoot 如何使用 RequestBody 进行数据校验 在 Web 开发中&#xff0c;前台向后台发送数据是非常常见的场景。而在 SpringBoot 框架中&#xff0c;我们通常使用 RequestBody 注解来接收前台发送的 JSON 数据&#xff0c;并将其转化为 Java 对象。但是&#xff0c;接收到的…

你一定想知道的 如何进行动态内存管理?

文章目录 引言malloc函数calloc函数realloc函数free函数-避免内存泄漏常见的动态内存错误 引言 如果我们被问道&#xff1a;如何创建一个可以根据用户需求来开辟大小的数组&#xff1f; 可能有些博友会写出如下代码&#xff1a; #include <stdio.h> int main() {int n…

c++11 标准模板(STL)(std::basic_streambuf)(二)

定义于头文件 <streambuf> template< class CharT, class Traits std::char_traits<CharT> > class basic_streambuf; 类 basic_streambuf 控制字符序列的输入与输出。它包含下列内容并提供到它们的访问&#xff1a; 1) 受控制字符序列&#xff…

专项练习9

目录 一、选择题 1、在 JavaScript 中&#xff0c;用于阻止默认事件的默认操作的方法是 2、以下代码执行后&#xff0c;result 的值为&#xff08;&#xff09; 3、不能从字符串 const str qwbewrbbeqqbbbweebbbbqee;中能得到结果 ["b", "bb", "bbb…

实时在线云消费机、考勤门禁控制器、网络读卡器服务端C# Socket源码

消费机UDP通讯协议介绍&#xff1a; 设备向服务器发送的指令格式&#xff0c;每个字段用半角逗号(,)分隔。序号指令名称指令格式指令说明示例1响应服务器的搜索100,包序列号,终端IP,子网掩码,网关IP,远程电脑主机IP,端口号,终端硬件号响应电脑发出的搜寻局域网内所有终端设备指…

【Python 基础篇】Python 异常处理

文章目录 引言一、Python异常概述二、常见的内置异常三、异常处理语句四、异常捕获和处理五、实例演示六、总结 引言 在软件开发中&#xff0c;错误和异常是难以避免的。当我们编写Python代码时&#xff0c;有时候会遇到各种各样的问题&#xff0c;例如无效的输入、文件不存在…

hello算法笔记之树

一、二叉树 与链表类似&#xff0c;二叉树的基本单元是节点&#xff0c;每个节点包含一个「值」和两个「指针」。 在二叉树中&#xff0c;除叶节点外&#xff0c;其他所有节点都包含子节点和非空子树。 一些术语&#xff1a; 「根节点 Root Node」&#xff1a;位于二叉树顶…

VNC虚拟网络控制台(概述、windows系统连接linux系统演示)

第三阶段基础 时 间&#xff1a;2023年6月22日 参加人&#xff1a;全班人员 内 容&#xff1a; VNC虚拟网络控制台 目录 一、VNC概述 二、VNC基本上是由两部分组成 三、VNC特点 四、工作流程 五、安装 六、操作演示Windiws10系统远程控制linux 服务端&#xff1a;…

window版安装kafka并提供启动快捷脚本

kafka下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1DpcGXvpTYAcG_fvS-p9-3g?pwd1234 提取码&#xff1a;1234 官网&#xff1a;https://kafka.apache.org/downloads 注意不需要单独安装zk&#xff0c;里面包括zk Kafka解压包目录不要太深了&#xff0c…

养老院人员跌倒检测识别算法

养老院人员跌倒检测识别预警系统通过yolov5python网络模型技术&#xff0c;养老院人员跌倒检测识别预警算法对跌倒事件进行识别和分析&#xff0c;当检测到有人员跌倒时&#xff0c;将自动发出警报提示相关人员及时采取措施。YOLOv5是一种单阶段目标检测算法&#xff0c;该算法…