前言
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、注意属主的修改