LAMP分布式安全方案搭建网页 (LinuxCentOS7+Apache+Mariadb+PHP)包括服务端口及防火墙规则配置

目录

一、实验目的

二、设计方案及规划

三、实验内容及步骤

(1)实验前基础配置

(2)Test配置,安装Firefox浏览器和图形界面

(3)Web安装Apache

(4)Database安装Mariadb

(5)Web安装php-fpm

(6)Web安装phpmyadmin

(7)给phpMyAdmin设置登录密码

(8)配置服务端口

Web中的服务端口配置:

Database中的服务端口配置:

(9)配置防火墙进出规则

Test的防火墙进出规则配置:

Web的防火墙进出规则配置:

Database的防火墙进出规则配置:

四、总结


一、实验目的

1. 了解LAMP架构的概念和特点,包括Linux操作系统、Apache服务器、MySQL数据库和PHP编程语言的组成和功能;

2. 学习如何在分布式环境下搭建和部署LAMP架构,提高系统的性能和可靠性;

3. 掌握LAMP架构的搭建过程,学习如何配置和管理各个组件,以及如何实现负载均衡和高可用性;

4. 熟悉分布式架构下的数据存储和管理方式,了解如何对数据进行备份和恢复,提高系统的安全性和稳定性;

5. 实践LAMP架构下的开发和部署流程,掌握如何设计和开发基于LAMP的Web应用程序。

二、设计方案及规划

网络拓扑结构图(箭头所指处为可访问的主机)

IP地址、端口分配等

系统

IP

安装的软件

作用

Test

CentOS7

10.0.0.8(:10022)

Firefox

测试

Web

CentOS7

10.0.0.9(:10022)

Apache(:80\:88\:10080)、php-fpm、

phpmyadmin

提供网页

Database

CentOS7

10.0.0.10(:10022)

MySQL(mariadb:30213)

存储数据

Windows

Windows11

/

/

远程连接控制

三、实验内容及步骤

(1)实验前基础配置

        安装并配置虚拟机Test、Web、Database的主机名、IP、网络、yum源及远程连接(以上步骤略),关闭防火墙SElinux服务,并修改远程连接端口为10022

1、永久关闭防火墙(防止开机自启)

systemctl disable firewalld

2、临时关闭SElinux服务

 setenforce 0  #关闭SELinux
 getenforce   #查看状态

3、修改ssh端口,进入ssh配置文件

vi /etc/ssh/sshd_config

2、找到端口那一行,将#去掉,并将22改为10022

3、开放ssh使用的端口10022

semanage port -l | grep ssh

4、使用Windows远程连接(注意连接时端口号填写为10022)

至此三台虚拟机的基本配置已完成

(2)Test配置,安装Firefox浏览器和图形界面

1、查看Test主机版本

uname -a

2.1、使用Windows进入Firefox官网选择对应的版本并下载(如果配置好了yum源请直接看2.2)

https://www.firefox.com.cn/download/

 将下载好的压缩包上传到虚拟机中

将其解压缩

tar -xjvf Firefox-latest-x86_64.tar.bz2

移入系统目录,并为其创建软链接

mv firefox /usr/lib64
ln -s /usr/lib64/firefox/firefox /usr/bin/firefox

2.2、或者直接使用命令下载(需配置好yum源)

yum -y install firefox

4、由于firefox未安装图形界面无法启动,我们为其安装图形界面

yum -y groupinstall "x Window system"
yum -y groupinstall “Gnome"

5、启用图形界面

startx

6、进入虚拟机内查看图形界面是否启动成功

(3)Web安装Apache

1、下载httpd

yum -y install httpd

2、查看版本号

http -v

3、将http服务添加到开机自启动并开启http服务

systemctl enable httpd && systemctl start httpd

4、进入浏览器输入Web的IP地址可以看到如下界面,即Apache安装成功

(4)Database安装Mariadb

1、进入mariadb.repo文件中配置yum源文件

vi /etc/yum.repos.d/mariadb.repo

配置文件如下: 

[mariadb]
name = MariaDB
baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.5/centos7-amd64
gpgkey = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1

2、列出系统上所有可用的Yum软件源,可以看到我们刚才添加的Mariadb源

yum repolist

3、安装Mariadb

yum install -y mariadb-server

4、测试启用Mariadb

systemctl start mariadb
systemctl stop mariadb
systemctl start mysqld
\q
systemctl stop mysqld

5、输入mysql_secure_installation,初始化数据库

Enter current password for root (enter for none):          初次运行直接回车

设置密码

Switch to unix_socket authentication [Y/n]                     输入y并回车

Change the root password? [Y/n]                                   输入y并回车

New password:                                                              设置root用户密码

Re-enter new password:                                               再次输入密码

Remove anonymous users? [Y/n]                               是否删除匿名用户,输入y回车

Disallow root login remotely? [Y/n]                             是否禁止root远程登录,这里我们输入n

Remove test database and access to it? [Y/n]                是否删除test数据库,输入y回车

Reload privilege tables now? [Y/n]                                 是否重新加载表权限,输入y回

mysql_secure_installation

6、重新启动Mariadb,root设置成功

systemctl restart mariadb.service

(5)Web安装php-fpm

1、用命令php -v查看是否存在php,如果有则使用命令yum remove -y php*卸载(为防止版本过低)

php -v

2、更换yum源

sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

3、为PHP 8启用流模块

sudo yum-config-manager --disable 'remi-php*'
sudo yum-config-manager --enable remi-php80

4、安装PHP 8及扩展相关软件

sudo yum install -y php php-{extension_name}

5、查看是否安装成功

php -v

6、进入编辑文件index.php

vi /var/www/html/index.php

<?php
    phpinfo();
?>

7、进入浏览器输入WebIP/index.php

8、安装php-fpm服务

yum install -y php-mysqli

9、启用服务并加入开机自启动

(6)Web安装phpmyadmin

1、从网络上下载phpMyAdmin的压缩包

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz		

2、解压缩

tar -xvzf phpMyAdmin-latest-all-languages.tar.gz

3、将文件移入存储网页的文件夹中

ls
mv phpMyAdmin-5.2.1-all-languages phpMyAdmin #重命名
mv phpMyAdmin /var/www/html/

4、重启服务

systemctl restart httpd
systemctl restart php-fpm

5、输入webIP+/phpMyAdmin/index.php进入网页,查看是否出现此界面

(7)给phpMyAdmin设置登录密码

Web中的操作:

1、进入phpMyAdmin文档中找到inc.php结尾的文件,将其改名为config.inc.php

cd /var/www/html/phpMyAdmin/
ls  #如果不是config.inc.php,而是config.sample.inc.php,就将文件改成config.inc.php

2、进入config.inc.php文档中,对框选中的位置进行更改,添加Database的IP,登录用户名,密码,进入端口等信息

vi config.inc.php

$cfg['Servers'][$i]['host'] = '10.0.0.10';		# 如果你的数据库服务器在另一台机器上,这里改为该机器的 IP 或域名
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['user'] = 'pl'; # 这里填入你的 MySQL/MariaDB 用户名
$cfg['Servers'][$i]['password'] = '123456'; # 这里填入你的 MySQL/MariaDB 密码
$cfg['Servers'][$i]['port'] = '3306'; # 默认 MariaDB/MySQL 端口是 3306
$cfg['Servers'][$i]['socket'] = ''; # 如果你的服务器使用 socket 连接,这里指定 socket 路径

3、重启服务

systemctl restart httpd
systemctl restart php-fpm

Database中的操作:

1、使用先前初始化数据库设置的root密码登录进去,添加允许登录的主机IP,用户名和密码等信息

mysql -u root -p    # 进入数据库

Enter password:				# 输入root用户密码

SELECT User, Host FROM mysql.user;        #  查看MariaDB中的所有用户

CREATE USER 'pl'@'10.0.0.9' IDENTIFIED BY '123456';   # 创建一个新用户并为其设置密码

GRANT ALL PRIVILEGES ON mysql.* TO 'pl'@'10.0.0.9';		# 为用户授予权限

FLUSH PRIVILEGES;			# 刷新权限

\q    # 退出

2、查看用户列表是否添加成功

mysql -u root -p    # 进入数据库

Enter password:				# 输入root用户密码

SELECT User, Host FROM mysql.user;        #  查看MariaDB中的所有用户

\q    # 退出

Test中的操作:

1、输入webIP+/phpMyAdmin/index.php进入网页中

2、输入刚才录入的用户名和密码,登录

3、出现以下界面即phpMyAdmin登录密码设置成功

(8)配置服务端口

        因为Test、Web、Database三台主机是仅通过IP和服务端口单向访问的,所以接下来将配置

Web和Database的服务端口,以及三台主机的防火墙策略。

首先给三台虚拟机分别安装网络工具(由于实验所用的CentOS均为最小安装,所以缺省了网络命令工具)

yum install -y net-tools

Web中的服务端口配置:

1、查看http服务端口

netstat -antlupe | grep httpd

2、进入配置文件

vi /etc/httpd//conf/httpd.conf

3、新增88和10080两个端口,然后保存文件并退出

4、重启http服务

systemctl restart httpd

5、查看端口是否添加成功

netstat -tunlp | grep http

6、进入浏览器访问88和10080这两个端口,查看是否存在对应服务,出现以下界面即成功

Database中的服务端口配置:

1、进入配置文件

vi /var/www/html/phpMyAdmin/config.inc.php

2、将默认端口3306更改

3、重启mariadb服务

systemctl restart mariadb

4、查看mariadb服务端口

netstat -tunlp | grep mariadb

(9)配置防火墙进出规则

Test的防火墙进出规则配置:

        由于三台虚拟机处于同一网段中,他们ssh可以互相登录。所以Test中只需要禁止其他两台ssh登录Test

1、开启防火墙并加入开机自启

systemctl start firewalld
systemctl enable firewalld

2、新增防火墙规则

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.9" port protocol="tcp" port="10022" reject'	    # 拒绝web机通过10022端口访问test机的ssh
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.10" port protocol="tcp" port="10022" reject'    # 拒绝Data机通过10022端口访问test机的ssh

3、重新加载防火墙规则并查看防火墙规则

firewall-cmd --reload	   # 重新加载firewalld

firewall-cmd --list-all    # 查看防火墙规则

4、ssh登录,查看是否配置成功

Web的防火墙进出规则配置:

        由于三台虚拟机处于同一网段中,他们ssh可以互相登录。http服务也只能Test访问。所以需要禁止其他两台ssh登录,并配置http访问规则

1、开启防火墙并加入开机自启

systemctl start firewalld
systemctl enable firewalld

2、查看防火墙规则

firewall-cmd --list-all    # 查看防火墙规则

3、新增防火墙规则

配置http规则:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="10080" accept'	# 允许测试机IP通过10080端口访问httpd

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="88" accept'	# 允许测试机通过80端口访问httpd

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="80" accept'	# 允许测试机通过8080端口访问httpd

配置ssh规则:

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="10022" reject'	    # 拒绝test机通过10022端口访问web机的ssh
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.10" port protocol="tcp" port="10022" reject'    # 拒绝Data机通过10022端口访问web机的ssh

4、重新加载防火墙规则

firewall-cmd --reload	   # 重新加载firewalld

firewall-cmd --list-all    # 查看防火墙规则

5、测试shh登录

Database的防火墙进出规则配置:

        由于三台虚拟机处于同一网段中,他们ssh可以互相登录。http服务也只能Web访问。所以需要禁止其他两台ssh登录,并配置数据库访问规则

1、开启防火墙并加入开机自启

systemctl start firewalld
systemctl enable firewalld

2、查看防火墙规则

firewall-cmd --list-all    # 查看防火墙规则

4、新增防火墙规则并重新加载防火墙规则

配置数据库规则:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.9" port protocol="tcp" port="30212" accept'   # 允许webIP通过30212端口访问数据库

配置ssh规则:

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.9" port protocol="tcp" port="10022" reject'	    # 拒绝web机通过10022端口访问Data机的ssh
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="10022" reject'    # 拒绝Test机通过10022端口访问DAta机的ssh

5、再次查看防火墙规则是否配置成功

firewall-cmd --reload	   # 重新加载firewalld

firewall-cmd --list-all    # 查看防火墙规则

6、测试shh

四、总结

        至此LAMP的分布式配置已全部完成,希望本文能对大家有帮助!如果有帮到大家,希望大家能留个赞再离开,谢谢啦!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2.4 Docker部署JDK

2.4 Docker部署JDK jdk17部署&#xff08;自定义镜像&#xff09; 1.在官网上下载jdk-17_linux-x64_bin.tar.gz&#xff0c;并安装到/usr/local目录下 cd /usr/local2.创建Dockerfile vim Dockerfile# 基于官方的Ubuntu 20.04镜像作为基础镜像 FROM ubuntu:20.04# 设置环境…

瑞吉外卖项目学习笔记(二)后台系统的员工管理业务开发

一、完善登录功能 1.1 问题分析 1.2 代码实现 package com.itheima.reggie.filter;//这是一个过滤器类 //登录检查过滤器import com.alibaba.fastjson.JSON; import com.itheima.reggie.common.R; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf…

探索k8s集群的存储卷 emptyDir hostPath nfs

目录 一 含义 查看支持的存储卷类型 emptyDir存储卷 1.1 特点 1.2 用途 1.3部署 二、hostPath存储卷 一 含义 容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重…

磁盘配额的具体操作

磁盘配额&#xff1a; linux的磁盘空间有两个方面&#xff1a;第一个是物理空间&#xff0c;也就是磁盘的容量 第二个inode号耗尽&#xff0c;也无法写入 linux根分区&#xff1a;根分区的空间完全耗尽&#xff0c;服务程序崩溃&#xff0c;系统也无法启动了。 为了防止有人…

师彼长技以助己(2)产品思维

师彼长技以助己&#xff08;2&#xff09;产品思维 前言 我把产品思维称之为&#xff1a;人生底层的能力以及蹉跎别人还蹉跎自己的能力&#xff0c;前者说明你应该具备良好产品思维原因&#xff0c;后者是你没有好的产品思维去做产品带来的灾难。 人欲即天理 请大家谈谈看到这…

错误 0x80070570:文件或目录损坏且无法读取/无法访问[拒绝访问]-解决方法

1.起因&#xff1a;在挪动&#xff35;盘文件时&#xff0c;出现无法移动的报错提示&#xff1a; and无法访问[拒绝访问]: 2.原因&#xff3b;大多是胡乱拔出&#xff35;盘&#xff3d; &#xff3b;来自0x80070570 文件或目录损坏且无法读取 CHKDSK 修复方法-CSDN博客&#…

【介绍下SCSS的基本使用】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【AI应用开发框架】应用phidata快速构建你的智能体(如个人知识库、自动选股等)

1.phidata是什么&#xff1f; AI APP开发框架&#xff0c;基于此框架可快速搭建智能体或智能助手以实现记忆、知识库及工具使用等功能。 2.框架是怎样的&#xff1f; 3.为什么选择phidata&#xff1f; 问题&#xff1a;LLMs 的上下文有限&#xff0c;无法执行具体动作 解决…

[数据集][目标检测]猫狗检测数据集VOC+YOLO格式8291张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8291 标注数量(xml文件个数)&#xff1a;8291 标注数量(txt文件个数)&#xff1a;8291 标注…

LeetCode-131 分割回文串

LeetCode-131 分割回文串 题目描述解题思路C 代码 题目描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串。返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;[[“a”,“a”,“b”],…

1.8k Star!RAGApp:在任何企业中使用 Agentic RAG 的最简单方法!

原文链接&#xff1a;&#xff08;更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号&#xff01;&#xff09; 1.8k Star&#xff01;RAGApp&#xff1a;在任何企业中使用 Agentic RAG 的最简单方法&#xff01; &#x1f31f;在任何企业中使用 Agent…

大数据信用报告分析和评估有什么意义

大数据信用这个词在现在已经是很常见的了&#xff0c;只要是申贷的朋友对它就不陌生&#xff0c;在明面上的信用资质刚刚满足审核要求&#xff0c;但又要把控风险的时候&#xff0c;这个时候大数据信用就会作为风控机构交叉核查的重要依据。那你知道大数据信用报告分析和评估有…

二、线性回归模型

目录 一、线性回归 1.模型示例 2.代码实验&#xff08;C1_W1_Lab03_Model_Representation&#xff09; (1).工具使用 (2).问题描述-房价预测 (3).输入数据 (4).绘制数据集坐标点 (5).建模构造函数 二、代价函数&#xff08;Cost function&#xff09; 1.解释一下概念…

上架 Google Play 的那些辛酸泪

一、注册 Google 账号 首先你要有个账号&#xff0c;地址如下&#xff1a; accounts.google.com/signup/v2/w… 按照 Google 爸爸要求&#xff0c;该填写的都填了&#xff0c;随后点击下一步。 验证手机号&#xff1a; 输入验证码验证当前手机号&#xff1a; 其他信息填写&a…

废品回收小程序怎么做?有哪些核心功能?

废品回收行业正逐步走向高质量发展的道路。在国家政策的推动下&#xff0c;再生资源市场需求旺盛&#xff0c;行业内部竞争格局逐渐明朗。 随着互联网技术的发展&#xff0c;"互联网回收"成为废品回收行业的一个新趋势。通过微信小程序这种线上平台&#xff0c;用户…

Linux--EXT2文件系统

参考资料&#xff1a; linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图_一个块组中索引节点表和数据块区最多占用字节-CSDN博客 linux环境&#xff1a; Linux version 5.15.146.1-microsoft-standard-WSL2 (root65c757a075e2) (gcc (GCC) 11.2.0, GNU ld…

Wpf 使用 Prism 实战开发Day30

登录界面设计 一.准备登录界面图片素材&#xff08;透明背景图片&#xff09; 1.把准备好的图片放在Images 文件夹下面&#xff0c;格式分别是.png和.ico 2.选中 login.png图片鼠标右键&#xff0c;选择属性。生成的操作选择>资源 3.MyTodo 应用程序右键&#xff0c;属性&a…

音量的对数表示与浮点数表示

音量用浮点数&#xff08;float&#xff09;和对数&#xff08;logarithmic scale&#xff09;表示各有特点和应用场景 浮点数&#xff1a;直接使用线性刻度表示音量&#xff0c;例如在0.0&#xff08;最小音量&#xff09;到1.0&#xff08;最大音量&#xff09;的范围内。对…

YZW900规格书

title: “深圳市沃进科技有限公司” 深圳市沃进科技有限公司 TOP视图 特性 异地组网&#xff0c;远程访问有线/无线备份单模双卡备份5G转有线&#xff0c;5G转WIFI2.4G5.8G双频WIFI三网口&#xff0c;WAN/LAN可切换软硬件看门狗智能防掉线云平台、客户端远程管理安装支架安装铝…

MyBatis延迟加载缓存分页逆向工程

文章目录 延迟加载概述步骤 缓存一级缓存介绍原理 二级缓存介绍 设置缓存对象策略原理开启步骤属性解释是否使用一级缓存 分页插件使用步骤 逆向工程介绍搭建使用增删修改查 延迟加载 概述 延迟加载本身是依赖于多表查询的 延迟加载中返回值要选择resultMap返回的结果一定是D…