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  #关闭SELinuxgetenforce   #查看状态

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

<?phpphpinfo();
?>

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	   # 重新加载firewalldfirewall-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端口访问httpdfirewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.8" port protocol="tcp" port="88" accept'	# 允许测试机通过80端口访问httpdfirewall-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	   # 重新加载firewalldfirewall-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	   # 重新加载firewalldfirewall-cmd --list-all    # 查看防火墙规则

6、测试shh

四、总结

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

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

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

相关文章

微服务架构-微服务架构的挑战与微服务化的具体时机

目录 一、微服务架构的挑战 1.1 概述 1.2 服务拆分 1.3 开发挑战 1.4 测试挑战 1.4.1 开箱即用、一键部署的集成环境 1.4.2 测试场景和测试确定性 1.4.3 微服务相关的非功能测试 1.4.4 自动化测试 1.5 运维挑战 1.5.1 监控 1.5.2 部署 1.5.3 问题追查 1.5.4 依赖管…

高等教育的AI革新:OpenAI面向大学推出ChatGPT Edu

OpenAI推出了ChatGPT Edu&#xff0c;这是一个为大学设计的专用版本&#xff0c;旨在让学生、教职员工、研究人员和校园运营能够负责任地使用AI。 ChatGPT Edu 将AI技术引入了教育领域&#xff0c;其建立在GPT-4o的基础上&#xff0c;它不仅能够处理文本和图像&#xff0c;还…

【机器学习】深入探索机器学习:线性回归算法的原理与应用

❀线性回归算法 &#x1f4d2;1. 引言&#x1f4d2;2. 线性回归的基本原理&#x1f389;回归方程&#x1f389;最小化误差&#x1f389;线性回归的假设条件 &#x1f4d2;3. 线性回归算法的实现&#x1f4d2;4. 线性回归算法的特征工程&#x1f4d2;5. 线性回归模型评估与优化&…

【学习笔记】数据结构(二)

线性表 文章目录 线性表1、线性结构2、线性表2.1 线性表定义2.2 类型定义2.2 顺序存储结构&#xff08;Sequence List&#xff09;2.3 链式存储结构2.3.1 单链表2.3.2 循环链表2.3.3 双链表2.3.4 单链表、循环链表、双向链表的时间效率比较2.3.5 链式存储结构优缺点 2.4 顺序表…

【数字化风向标】合合信息重磅登陆CDIE 2024:引领创新,门票惊喜大放送!

官.网地址&#xff1a;合合TextIn - 合合信息旗下OCR云服务产品 6月25-26日&#xff0c;CDIE 2024 数字化创新博览会将在上海张江科学会堂举行。本届展览规模3300㎡&#xff0c;展位数量100&#xff0c;重点打造四大核心特色主题展区&#xff0c;包括行业数字化创新展区、企业…

智和信通助力中国移动湖南某市分公司县级政府外网运维项目

中国移动湖南某市分公司承建市下属某县政务外网网络建设项目&#xff0c;且在网络建设完工后&#xff0c;承担起运维职责&#xff0c;随着工作的推进市移动公司发现仅靠人力难以高效开展运维工作。 设备类型&#xff1a;OLT、ONU等通信设备 设备品牌&#xff1a;华为、中兴等…

TQSDRPI开发板教程:实现LWIP自环

项目资源分享 链接&#xff1a;https://pan.baidu.com/s/1QckFYSwua-Fpxk3tewledQ 提取码&#xff1a;bewt 打开vivado2019.1创建工程 下一步 设置工程名称与地址。勾选reate…选项&#xff0c;会创建一个新的文件夹&#xff0c;项目保存在其中&#xff0c;文件夹名称与工程名…

【数据库】MySQL表的操作

目录 一.创建表 二.查看表 三.修改表 四.删除表 一.创建表 基本语法&#xff1a; CREATE TABLE table_name(field1 datatype,field2 datatype,field3 datatype) character set 字符集 collate 校验规则 engine 储存引擎field表示列名 datatype表示列的类型 charatcer se…

L1527射频编码芯片 百万组通用编码器,可替代EV1527

L1527 是CMOS 结构的预烧内码&#xff08;遥控中的地址码&#xff09;通用编码器&#xff0c;内有 20 位可预烧写 100 万组内码组合&#xff0c;使得重码率很低&#xff0c;具有更高安全性。芯片内集成误操作禁止功能&#xff0c;在按键输入有效且状态不变时&#xff0c;芯片连…

生产现场的作业标准化,这么做就对了!

制造型企业的生产过程是以计划的成本、工时生产出达到客户要求的产品。如果在制造过程中&#xff0c;产品工艺、作业方法或作业条件有所变化的话&#xff0c;一定无法生产出符合上述要求的产品。 因此&#xff0c;公司领导必须对作业工艺流程、作业方法、作业条件进行标准化管…

全是干货:融资融券(两融)名词科普!

一、两融内涵 融资融券&#xff0c;也被称为证券信用交易&#xff0c;其内涵主要涵盖以下方面&#xff1a; 首先&#xff0c;它指的是投资者向具有融资融券业务资格的证券公司提供担保物&#xff0c;并借入资金用于买入证券&#xff08;融资交易&#xff09;或借入证券并卖出&…

kettle 使用动态变量名定义变量

name是变量&#xff0c;value 值也是变量 我需要把name作为变量名&#xff0c;value作为变量值&#xff1b; 在kettle中&#xff0c;使用javascript脚本 key与lastVsxzl都是变量 //Script here setVariable(key,lastVsxzl,r);var rgetVariable(key,r); Demo 1、从记事本里面…

Python中限制输入数值范围的技术性探讨

目录 一、引言 二、使用内置函数限制输入范围 三、使用条件语句进行范围检查 四、使用异常处理增强鲁棒性 五、结合第三方库进行输入验证 六、总结 一、引言 在Python编程中&#xff0c;用户输入是程序与用户交互的重要方式之一。然而&#xff0c;由于用户输入的多样…

Capto 标准版【简体中文+Mac 】

Capto 是一套易于使用的屏幕捕捉、视频录制和视频编辑 Capto-capto安装包-安装包https://souurl.cn/DPhBmP 屏幕录制和教程视频制作 记录整个屏幕或选择的任何特定区域。在创建内容丰富的教程视频时选择显示或隐藏光标。无论您做什么&#xff0c;都可以确保获得高质量的视频。…

Arm发布Cortex X925、A725、A520,Armv9.2架构

随着半导体行业的不断发展&#xff0c;Arm 通过突破技术界限&#xff0c;为终端用户提供尖端解决方案&#xff0c;在核心和 IP 架构创新方面处于领先地位&#xff0c;尤其是在移动领域。2024 年&#xff0c;Arm 的年度战略进步重点是增强去年的 Armv9.2 架构&#xff0c;并带来…

kali系统baopoWiFi密码

kali系统baopoWiFi密码,仅供学习 取决强大的密码字典,如果别人密码设置的足够安全,也无法破解成功,并不是100%破解 一、准备一个无线网卡&#xff0c;需要免驱动&#xff0c;最好知道频率2.4HGZ还是5.0GHZ 二、插上USB接口&#xff0c;vmware模拟器选择连接虚拟机 三、输入命…

C++ day2 练习

思维导图 自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() #inclu…

基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库

背景 在当今信息爆炸的时代&#xff0c;新闻内容的分类和预测对于用户个性化推荐和信息检索至关重要。基于朴素贝叶斯算法的新闻类型预测系统结合了机器学习和自然语言处理技术&#xff0c;能够根据新闻内容自动进行分类&#xff0c;提高新闻处理效率和准确性。采用Django框架…

科普之旅 | 什么是大语言模型

作者&#xff1a;陈之炎本文约2000字&#xff0c;建议阅读5分钟 本文介绍了大语言模型。 导读 在这个信息爆炸的时代&#xff0c;你是否曾幻想过与机器流畅交谈&#xff0c;或是让AI助你笔下生花&#xff0c;创作出惊艳的文章&#xff1f;这一切&#xff0c;都离不开大语言模型…

【一小时学会Charles抓包详细教程】Charles证书安装与SSL代理设置完全详解 (6)

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 Charles 安装证…