Shell脚本完成web服务器的建设

news2025/1/10 11:21:22

一,要求

1,安装httpd软件

2,定义防火墙规则

3,设置selinux为强制模式

4,web服务器的端口为8080

5,web服务器的内容目录为  /www/8080

6,所有操作开机有效

7,所有操作必须进行判断

8,在合适的实际输出合适的信息,如果有日志就更好了

二,具体实施

vim_repo() {
touch /etc/yum.repos.d/rpm.repo
echo -e "[baseos]\nname=baseos\nbaseurl=/mnt/BaseOS\ngpgcheck=0\n[appstream]\nname=appstrean\nbaseurl=/mnt/AppStream\ngpgcheck=0" > /etc/yum.repos.d/rpm.repo
}

repod() {
    yum=`yum repolist all | grep enabled | wc -l`
    if [ $yum -eq 0 ]
    then
        echo "没有仓库,mount"
        vim_repo
        mount /dev/sr0 /mnt
    else
        echo "有仓库,并挂载"
        mount /dev0 /mnt
    fi
}
httpd_whether_installed() {
    httpd_server=`rpm -qa | grep httpd | wc -l`
    if [ $httpd_server -eq 0 ];then
        echo "Httpd is not exists and insatll"
        yum install httpd
    else
        echo "Httpd is exists"
    fi
}

httpd_whether_enabled () {
    httpd_server=`netstat -lntup | grep -w 80 | wc -l`
    if [ $httpd_server -eq 0 ];then
        echo "httpd is not active and start httpd"
        systemctl start httpd
    else
        echo "httpd is active and make httpd enable"
        systemctl enable httpd
    fi
}

open_firewall_server() {
    firewall_listall=`firewall-cmd --list-all | grep http | wc -l`
    if [ $firewall_listall -eq 0 ];then
        echo "未开放http服务,并开始放行http服务,并重启"
        firewall-cmd --add-service=http --permanent
        firewall-cmd --reload
    else
        echo "已放行http服务"
    fi
}

set_selinux() {
while :
do
    getenforce=`getenforce`
    case $getenforce in
    "Enforcing")
        echo "SElinux为强制模式"
        break
        ;;
    "Permissive")
        echo "SElinux为宽容模式,正在换强制模式"
        setenforce 1
        getenforce
        break
        ;;
    *)
        echo "SElinux关闭"
        break
    esac
done
}

open_firewall_port() {
    firewall_port=`firewall-cmd --list-ports | wc -l`
    if [ $firewall_port -eq 0 ];then
        echo "未开放8080端口,正在开启并重启防火墙"
        firewall-cmd --zone=public --add-port=8080/tcp
        firewall-cmd --reload
    else
        echo "8080端口已经被放行!"
    fi
}

httpd_conf() {
    echo "正在配置httpd服务配置文件"
    echo -e " <directory /www>\nallowoverride\nrequire all granted\n</directory>\nlisten 8080\n<virtualhost 0.0.0.0:8080>\ndocumentroot /www/8080\nservername 192.168.80.131\n</virtualhost>" >/etc/httpd/conf.d/host.conf
    echo "启动httpd并检查状态"
    systemctl restart httpd
}

semanage_port() {
    #取出80端口的类型
    se_port=`semanage port -l | grep -w 80 | tr -s " " | cut -d " " -f1`
    echo "正在为selinux添加新端口"
    #更改 SELinux 类型端口 8080 使其与端口 80 匹配
    semanage port -a -t $se_port -p tcp 8080
    echo "添加端口完成,并查看修改对象安全上下文"
    se_content=`ls /var/www/html -Z | tr -s " " | cut -d ":" -f3`
    chcon -t $se_content /www/8080/index.html
    echo "修改成功,并检查/www/8080的安全上下文"
    ls /www/8080/index.html -lZ
    echo "检查完毕,正在重启httpd服务并测试服务能否访问"
    systemctl restart httpd
    wget 192.168.80.131:8080
}

repod
httpd_whether_installed
httpd_whether_enabled
open_firewall_server
set_selinux
open_firewall_port
httpd_conf
semanage_port

三,结果展示

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

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

相关文章

2022年上半年软件设计师下午试题

【试题四】&#xff08;共15分&#xff09; 阅读下列说明和C代码&#xff0c;回答问题1至问题3&#xff0c;将解答写在答题纸的对应栏内。 工程计算中经常要完成多个矩阵相乘的计算任务&#xff0c;对矩阵相乘进行以下说明。 (1)两个矩阵相乘要求第一个矩阵的列数等于第二个…

适合广告行业使用的企业网盘工具

Zoho Workdrive 是一款非常适合广告行业使用的企业网盘工具&#xff0c;它可以帮助广告行业进行高效、有序的项目管理。作为一名广告行业从业者&#xff0c;你是否遇到过以下问题&#xff1f; 2.文件无法有效共享 团队合作效率低下客户需求无法及时满足 这些问题都会严重影响项…

【Linux】Redis高可用概述2(Redis 发布订阅、Redis 事务、Redis主从复制)

一、Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式&#xff1a;发送者(pub)发送消息&#xff0c;订阅者(sub)接收消息。 发送者可以向多个订阅者发送消息&#xff0c;订阅者可以收到多个发送者送来的消息&#xff0c;也就是是说发送者和订阅者是多对多的关系 实例…

MATLAB中资源管理器无法安装资源解决方法详细教程

摘要&#xff1a;介绍使用MATLAB获取附加功能时出现“续订软件维护服务”的界面问题解决方案&#xff0c;即使用预先从官网下载的安装包文件&#xff0c;直接运行离线安装文件后会自动弹出附加功能管理界面&#xff0c;这时可以安装该附加工具&#xff0c;详细过程见以下介绍。…

ProtoBuf原理

一、文章 https://zhuanlan.zhihu.com/p/404782892 二、测试 1.test.proto syntax "proto3";package proto; option go_package "./;proto";message Msg{uint32 age1 1;sint32 age2 2;string name 3;bytes data 4; }2.main.go package mainimpor…

【滤波】多元卡尔曼滤波器

本文主要翻译自rlabbe/Kalman-and-Bayesian-Filters-in-Python的第6章节06-Multivariate-Kalman-Filters&#xff08;多元卡尔曼滤波器&#xff09;。 %matplotlib inline#format the book import book_format book_format.set_style()简介 我们现在准备研究和实现完整的、多…

财报解读:Q2业绩指引未达预期,狂奔的爱彼迎要减速了?

全球民宿龙头爱彼迎Airbnb迎来了一个强劲的开端。 美东时间5月9日盘后&#xff0c;爱彼迎发布了2023年第一季度财报。财报显示&#xff0c;爱彼迎一季度营收、净利润、总预订金额都获得了不同程度增长&#xff0c;超出市场预期。美中不足的是&#xff0c;公司预计二季度营收下…

分组卷积和深度可分离卷积

文章目录 一、常规卷积操作二、分组卷积三、深度可分离卷积 一、常规卷积操作 在图中&#xff0c;输入的特征图大小为 H * W * 4 卷积核个数为 2 个&#xff0c;每个卷积核的大小为 K * K * 4 输出的特征图大小为 H’ * W’ * 2 二、分组卷积 &#xff01;&#xff01;&#…

Java 内存模型

JVM 内部使用的 Java 内存模型&#xff0c; 在逻辑上将内存划分为 线程栈&#xff08;thread stacks&#xff09;和堆内存 &#xff08;heap&#xff09;两个部分。 如下图所示&#xff1a; JVM 中&#xff0c;每个正在运行的线程&#xff0c;都有自己的线程栈。 线程栈包含了当…

多表查询~

文章目录 多表查询内连接外连接子查询单行单列多行单列多行多列 多表查询 笛卡尔积:有A,B两个集合 取A,B所有的组合情况 内连接 要想查询某一章表的某个字段&#xff0c;可用 表名.字段名表示 也可以给表起别名 隐式内连接INNER可省略 外连接 外连接分左外连接和右外连接 子查…

堆排序创建

堆排序创建 一、介绍1、什么是堆2、大项堆&#xff08;排序前&#xff09;3、小项堆&#xff08;排序前&#xff09;4、排序思想 二、大项堆排序案例1、流程2、讲解 三、总结 一、介绍 1、什么是堆 堆是一种叫做完全二叉树的数据结构&#xff0c;可以分为大项堆&#xff0c;小…

计算机知识 小tips

目录 什么是R语言&#xff1f; 电脑长期不关机会产生什么影响&#xff1f; nlp是什么&#xff1f; cv是什么&#xff1f; 什么是R语言&#xff1f; R语言是一种用于数据分析和统计建模的编程语言和环境。它由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman于1995年开发而…

【C语言督学训练营 第十三天】栈与循环队列的顺序实现与链式实现

文章目录 前言栈--思想栈--代码实战队列--思想队列--代码实战真题实战&#xff01; 前言 栈与队列是数据结构中最常见的数据结构之一&#xff0c;因其特性往往可以将问题简单化&#xff0c;在使用栈与队列时要牢记&#xff1a;栈&#xff1a;先进后出&#xff0c;队列&#xf…

逆向练习及相关总结

文章目录 crakeme练习crackme1crackme2crackme3 解题步骤总结关键代码查找方法常见代码C类对象逆向分析C虚函数逆向分析 crakeme练习 crackme1 学到的知识点&#xff1a; main函数查找方法&#xff1a;运行到EntryPoint -> 第一个call&#xff08;一般在第三行&#xff09…

如何用u盘重装系统win7

​如今的U盘重装win7系统是比较常见的重装win7系统的方法&#xff0c;适用性比较高&#xff0c;操作也十分的简单。有的小伙伴想给自己的电脑重装win7&#xff0c;那么我们用u盘重装系统怎么安装win7?现在小编就来教大家如何用u盘重装系统教程。 工具/原料&#xff1a; 系统…

CTR预估之FMs系列模型:FM/FFM/FwFM/FEFM

前言 ctr预估&#xff08;点击率&#xff0c;click-through rate, CTR&#xff09;&#xff0c;指一个user在某个特定的场景下会点击一个item的概率估计&#xff0c;这里的item可以是广告、商品等&#xff0c;是推荐和广告系统中十分重要的模块。另外&#xff0c;这里的user-i…

《程序员面试金典(第6版)》面试题 16.18. 模式匹配(暴力破解 + 剪枝)

题目描述 你有两个字符串&#xff0c;即pattern和value。 pattern字符串由字母"a"和"b"组成&#xff0c;用于描述字符串中的模式。 例如&#xff0c;字符串"catcatgocatgo"匹配模式"aabab"&#xff08;其中"cat"是"a&q…

Redis基础复习

1 Redis基础概述 Redis 是C语言开发的一个开源高性能键值对的内存数据库&#xff0c;可以用来做数据库、缓存、消息中间件等场景&#xff0c;是一种NoSQL(not-only sql,非关系型数据库)的数据库 1.1 参考网站&#xff1a; 官网 中文文档 1.2 安装 linux安装Redis7 1.3 Re…

全新上线!能源行业大型的S/4升级项目——E.ON(意昂)第五次迁移成功完成

意昂集团是一家德国能源集团的控股公司&#xff0c;总部位于埃森。该公司主要活跃在能源网络、能源服务、可再生能源以及德国核电站的运营和退役领域。 意昂于2019年启动了全公司范围内的S/4联合项目&#xff0c;这是SAP大型S/4项目之一&#xff0c;也是能源行业的大型S/4项目。…

linux下mysql如何修改密码,包括本地密码和远程密码。navicat远程登录

当服务器部署mysql,navicat远程访问&#xff0c;修改密码时需要修改两次 1、修改本地登录密码 mysql > SET PASSWORD PASSWORD(123456); mysql > FLUSH PRIVILEGES;重启mysql服务 service mysql restart上面命令如果报错&#xff0c;则采取以下方法&#xff1a; [ro…