LNMP架构搭建

前言

LNMP架构是一种用于搭建Web服务器环境的解决方案,它由Linux、Nginx、MySQL(或MariaDB)、PHP(或Python或Perl)这四个开源软件组成。这种架构通常用于搭建高性能的网站和Web应用程序。

目录

一、编译安装nginx

1. 准备工作

2. 压缩包解压

3. 编译与安装

4. 添加nginx系统服务

二、编译安装mysql

1. 安装mysql环境依赖包

2. 创建运行用户 

3. 编译与安装 

4. 修改mysql配置文件 

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

6. 设置路径环境变量 

7. 初始化数据库 

8. 添加mysqld系统服务 

9. 修改mysql的登录密码 

10. 授权远程登录

三、编译安装php软件

1. 安装环境依赖包

2. 编译安装

3. 路径优化 

4. 调整PHP配置文件 

4.1 调整主配置文件

4.2 调整进程服务配置文件

 4.3 调整扩展配置文件

5. 启动php-fpm

6. 配置nginx支持php解析

6.1 修改nginx主配置文件

6.2 验证php测试页

6.3 验证lnmp的是否搭建成功 

6.4 验证数据库工作是否正常 

四、安装论坛  

1. 解压安装包

2. 调整论坛目录的权限 

3. 论坛页面访问 

4. 安装完后访问论坛页面

五、安装博客  

1. 解压安装包

2. 调整目录权限

3. 创建数据库用户信息

4. 安装登录


环境软件版本:

nginx-1.22.0;mysql-5.7.20;mysql-5.7.20;Discuz_X3.4_SC_UTF8;wordpress-6.1.1-zh_CN

一、编译安装nginx

1. 准备工作

① 关闭防火墙

systemctl disable --now  firewalld
setenforce 0

② 安装依赖包

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

③ 创建运行用户、组

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

2. 压缩包解压

cd /opt            #这里将所有安装包存放在/opt目录下
tar zxvf nginx-1.22.0.tar.gz -C /opt/

3. 编译与安装

cd nginx-1.22.0/
./configure \
--prefix=/usr/local/nginx \				            #指定nginx的安装路径
--user=nginx \										#指定用户名
--group=nginx \										#指定组名
--with-http_stub_status_module						#启用 http_stub_status_module 模块以支持状态统计make && make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/		
#设置软连接,让系统识别nginx的操作命令可以自动补全nginx,$PATH

4. 添加nginx系统服务

tee /lib/systemd/system/nginx.service   <<eof     #多行重定向
[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
eofsystemctl  daemon-reload                         #重新加载配置文件
chmod 777 /lib/systemd/system/nginx.service      #修改权限
systemctl enable --now nginx.service             #开机自启,并立刻启动

二、编译安装mysql

1. 安装mysql环境依赖包

yum -y install ncurses ncurses-devel bison cmakeyum -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

2. 创建运行用户 

useradd -M -s /sbin/nologin  mysql

3. 编译与安装 

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gzcd /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=1make && 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 "abc123" 	
#给root账号设置密码为abc123,提示输入的是原始密码(为空)要求输入的是原密码直接回车即可

10. 授权远程登录

mysql -u root -p'密码'

三、编译安装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 && 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:扩展配置文件

4.1 调整主配置文件

cp /opt/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/Shanghaiphp -m 					#验证安装的模块

4.2 调整进程服务配置文件

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

 4.3 调整扩展配置文件

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

5. 启动php-fpm

cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service
netstat -anpt | grep 9000
#PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。

6. 配置nginx支持php解析

6.1 修改nginx主配置文件

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

6.2 验证php测试页

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

6.3 验证lnmp的是否搭建成功 

浏览器访问http://192.168.190.100/index.php
#这里的ip根据自己的机器来定

6.4 验证数据库工作是否正常 

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.190.100','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
systemctl restart nginx.service浏览器访问
http://192.168.233.21/index.php

四、安装论坛  

1. 解压安装包

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

2. 调整论坛目录的权限 

chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

3. 论坛页面访问 

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

4. 安装完后访问论坛页面

http://192.168.190.100/bbs/admin.php
http://192.168.190.100/bbs/index.php

 

五、安装博客  

1. 解压安装包

tar xf wordpress-6.1.1-zh_CN.zip  -C /opt/
cp -r wordpress  /usr/local/nginx/html/
安装页面在 wp-admin 下

2. 调整目录权限

chmod 777 wordpress/ -R

3. 创建数据库用户信息

mysql -u root -p'密码'
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://192.168.190.100/wordpress/wp-admin/install.php
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123

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

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

相关文章

MySQL里的两个“二次”

文章中所有图片均来自网络 一、double write 第一个二次是mysql一个崩溃恢复很重要的特性-重复写入。 doublewrite缓冲区是位于系统表空间中的存储区域&#xff0c;在该区域中&#xff0c;InnoDB会在将页面写入数据文件中的适当位置之前&#xff0c;从InnoDB缓冲池中刷新这些页…

服务器常见的问题及解决方案

在面对硬件结构复杂、繁琐的服务器&#xff0c;企业不免会遇到服务器发生异常问题或者是出现系统故障的情况&#xff0c;从而导致重要数据的丢失&#xff0c;给企业造成巨大的损失&#xff0c;那么面对服务器异常&#xff0c;我们应该如何进行解决呢? 1.用户无法访问页面 对于…

React中使用useActive

1.引入 import { useActivate } from "react-activation";2.React Activation 在React中使用react-activation,其实就是类似于Vue中的keep-alive&#xff0c;实现数据的缓存&#xff1b; 源码&#xff1a; import { ReactNode, ReactNodeArray, Context, Component…

vue3+vite+ts配置多个代理并解决报404问题

之前配置接口代理总是报404,明明接口地址是对的但还是报是因数写法不对;用了vue2中的写法 pathRewrite改为rewrite 根路径下创建env文件根据自己需要名命 .env.development文件内容 # just a flag ENVdevelopment# static前缀 VITE_APP_PUBLIC_PREFIX"" # 基础模块…

为高频大功率设计的双面水冷厚膜电阻方案

EAK双面水冷厚膜电阻是一种具有良好散热性能的电阻器&#xff0c;常用于需要高效散热的电子设备中。其包括第一绝缘介质层、厚膜电阻层、第二绝缘介质层以及用于液体流通的金属腔体&#xff0c;第一绝缘介质层设置于金属腔体的上表面&#xff1b;第一绝缘介质层表面设有厚膜电阻…

Vue2:路由组件缓存技术

一、情景说明 我们的页面中 可能同时存在多个路由组件需要切换 有些路由组件中有input等输入框&#xff0c;当输入了内容后&#xff0c;点击其他组件按钮 再次切换回来时&#xff0c;内容被清空了 这样&#xff0c;用户体验就很差 这里&#xff0c;就用到路由组件缓存技术 二…

java常见的应用场景

Java 在软件开发、企业应用、移动应用、游戏开发等领域都有广泛的应用。 软件开发&#xff1a;Java 是一门功能强大的编程语言&#xff0c;可用于开发各种类型的软件&#xff0c;包括网站、桌面应用、嵌入式系统等。 企业应用&#xff1a;Java 是一种广泛用于企业级应用开发的…

nginx反向代理之缓存 客户端IP透传 负载均衡

一 缓存功能 缓存功能可以加速访问&#xff0c;如果没有缓存关闭后端服务器后&#xff0c;图片将无法访问&#xff0c;缓存功能默认关闭&#xff0c;需要开启。 相关选项&#xff1a; ​ proxy_cache zone_name | off; 默认off #指明调用的缓存&#xff0c;或关闭缓存机制;C…

MySql-多表设计-一对一

目录 一对一 一对一 一对一关系表在实际开发中应用起来比较简单&#xff0c;通常是用来做单表的拆分&#xff0c;也就是将一张大表拆分成两张小表&#xff0c;将大表中的一些基础字段放在一张表当中&#xff0c;将其他的字段放在另外一张表当中&#xff0c;以此来提高数据的操…

kali linux通过aircrack-ng命令破解wifi密码

相关阅读&#xff1a;如何破解攻击WiFi 百度安全验证https://baijiahao.baidu.com/s?id1764248756021219497&wfrspider&forpc上面2篇文章写得都很不错 一、前期准备工作 1、将无线网卡挂载到Kali上 ​ 将无线网卡插到电脑上&#xff0c;如果弹出检测到新的USB设备&…

10、电源管理入门之OPP介绍

目录 1. 什么是OPP,怎么用? 2. 系统初始化加载OPP信息 3. 触发使用 4. API介绍 之前的文章设置clock的时候多次提到了(Operating Performance Point)OPP,例如DEVFreq、CPUFreq等,在现代SoC上存在有Power Domain,也可以以Power Domain为单位进行OPP的电压频率定义。 …

成人年龄判断(个人学习笔记黑马学习)

结合前面学习的input输入语句&#xff0c;完成如下案例: 1.通过input语句&#xff0c;获取键盘输入&#xff0c;为变量age赋值。(注意转换成数字类型) 2.通过if判断是否是成年人&#xff0c;满足条件则输出提示信息&#xff0c;如下&#xff1a; 欢迎来到黑马儿童游乐场&#x…

什么是Rust 语言

Rust 是一种专注于性能和内存安全的系统编程语言&#xff0c;其设计目标包括提供&#xff1a;零开销抽象、移动语义、内存安全、线程无数据竞争、类型安全和实时 gc 等功能。Rust 使用 RAII&#xff08;Resource Acquisition Is Initialization&#xff09;管理资源&#xff0c…

Window系统安装USB Redirector结合cpolar实现远程访问本地USB设备

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 USB Redirector是一款方便易用的USB设备共享服务应用程序&#xff0c;它提供了共享和访问本地或互联网上的U…

图论|207. 课程表 210. 课程表 II

207. 课程表 你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要学习课程 ai 则 必须 先学习课程 …

Spark Bloom Filter Join

1 综述 1.1 目的 Bloom Filter Join&#xff0c;或者说Row-level Runtime Filtering&#xff08;还额外有一条Semi-Join分支&#xff09;&#xff0c;是Spark 3.3对运行时过滤的一个最新补充   之前运行时过滤主要有两个&#xff1a;动态分区裁剪DPP&#xff08;开源实现&am…

MongoDB聚合运算符:$concat

文章目录 语法举例 $concat聚合运算符返回多个字符串连接后的结果。 语法 { $concat: [ <expression1>, <expression2>, ... ] }<expression>可以是任何可以解析为字符串的表达式。如果表达式解析为null或引用的字段不存在&#xff0c;则返回null。 举例 …

迭代器模式:分离遍历逻辑与数据结构,实现统一访问接口与灵活扩展

文章目录 一、引言二、应用场景与技术背景三、模式定义与实现四、优缺点分析总结&#xff1a; 一、引言 ​ 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;它提供了一种方法顺序访问聚合对象的元素&#xff0c;而又不暴露其底层表示。迭…

DFS中的连通性和搜索顺序

宽搜一般要手写一个队列&#xff0c;深搜一般是用系统栈来实现的。 DFS之连通性模型 1112. 迷宫 - AcWing题库 import java.util.*;public class Main{static int N 110, ha, la, hb, lb, n;static char[][] g new char[N][N];static boolean[][] st new boolean[N][N];st…

顶顶通呼叫中心中间件-使用http接口方式把在通话的机器人话术手动转给人工坐席分机操作步骤(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-机器人话术中手动转接到人工坐席分机上讲解(mod_cti基于FreeSWITCH) 需要了解呼叫中心中间件可以点此链接添加联系方式顶顶通小孙 一、操作步骤 1、自动外呼进入机器人话术 这里就不详细说了&#xff0c;可以去参考我的这一篇文章自动外呼进入机器人 …