LNMP简易搭建

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: LNMP平台指的是将Linux、Nginx、MySQL和PHP(或者其他的编程语言,如Python、Perl等)集成在一起的一种Web服务器环境。它是一种常用的开发和部署网站的解决方案,适用于构建各种类型的网站和应用程序。

前言

LNMP平台指的是将Linux、Nginx、MySQL和PHP(或者其他的编程语言,如Python、Perl等)集成在一起的一种Web服务器环境。它是一种常用的开发和部署网站的解决方案,适用于构建各种类型的网站和应用程序。


下面简要介绍每个组件的作用和功能:

1. Linux:作为操作系统,提供稳定的基础环境,支持并发处理和高性能。

2. Nginx:作为Web服务器和反向代理服务器,处理客户端请求并将它们转发给后端应用服务器,具有高性能和可扩展性。

3. MySQL:作为关系型数据库管理系统,用于存储和管理网站的数据,提供高效的数据读写和查询功能。

4. PHP:作为一种常用的编程语言,用于开发网站的后端逻辑和业务处理,与Nginx和MySQL进行沟通。


LNMP平台的优点包括:

1. 性能优异:Nginx作为Web服务器具有高性能和高并发处理能力,可以处理大量的请求。

2. 稳定可靠:Linux作为操作系统对稳定性有保证,并且MySQL作为数据库管理系统也很稳定,保证了网站的可靠性。

3. 可扩展性:LNMP平台支持横向扩展,可以通过增加服务器节点和负载均衡来提高系统的性能和可用性。

4. 社区支持:LNMP平台的每个组件都有庞大的开发者社区,提供了大量的文档、插件和技术支持。


需要注意的是,LNMP平台并不是唯一的选择,还有其他类似的解决方案,如LAMP(Linux、Apache、MySQL和PHP)、LEMP(Linux、Nginx、MySQL和PHP)、WAMP(Windows、Apache、MySQL和PHP)等。选择合适的平台取决于具体的需求和场景。



一、拓扑图


在三台主机上配防火墙、selinux、IP并测试通联性

1. systemctl stop firewalld
2. setenforce 0

二、NGINX配置


1、下载NGINX

wget https://nginx.org/download/nginx-1.20.2.tar.gz

2、解压并安装

[root@bogon ~]# ls
anaconda-ks.cfg       公共  图片  音乐
initial-setup-ks.cfg  模板  文档  桌面
nginx-1.20.2.tar.gz   视频  下载
[root@bogon ~]# tar -xf nginx-1.20.2.tar.gz 
[root@bogon ~]# ls
anaconda-ks.cfg       nginx-1.20.2.tar.gz  视频  下载
initial-setup-ks.cfg  公共                 图片  音乐
nginx-1.20.2          模板                 文档  桌面
[root@bogon ~]# cd nginx-1.20.2/
[root@bogon nginx-1.20.2]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[root@bogon nginx-1.20.2]# ./configure --prefix=/usr/local/nginx

在安装过程中会出现缺少依赖的提示,我们安装依赖

解决后继续安装又发现报错,缺少依赖;继续装依赖



解决依赖后继续安装

./configure --prefix=/usr/local/nginx


OK,开始安装make && make install

make && make install

完成


3、稍作优化

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

4、修改配置文件vim /usr/local/nginx/conf/nginx.conf

第一处


第二处 #此处是针对php环境的修改:IP写成php环境主机的IP、目录修改成如下用于测试、后缀



5、书写测试页面

vim /usr/local/nginx/html/index.html

内容如下:

修改文件名

mv /usr/local/nginx/html/index.html /usr/local/nginx/html/index.php

6、启动nginx并监听端口

[root@bogon nginx-1.20.2]# nginx -c /usr/local/nginx/conf/nginx.conf
[root@bogon nginx-1.20.2]# netstat -anput |grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      63511/nginx: master 
[root@bogon nginx-1.20.2]# 

7、访问失败,php环境还未配置

三、配置MySQL

来到192.168.115.129主机

1、安装mariadb

yum -y install mariadb mariadb-server

2、启动mairadb

[root@bogon ~]# systemctl start mariadb.service 
[root@bogon ~]# netstat -anput |grep mysql
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      125211/mysqld   

3、此处可以添加硬盘在主机上存储数据

扫描硬盘、格式化并硬盘分区


[root@bogon scsi_host]# for i in `ls ./`;do echo "- - -">$i/scan;done
[root@bogon scsi_host]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0 38.3G  0 lvm  /
  ├─centos-swap 253:1    0    2G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.7G  0 lvm  /home
sdb               8:16   0    1T  0 disk 
sr0              11:0    1  9.5G  0 rom  /run/media/root/
[root@bogon scsi_host]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x4eb4f908 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-2147483647,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-2147483647,默认为 2147483647):
将使用默认值 2147483647
分区 1 已设置为 Linux 类型,大小设为 1024 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@bogon scsi_host]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0 38.3G  0 lvm  /
  ├─centos-swap 253:1    0    2G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.7G  0 lvm  /home
sdb               8:16   0    1T  0 disk 
└─sdb1            8:17   0 1024G  0 part 
sr0              11:0    1  9.5G  0 rom  /run/media/root/
[root@bogon scsi_host]# 

创建物理卷、卷组、逻辑卷并将其自动挂载到mysql数据存储目录上

###创建分区
[root@bogon scsi_host]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@bogon scsi_host]# vgcreate -s 200G mysql_data_vg /dev/sdb1
Volume group "mysql_data_vg" successfully created
[root@localhost scsi_host]# lvcreate -n mysql_lv -L 100G mysql_data_vg 
  Rounding up size to full physical extent 100.00 GiB
  Logical volume "mysql_lv" created.
[root@localhost scsi_host]# mkfs -t xfs /dev/mapper/mysql_data_vg-mysql_lv 
meta-data=/dev/mapper/mysql_data_vg-mysql_lv isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
####自动挂载
#查看UUID
[root@localhost scsi_host]# blkid
/dev/sda1: UUID="3c53f9b7-af27-45a0-847d-c8b51a61b4e8" TYPE="xfs" 
/dev/sda2: UUID="OzzZJ3-ONL3-zWXH-eLIM-l911-W2KJ-4R8b2z" TYPE="LVM2_member" 
/dev/sr0: UUID="2020-11-02-15-15-23-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="b8b20542-652c-41b9-ad78-67da2a038bf2" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="790fd44d-6a6c-45cb-8c89-d47ece6e2bfa" TYPE="swap" 
/dev/mapper/centos-home: UUID="10964595-0e9e-426f-8ef3-daa2922cdcb2" TYPE="xfs" 
/dev/sdb1: UUID="OCNFit-EIep-psSv-1znp-mmGZ-ydmA-FRNzC0" TYPE="LVM2_member" 
/dev/mapper/mysql_data_vg-mysql_lv: UUID="2a754bae-41a9-4f41-bf44-d7327b160f71" TYPE="xfs"
#查看mysql的数据存放目录
vim /etc/my.conf
此字段就是datadir=/var/lib/mysql
#挂载
vim /etc/fstab
插入UUID=2a754bae-41a9-4f41-bf44-d7327b160f71 /var/lib/mysql  xfs defaults 0 0
测试mount -a
查看 df -TH
###修改属主
cd /var/lib/mysql
chown -R mysql.mysql ../*

4、登录MySQL并且创建数据库hy和远程登录用户用于部署应用

[root@bogon ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE `hy` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on hy.* to 'hy'@'192.168.115.%' identified by'123.com';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> 

5、此处可以登录其他主机安装mysql来测试我们的远程登录账户是否可以正常使用

[root@bogon nginx-1.20.2]# mysql -u hy -h 192.168.115.130 -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hy                 |
| test               |
+--------------------+
3 rows in set (0.00 sec)
MariaDB [(none)]> 

四、配置php环境


1、移除低版本php环境

yum remove php

2、安装高版本php环境

##更新源
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
##安装
yum install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml php72w-ldap php72w-mcrypt

查看php版本

3、编辑 php的配置文件

/etc/php-fpm.d/www.conf

修改成自己的地址


修改成NGINX服务器的IP




4、创建目录、编辑测试页面

1. mkdir /usr/local/nginx/html -p
2. 
3. vim /usr/local/nginx/html/index.php

写入


5、启动并检查端口



[root@bogon ~]# systemctl start php-fpm.service 
[root@bogon ~]# netstat -anput |grep php
tcp        0      0 192.168.115.129:9000    0.0.0.0:*               LISTEN      82767/php-fpm: mast 
[root@bogon ~]# 

6、浏览器访问测试




五、部署应用


仅供参考:

Disucz! 下载_免费搭建网站_开源建站系统下载_Discuz!官方_为您提供全方位建站服务!

选择对应的Disucz版本,同时兼顾它对php版本的要求

将下载好的Disucz分别部署在NGINX和php两台主机中

1、在php上部署:解压并移动位置

[root@bogon ~]# ls
anaconda-ks.cfg                   公共  文档
Discuz_X3.5_SC_UTF8_20230726.zip  模板  下载
initial-setup-ks.cfg              视频  音乐
phpmyadmin依赖                    图片  桌面
[root@bogon ~]# unzip Discuz_X3.5_SC_UTF8_20230726.zip 
[root@bogon ~]# ls
anaconda-ks.cfg                   readme        视频
Discuz_X3.5_SC_UTF8_20230726.zip  readme.html   图片
initial-setup-ks.cfg              upload        文档
LICENSE                           utility.html  下载
phpmyadmin依赖                    公共          音乐
qqqun.png      
[root@bogon ~]# mv upload/* /usr/local/nginx/html
mv:是否覆盖"/usr/local/nginx/html/index.php"? yes
[root@bogon ~]# 

修改 属主为Apache

1. [root@bogon ~]# chown apache -R /usr/local/nginx/html/*
2. [root@bogon ~]# ll /usr/local/nginx/html/*

2、在NGINX上同理部署

解压并移动位置

[root@bogon ~]# ls
anaconda-ks.cfg                   公共  下载
Discuz_X3.5_SC_UTF8_20230726.zip  模板  音乐
initial-setup-ks.cfg              视频  桌面
nginx-1.20.2                      图片
nginx-1.20.2.tar.gz               文档
[root@bogon ~]# unzip Discuz_X3.5_SC_UTF8_20230726.zip
[root@bogon ~]# ls
anaconda-ks.cfg                   readme        图片
Discuz_X3.5_SC_UTF8_20230726.zip  readme.html   文档
initial-setup-ks.cfg              upload        下载
LICENSE                           utility.html  音乐
nginx-1.20.2                      公共          桌面
nginx-1.20.2.tar.gz               模板
qqqun.png                         视频
[root@bogon ~]# mv upload/* /usr/local/nginx/html/
mv:是否覆盖"/usr/local/nginx/html/index.php"? yes

创建程序用户,并修改属主

[root@bogon ~]# useradd nginx -s /sbin/nologin -M
[root@bogon ~]# chown nginx -R /usr/local/nginx/html/*
[root@bogon ~]# ll /usr/local/nginx/html/*
-rw-r--r--  1 nginx root  494 8月  12 00:00 /usr/local/nginx/html/50x.html
-rw-r--r--  1 nginx root 2869 7月  27 00:14 /usr/local/nginx/html/admin.php
-rw-r--r--  1 nginx root  727 7月  27 00:14 /usr/local/nginx/html/api.php

3、浏览器访问测试



按照提示操作



在这一步中将之前在MySQL创建的库名、用户写上(其他的根据需求自己填写)



成功安装


总结

在本次实验中需要注意的问题:

1、关于配置NGINX和php的配置文件时,注意两者地址的关系;在设置访问路径时要两者保持一致;

2、根据Discuz的要求部署适合的php环境

3、书写测试页面,测试是否可以解析网页

4、注意属主的修改

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
API 开发者
如何获取淘宝/天猫购物车的商品列表 API 返回值说明
淘宝/天猫的购物车API返回值会包含当前用户购物车中的商品列表及相关信息。以下是API返回值可能包含的主要字段和信息的详细说明:
|
存储 人工智能 调度
GPT-4 Turbo 发布 | 大模型训练的新时代:超算互联网的调度与调优
算力对训练模型的重要性日益凸显。随着大模型训练的流行,全球显卡和算力正在快速增长。算力后周期市场也在迅速崛起。其中“后”更多是指后服务市场,涵盖从显卡服务器到货IDC之后,形成稳定算力到输出稳定商业推理结果全过程。该过程主要涉及云化、调优、调度、部署、落地和数据管理等环节。
1042 0
|
SQL 分布式计算 数据处理
图文详解:DataHub产品概述
阿里云流数据处理平台DataHub是流式数据(Streaming Data)的处理平台,提供对流式数据的发布 (Publish),订阅 (Subscribe)和分发功能,让您可以轻松构建基于流式数据的分析和应用。
3083 0
|
8月前
|
存储 安全 大数据
数据安全中心:云上全域数据防泄漏与安全解决方案
在数字化转型中,企业面临数据安全挑战。为应对《个人信息保护法》等法规要求,我们推出“数据安全中心”,提供云上全域数据防泄漏与安全解决方案。该产品涵盖敏感数据自动识别、分级分类、大数据审计、数据脱敏及列加密等功能,帮助企业轻松实现数据治理,确保合规并保护客户信任。欢迎参加12月11日晚7:30阿里云中小企业直播间了解更多。
182 2
|
11月前
|
域名解析 网络协议 数据安全/隐私保护
阿里云轻量应用服务器搭建WordPress个人博客教程
阿里云轻量应用服务器搭建WordPress个人博客教程
|
11月前
|
Java 索引
Java“ArrayIndexOutOfBoundsException”解决
Java中的“ArrayIndexOutOfBoundsException”异常通常发生在尝试访问数组的无效索引时。解决方法包括:检查数组边界,确保索引值在有效范围内;使用循环时注意终止条件;对用户输入进行验证。通过这些措施可以有效避免该异常。
2081 2
|
JavaScript 前端开发
vue filters过滤器传多个参数
这段内容展示了如何在HTML和JavaScript中使用过滤器(filter)。在HTML中,通过`{{变量 | 过滤器名(参数)}}`的方式传递参数给过滤器。在JavaScript中,定义过滤器函数并接收参数,如`filterAa(aa, bb, cc)`,其中`aa`, `bb`, `cc`分别代表过滤器接收到的第1至第3个参数。示例逐步演示了传1个、2个到3个参数给过滤器的过程。
697 1
|
机器学习/深度学习 语音技术 数据库
ICLR 2024:为音视频分离提供新视角,清华大学胡晓林团队推出RTFS-Net
【2月更文挑战第17天】ICLR 2024:为音视频分离提供新视角,清华大学胡晓林团队推出RTFS-Net
298 1
ICLR 2024:为音视频分离提供新视角,清华大学胡晓林团队推出RTFS-Net
|
SQL 前端开发 JavaScript
基于python+django的宠物商店-宠物管理系统
该系统是基于python+django开发的宠物商店-宠物管理系统。是给师妹开发的课程作业。现将源码开放给大家。大家学习过程中,如遇问题可以在github咨询作者。
434 0
|
安全 Go 开发者
Golang深入浅出之-Go语言模板(text/template):动态生成HTML
【4月更文挑战第25天】Go语言的`text/template`和`html/template`库提供动态HTML生成。本文介绍了模板基础,如基本语法和数据绑定,以及常见问题和易错点,如忘记转义、未初始化变量、复杂逻辑处理和错误处理。建议使用`html/template`防止XSS攻击,初始化数据结构,分离业务逻辑,并严谨处理错误。示例展示了条件判断和循环结构。通过遵循最佳实践,开发者能更安全、高效地生成HTML。
492 0