当前位置: 首页 > 编程日记 > 正文

centos7上搭建http服务器以及设置目录访问

参考文献:http://www.jb51.net/article/137596.htm,原文摘抄如下,并根据具体需要作了相应的修改。

步骤:

1. 安装httpd服务

sudo yum install httpd

Apache 的所有配置文件都位于  /etc/httpd/conf    /etc/httpd/conf.d  。网站的数据默认位于  /var/www,但如果你愿意,你可以改变它。

2. 配置

Apache 主要的配置文件是 /etc/httpd/conf/httpd.conf 。 它包含许多在基本安装中不需要更改的配置。 实际上,只需对此文件进行一些更改即可启动并运行一个简单的网站。

2.1 监听端口

第一个要修改的是 Listen 配置项,它定义了 Apache 要监听页面请求的 IP 地址和端口。 现在,你只需要使这个网站可以从本地访问,所以使用 localhost 地址。 完成后,该行应该看起来像这样:

Listen 127.0.0.1:80

通过将此配置项设置为 localhost 的 IP 地址,Apache 将只侦听来自本地主机的连接。 如果您希望 Web 服务器侦听来自远程主机的连接,则可以使用主机的外部 IP 地址。

2.2 网站页面HTML文件位置

DocumentRoot 配置项指定组成网站页面的 HTML 文件的位置。 该配置项不需要更改,因为它已经指向标准位置。 该行应该看起来像这样:

DocumentRoot"/var/www/html"

Apache 安装包会创建 /var/www 目录。 如果您想更改存储网站文件的位置,则使用此配置项来完成此操作。 例如,您可能想要为 www 目录使用不同的名称,以更明确地识别网站。 这可以是这样的:

DocumentRoot"/var/mywebsite/html"

这些是创建一个简单网站需要唯一修改的 Apache 配置项。

2.3 防火墙端口设置:打开端口 80

(1)查询TCP/UDP的80端口占用情况:

sudo firewall-cmd --query-port=80/tcpsudo firewall-cmd --query-port=80/udp

如果返回结果为“no”,则表示该端口尚未开放,需要作以下设置才可以;否则,跳过步骤2.3。

(2)永久开放TCP/UDP的80端口

sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=80/udp

(3)重启防火墙

sudo firewall-cmd --reload

3.创建index.html文件

index.html 文件是你使用域名访问网站而不是访问特定网页时的默认文件。在 /var/www/html 中,创建一个名字为 index.html 的文件,在其中添加字符串 Hello World 。你不需要添加任何的 HTML 标志去完成这项工作。web 服务器的唯一任务是提供文本数据流,服务器不知道数据是什么,也不知道如何呈现它。它只是将数据流传输给请求主机。

保存文件后,将所有权设置为 apache.apache 。

chown apache.apache index.html

4. 启动 Apache

$ sudo systemctl start httpd$ systemctl status httpd
● httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)Active: active (running) since 一 2018-04-16 11:01:59 CST; 5h 50min agoDocs: man:httpd(8)man:apachectl(8)Process: 41464 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)Main PID: 41473 (httpd)Status: "Total requests: 6; Current requests/sec: 0; Current traffic:   0 B/sec"CGroup: /system.slice/httpd.service├─41473 /usr/sbin/httpd -DFOREGROUND├─41474 /usr/sbin/httpd -DFOREGROUND├─41475 /usr/sbin/httpd -DFOREGROUND├─41476 /usr/sbin/httpd -DFOREGROUND├─41477 /usr/sbin/httpd -DFOREGROUND├─41478 /usr/sbin/httpd -DFOREGROUND└─43670 /usr/sbin/httpd -DFOREGROUND4月 16 11:01:58 Sun systemd[1]: Starting The Apache HTTP Server...
4月 16 11:01:59 Sun httpd[41473]: AH00557: httpd: apr_sockaddr_info_get() failed for Sun
4月 16 11:01:59 Sun httpd[41473]: AH00558: httpd: Could not reliably determine the s...age
4月 16 11:01:59 Sun systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

5. 访问web服务器

在Chrome或firefox浏览器中,输入本机的url地址: http://localhost ,即可访问到本机。

试试看,屏幕上显示的内容是不是和文件 /var/www/html/index.html 中的内容一致呢?

6. 开启目录结构

具体操作参考这篇博客《centos7 下httpd服务器开启目录》。

6.1 修改配置文件 welcome.conf

将配置文件 /etc/httpd/conf.d/welcome.conf 的-号改为+号:

原文:    Options -Indexes

修改后: Options +Indexes

备注:Indexes 其实就是Apache中的索引服务,想了解它的信息可以参考这篇博客:《基于Apache服务器的文件列表,即文件的http下载模式》。

6.2 重启http服务

在终端执行命令  systemctl restart httpd ,重启服务就可以看到目录服务器下的目录了

6.3 了解配置文件welcome.conf

如果6.2一步之后得到了形如这样的目录结构,则可以跳过这一小节。

否则,还是花一分钟来了解下这个配置文件吧!

这里是它的全文:

[User@Host ~]$ cat  /etc/httpd/conf.d/welcome.conf 
# 
# This configuration file enables the default "Welcome" page if there
# is no default index page present for the root URL.  To disable the
# Welcome page, comment out all the lines below. 
#
# NOTE: if this file is removed, it will be restored on upgrades.
#
<LocationMatch "^/+$">Options +IndexesErrorDocument 403 /.noindex.html
</LocationMatch><Directory /usr/share/httpd/noindex>AllowOverride NoneRequire all granted
</Directory>Alias /.noindex.html /usr/share/httpd/noindex/index.html
Alias /noindex/css/bootstrap.min.css /usr/share/httpd/noindex/css/bootstrap.min.css
Alias /noindex/css/open-sans.css /usr/share/httpd/noindex/css/open-sans.css
Alias /images/apache_pb.gif /usr/share/httpd/noindex/images/apache_pb.gif
Alias /images/poweredby.png /usr/share/httpd/noindex/images/poweredby.png

解释一下,"default index page“ 指的是位于http文件服务器下载目录的文档 index.html。

在本例中,这个文件的全称是 /var/www/html/index.html

在这里,为了使welcome.conf文档中的目录结构设置生效,我们必须删除index.html!

删除index.html之后,再浏览器中打开本机的网址 http://localhost ,看看结果是不是变成目录结构了呢?

6.4  更改http服务器的默认目录

在配置文件 /etc/httpd/conf/httpd.conf 中一共有三个地方需要修改,这里以目标目录  /pub/meetings/test  为例。

(1)修改参数 “DocumentRoot”:

关于这个参数的一部分原文长这样:

[User@Host ~]$ cat /etc/httpd/conf/httpd.conf | grep "DocumentRoot"
# DocumentRoot: The directory out of which you will serve your
DocumentRoot "/var/www/html"# access content that does not live under the DocumentRoot.

可以看到,它默认的目录位于  /var/www/html

接下来,我们注释掉原文,把它改成我们需要的  /pub/meetings/test   目录。

[User@Host ~]$ sudo vi /etc/httpd/conf/httpd.conf
...
# DocumentRoot: The directory out of which you will serve your
# DocumentRoot "/var/www/html" DocumentRoot "/pub/meetings/test" # access content that does not live under the DocumentRoot. ...

(2)修改目录参数

[User@Host ~]$ sudo vi /etc/httpd/conf/httpd.conf
... # # Relax access to content within
/var/www. # #<Directory "/var/www"> <Directory "/pub/meetings">AllowOverride None# Allow open access:Require all granted </Directory> ...

(3)再次修改目录参数

[User@Host ~]$ sudo vi /etc/httpd/conf/httpd.conf
... # Further relax access to the default document root:
#<Directory "/var/www/html">
<Directory "/pub/meetings/test">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
...
 

(4)同样地,再次重启http服务,确保我们的更改立即生效:

sudo systemctl restart httpd

经过这样一番设置,在浏览器(http://localhost)看到的,应该就是  /pub/meetings/test  的目录结构了。

(5)如果第(4)步不能正常访问到目标目录,那么,通常是由于Apache用户关于该文件夹的权限太低(apache的用户:apache 运行apache的组:apache,默认权限为750)[有关内容可以从这里了解]。

我们需要给它赋予作以下设置

# 755或者777均可 (二选一:最好是777,因为它具有写权限)
# 755: rwxr-xr-x
sudo chmod -R 755 /pub/meetings/

# 777: rwxrwxrwx
sudo
chmod -R 777 /pub/meetings/

再重启http服务,就可以搞定了。

(6)其它一些细节设置

默认的设置有一些地方需要修改:不支持中文、显示优化等等。

具体执行的操作是将默认的设置参数按照如下方式修改,增加4个参数:

 sudo vi /etc/httpd/conf.d/autoindex.conf 
...
#IndexOptions FancyIndexing HTMLTable VersionSortIndexOptions FancyIndexing HTMLTable VersionSort FoldersFirst Charset=UTF-8 NameWidth=* XHTML...

其中,FoldersFirst 保证显示结果中的文件夹名称居于前面,UTF-8字符集有效地解决了中文显示的问题,“NameWidth=*”的作用不详。

关于更详细的配置过程,可以参考这篇博客《基于Apache服务器的文件列表,即文件的http下载模式》。

(7) 加载 NTFS 格式的分区时遇到的问题

按以上方法对 NTFS 格式的分区所在的目录进行设置,并不能浏览每一个分区内的内容,只能看到分区的根目录下的内容。

根据系统报告可以进行修复:

[User@Host ~]$ journalctl -xe
...
4月 18 16:33:23 localhost.localdomain dbus[733]: [system] Successfully activated service 'org.fedoraproject.Setroubleshootd'
4月 18 16:33:24 localhost.localdomain setroubleshoot[32222]: failed to retrieve rpm info for /mnt/Disk2T/L
4月 18 16:33:24 localhost.localdomain setroubleshoot[32222]: SELinux is preventing /usr/sbin/httpd from read access on the directory
/mnt/Disk2T/
L. For complete SELinux messages. run se 4月 18 16:33:24 localhost.localdomain python[32222]: SELinux is preventing /usr/sbin/httpd from read access on the directory /mnt/Disk2T/L.***** Plugin catchall_boolean (89.3 confidence) suggests ******************If you want to allow httpd to use fusefsThen you must tell SELinux about this by enabling the 'httpd_use_fusefs' boolean.You can read 'None' man page for more details.Dosetsebool -P httpd_use_fusefs 1***** Plugin catchall (11.6 confidence) suggests **************************If you believe that httpd should be allowed read access on the L directory by default.Then you should report this as a bug.You can generate a local policy module to allow this access.Doallow this access for now by executing:# ausearch -c 'httpd' --raw | audit2allow -M my-httpd# semodule -i my-httpd.pp4月 18 16:33:32 localhost.localdomain fprintd[32183]: No devices in use, exit [User@Host ~]$ sudo setsebool -P httpd_use_fusefs 1 [User@Host ~]$ sudo systemctl restart httpd

7. 创建局域网内的机器互访

这部分的内容不属于Web服务器搭建的范畴,有关的内容可以参考路由器DMZ端口映射的配置。

主要原理就是,将提供Web服务的主机的80端口映射出去,使上一级局域网中的用户也能访问到它。

设置完成之后,在浏览器中采用主机加端口的方式来访问,比如:

首页:http://172.28.21.201:11080/index.html

或者,目录结构: http://172.28.21.201:11080/

8. 重启后无法访问http服务器

首先查询http服务的状态: sudo systemctl status httpd

如果http服务的状态正常,显示它“active”,则问题不出在httpd服务上。

最有可能出问题的是SELINUX的设置,因为重启之后,之前的设置都不生效了。

关闭Centos 7 的方法很简单:

(0)查询SELINUX的状态

getenforce

(1)临时关闭SELINUX

#设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0

(2)永久关闭SELINUX

vi /etc/selinux/config

SELINUX=enforcing 改为 SELINUX=disabled ,设置后需要重启才能生效。

全文完。


转载于:https://www.cnblogs.com/snake553/p/8856729.html

相关文章:

一文看懂深度学习发展史和常见26个模型

参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑来源 | AI部落联盟&#xff08;ID&#xff1a;AI_Tribe&#xff09;作者简介&#xff1a;沧笙踏歌&#xff0c;硕士毕业于北京大学&#xff0c;目前计算机科学与技术博士在读&#xff0c;主要研究自然语言处理和对话系统…

JBL无所不能与IPhone4、IPad2的完美盛宴

期待以久JBL白版终于到货了&#xff0c;由于水货的供电参数是110V~200V&#xff0c;行货是110~220V&#xff0c;所以本人选择了行货&#xff0c;因为水货的供电和国内的输入电压不符&#xff0c;时间用久了会影响小J寿命。经过测试后本人发现&#xff0c;用JBL无所不能连接IPho…

【Go】Go基础(二):学习网址汇总

Go语言中文网站 https://studygolang.com/ Go语言标准库文档 https://studygolang.com/pkgdoc 《The Way to Go》中文名《Go 入门指南》 https://github.com/Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md…

堆和栈的主要区别由以下几点:

1、管理方式不同&#xff1b;2、空间大小不同&#xff1b;3、能否产生碎片不同&#xff1b;4、生长方向不同&#xff1b;5、分配方式不同&#xff1b;6、分配效率不同&#xff1b;管理方式&#xff1a;对于栈来讲&#xff0c;是由编译器自动管理&#xff0c;无需我们手工控制&a…

参与2011年7月13日举行的Azure国际猜拳锦标赛,赢取5,000美元大奖

你想要编写自己的“bot”角色并测试你的技能&#xff0c;在线同来自美国&#xff0c;加拿大&#xff0c;中国&#xff0c;德国&#xff0c;新西兰&#xff0c;瑞典和英国的Windows Azure开发者一教高下&#xff0c;并赢取5,000美元大奖吗&#xff1f;请先注册Azure国际猜拳锦标…

【Go】Go基础(三):基本结构和基本数据类型

1、Go程序源码结构 我们将一个Go程序的源码暂时称为一个项目 &#xff1a; 每个项目由若干个包组成&#xff1b; 每个包由同一个目录中的若干个go文件组成&#xff1b; 每个go文件中由若干函数、变量、常量等组成&#xff1b; 每个函数由流程控制语句、变量、常量、运算符和函…

2019如何学Python?这里有你需要的答案

点击上方↑↑↑蓝字关注我们~参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑编辑 | Jane出品 | Python大本营&#xff08;公众号id&#xff1a;pythonnews&#xff09;根据 2018 年 Python 开发者大调查&#xff0c;Python 3 的渗透率已经快速增长至 84%&#xff0c;越…

Cisco HSRP热备份路由器协议配置

HSRP热备份路由器协议&#xff1a; HSRP是 Hot Standby Routing Protocol&#xff08;热备份路由协议&#xff09;的缩写&#xff0c;它的作用是当核心路由器不能正常工作时&#xff0c; 备用路由器能够实现自动平滑的替换&#xff0c;以保证网络正常使用。该协议中含有多台路由…

FTP与TFTP的区别

文件传输协议(FTP)实际上就是传输文件的协议,它可以应用在任意两台主机之间&#xff0c;但是FTP不仅仅是一个协议,它同时也是一个程序。作为协议,FTP是被应用程序所使用的;而作为程序,用户需要通过手动方式来使用FTP并完成文件的传送。FTP允许执行对目录和文件的访问,并且可以完…

写给NLP研究者的编程指南

点击上方↑↑↑蓝字关注我们~参加 2019 Python开发者日&#xff0c;请扫码咨询 ↑↑↑作者 | 赤乐君&#xff0c;日本某大手研发部门的NLP工程师。关注关系抽取与知识图谱的相关研究。来源 | 赤乐君的知乎专栏最近AllenNLP在EMNLP2018上做了一个主题分享&#xff0c;名为“写给…

【数据库】sqlite3常用命令及SQL语句

【数据库】sqlite3数据库备份、导出方法汇总 一、准备工作 0、安装SQLite3 1&#xff09;ubuntu命令安装&#xff08;不是最新版本&#xff09; sudo apt install sqlite32&#xff09;源码安装&#xff08;可以安装最新版本&#xff09; 下载&#xff1a; https://www.sq…

资本主义社会是不存在人道的

对叙利亚人民感到无助而写点文章&#xff0c;虽然没有什么大的作用&#xff0c;也谈谈自己对于战争与和平的理解&#xff0c;战争与和平就相当于爱与恨一样&#xff0c;爱的热切&#xff0c;恨之入骨&#xff0c;虽然形容不当&#xff0c;人性的双面总是要拿来剖析一二的。 人类…

再谈javascript图片预加载经典技术

图片预加载技术的典型应用&#xff1a; 如lightbox方式展现照片&#xff0c;无疑需要提前获得大图的尺寸&#xff0c;这样才能居中定位&#xff0c;由于javascript无法获取img文件头数据&#xff0c;必须等待其加载完毕后才能获取真实的大小然后展示出来&#xff0c;所以lightb…

【Go】Go基础(四):流程控制(控制结构)

1、if-else结构 格式&#xff1a; if condition1 {// do something } else if condition2 {// do something else } else {// default }和C的不同&#xff0c;条件语句没有大括号&#xff1b; 新增的语法&#xff1a; if initialization; condition {// do something }例…

让世界零距离 小鱼易连的大梦想

“他是高材生&#xff0c;也是技术大拿。十年北美&#xff0c;十年中国&#xff0c;他在高科技领域善于创新、精于管理&#xff0c;五项中美专利加身。他在北电网络领导团队不断创新&#xff0c;成就亚太顶尖;他曾任宝利通全球高管&#xff0c;带领团队从初创一路起飞&#xff…

程序员再也不能埋头敲代码了

上周&#xff0c;阿里巴巴重磅发布了机器学习平台 PAI 3.0 版本&#xff0c;据悉&#xff0c;这个 PAL 平台封装了 200 多种经典算法&#xff0c;可以轻松搭建机器学习实验。作为码农一枚&#xff0c;使我不得不抬起原本一直低着敲代码的头&#xff0c;看看这个为 AI 狂欢的世界…

函数的重载 - C++快速入门06

函数的重载 让编程改变世界 Change the world by program 函数的重载 C 里的函数重载&#xff08;overloading&#xff09;机制比我们此前见到的东西都高深&#xff0c;这种语言的灵活性和强大功能在它身上体现得淋漓尽致。 所谓函数重载的实质就是用同样的名字再定义一个有…

【Go】Go基础(五):函数

1、简述 Go 里面有三种类型的函数&#xff1a; * 普通的带有名字的函数 * 匿名函数或者lambda函数 * 方法&#xff08;Methods&#xff09;两个特殊函数&#xff1a;main()和init()&#xff0c;它们没有参数和返回值&#xff1b; Go语言里面没有函数重载&#xff1b; 2、函数…

搬箱轮滑再炫技!一个被波士顿动力耽误的机器人

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后3天&#xff0c;请扫码咨询 ↑↑↑整理 | 琥珀出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;据 TheVerge 等多家外媒报道&#xff0c;波士顿动力公司 (Boston Dynamics) 又推出了一款新的机器人&…

我是如何在天猫、蚂蚁金服、百度等大厂面试中被拒的 | 掘金技术征文

本人16年毕业于普通二本院校网络相关专业&#xff0c;工作经验两年半&#xff0c;目前就职业于一家普通民营企业。 由于非985、211学历硬伤&#xff0c;校招进大厂的门槛远高于同届985、211的毕业生。于是乎&#xff0c;从毕业到现在经历了三家创业公司&#xff0c;创业公司的痛…

solaris上的pkg管理

原文写于2010-05-18 19:43:40 网易博客,已删. 在solaris上安装程序,很多时候多离不开package管理.上的编译好的软件都是已package的形式压缩好然后提供给大家下载的. 关键是3个命令:pkgadd/pkginfo/pkgrm pkgadd -d pkgname用来添加安装包 pkginfo 用来打印系统…

【Go】Go基础(六):数组、切片slice、映射map

1、数组 1.1 数组定义 数组&#xff1a;数组是具有相同 唯一类型 的一组已编号且长度固定的数据项序列。 数组长度必须是一个常量表达式&#xff0c;并且必须是一个非负整数。数组长度也是数组类型的一部分&#xff0c;所以[5]int和[10]int是属于不同类型的。数组长度最大为 …

语义表征的无监督对比学习:一个新理论框架

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后3天&#xff0c;请扫码咨询 ↑↑↑译者 | Linstancy责编 | 琥珀出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;诸如图像、文本、视频等复杂数据类型的语义表征 (也称为语义嵌入) 已成为机器学习的核心…

YEX黄建:脱离比特币谈区块链,要么真傻,要么装疯卖傻丨区块链十人谈

如果说2017年是属于虚拟货币的一年&#xff0c;那么2018年的区块链将是生态和应用的一年&#xff0c;随之而来的也将是新的玩法、新的赚钱姿势。为此&#xff0c;雷锋网推出“区块链十人谈”&#xff08;十人者&#xff0c;取是知众人博所长之意&#xff0c;非实指&#xff09;…

70佳精美的PSD素材免费下载(上篇)

设计师经常会去网上搜罗各种各样的素材&#xff0c;这些免费素材不仅能帮助他们节省大量的时间&#xff0c;而且能有很好的效果。今天&#xff0c;本文与大家分享70佳精美的PSD素材&#xff0c;非常感谢那些很有才华的设计师分享它们的劳动成果&#xff0c;让更多的人可以使用他…

漫画讲述人工智能简史

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后3天&#xff0c;请扫码咨询 ↑↑↑作者 | 武博士、宋知达、袁雪瑶、聂文韬来源 | 大鱼AI&#xff08;id:DayuAI-Founder&#xff09;本文我们会以生动有趣的漫画来介绍关于人工智能&#xff08;AI&#xff09;相…

【Go】Go基础(七):包

一、标准库概述 1、官方手册 内置包在 Go 语言中有 150 个以上&#xff0c;它们被称为标准库&#xff0c;完整列表可以在Go Walker中查看 https://gowalker.org/search?qgorepos 2、常用包简介 unsafe: 包含了一些打破 Go 语言“类型安全”的命令&#xff0c;一般的程序中不会…

Mysql是时候学习一个存储过程了

create procedure 存储过程名() DECLARE uid INT; #注意声明的变量名不能跟表的字段名一致&#xff0c;否则会报错。如user的主键是id&#xff0c;那么这里声明用来存id值的变量名就不能为id&#xff0c;可以改为uid等 DECLARE done INT DEFAULT 0; #repeat结束标识 DECLARE us…

ASP.NET的Cookie跨域问题

将Cookie的有效范围限制到域。 默认情况下&#xff0c;Cookie 与特定的域相关联。例如&#xff0c;如果您的站点是 www.contoso.com&#xff0c;那么当用户向该站点请求页面时&#xff0c;您编写的Cookie就被发送到服务器。&#xff08;有特定路径值的Cookie除外&#xff09;…

详解物联网的中间件:为何说它是不可或缺的?

互联网的大规模普及&#xff0c;拉近了人与人之间的交流&#xff0c;而不同国家人与人之间的交往也变得密切起来。由于彼此使用的语言不通&#xff0c;为了能够互相交流&#xff0c;我们需要将不同种的交流语言转换成对方可识别的信息&#xff0c;这就是翻译存在的理由了。同样…