发布一个网站,内容为“hello word”……

        上网一查,网站发布几大软件IIS、apache、tomcat、Nginx等,这里面IIS是windows server发布网站使用,nginx笔者计划之后在负载均衡中再对其操作,比较一下,这次学习的软件就定为apache吧。

        笔者下载的centos 7默认是不带apache的,为了方便,继续从yum上安装apache httpd:yum install httpd

        启动网站服务:service httpd start

        发现报错,目前的centos 7居然不支持这个指令了。。笔者按照报错提示来输入:/bin/systemctl start httpd.service

        重启后,应该已经可以访问了,但是笔者发现通过个人电脑浏览器输入IP地址之后并没有弹出网页:(隐去的就是笔者的实际IP,如果按照学习过程,即是前两节的192.168.101.2)

        进行一次简单的故障排查,由于不涉及域名,只是端到端的IP访问,所以对于笔者页面访问而言,其实是一个三次握手的过程,在TCP\IP的模型中,怀疑有两个故障原因:1.IP地址无法访问;2.TCP传输中目的端口不通。

        网络传输的概念性东西默认在大学中都有学习,如果有遗忘的,建议回看一下计算机网络的相关基础课程,笔者的学习偏向工程,是实践水平的提高,但任何工程实践都是以扎实的理论基础为前提的,没有扎实的基础想造一栋大楼是不可能实现的。

        笔者打算分两次验证一下,对于第一个疑问,笔者在windows环境下来进行tracert测试。

        开始-搜索-cmd :  tracert –d192.168.101.2

        笔者的网络环境非常简单,可以看出直接到网关下一跳就到了服务器,网络层面没有问题,路由可达。

        第二步就测试一下端口问题,因为笔者默认使用http端口80,那么相同的界面:telnet 192.168.101.2 80

        发现端口不通,由于笔者所在网络没有在内网环境下对端口进行限制,那么问题很可能出在服务器的防火墙上。

        直接关了防火墙:systemctl stop firewalld.service

        再次访问IP地址,发现apache的测试页面已经可以正常访问了。

        当然,笔者不能直接关闭服务器的所有端口,对于网络安全而言,最好是有什么服务开放什么端口。这样笔者继续打开防火墙并调整服务器防火墙并开放80端口的入站规则。

        首先打开防火墙:systemctl start firewalld.service

        查看相关指令:firewall-cmd –help

        增加入站规则:firewall-cmd –zone=public –add-port=80/tcp

        测试一下,发现网页已经可以正常访问,笔者就不贴图了。

        但是这样操作重启设备时会使防火墙失效。笔者需要增加一条永久策略。

        关闭该端口:firewall-cmd –zone=public –remove-port=80/tcp

        添加永久端口:firewall-cmd –zone=public –add-port=80/tcp –permanent

        发现一件很神奇的事情,就算增加了永久策略端口就不通了。查了一下需要重启防火墙:firewall-cmd –reload

        到此为止测试页面已经可以正常访问了。

        关闭apache测试页面:cd /etc/httpd/conf.d/

        vi welcome.conf

        把中间的一段网页代码注释掉:

        重启apache服务:/bin/systemctl restart httpd.service

        这时候笔者看到页面显示了一个index of的页面。

        笔者来修改apache的基础配置:cd /etc/httpd/conf

        vi httpd.conf

        看到了一长串被#注释掉的说明。由于这次操作是最简单的页面显示,因此笔者打算尽量少的修改一版最直接的配置。

        配置说明不去详细介绍,详见:http://www.linuxidc.com/Linux/2015-02/113921.htm

        /ServerName 找到被注释掉的如下一句新增ServerName a.hbai.com:80这个笔者之后会用到。

        如下位置找到这句,新增DirectoryIndex index.php index.html index.html.var

        找到AddType application注释掉如下两句,新增两句:

        AddType application/x-httpd-php .php .phtml.php3 .inc

        AddType application/x-httpd-php-source.phps

        由于笔者看到浏览器会弹出一个Index of页面不是很舒服,因为笔者压根没有发布网站,希望现在其他人访问页面的时候不做显示。所以计划把这个index of页面给关掉:

        /FollowSymLinks  找到如下部分。将其注释掉,修改为Options FollowSymLinks。其实就是删除了这一句的“indexes”字段。

        配置好之后wq!保存退出,并重启httpd服务:/bin/systemctl restart httpd.service

        这时候再来刷新一下本地电脑的浏览器,访问服务器IP地址,显示403forbidden。

        那如何发布一个网站呢?笔者回到httpd.conf的配置中,找到几个关键的配置字段:

        这几个字段定义了笔者页面存放的位置,也就是默认位置“/var/www/html”,也定义了文件名index.html。为了以后方便,笔者顺手把php的扩展名也给加上去了,后续涉及动态网站制作了再来操作。

        准备工作做好,笔者要制作第一个web页面了。

        进入apache定义的文件路径:cd /var/www/html

        ls看一下,发现是空的文件夹。

        新建一个名为index.html的文件:vi index.html

        在该名为index.html的文件中加入如下代码:

        wq!保存退出。

        这时候笔者刷新一下浏览器,继续访问服务器IP地址:就看到了如下的页面显示了,这一节的目的顺利达成~

问题:

        1. Linux防火墙分两种策略类型,一种是临时策略,一种是永久策略。结合本节学习内容,就直接增加策略、重启防火墙、关闭防火墙、重启设备四方面比较两种策略如何生效。

        2. 结合前两节内容,由如下图路由测试说明笔者电脑与服务器之间的网络结构是怎样的,中间有几个三层的路由设备?

        3. 有些ssh终端在输入中文字符的时候会产生乱码,笔者使用的SecureCRT已经解决了中文乱码问题。尝试解决   中文乱码并指出在httpd.conf协议中是如何定义中文字符的?

特别建议,基础知识很重要!

        请各位看官务必熟悉多花点时间看过以下内容“firewall-cmd -help”、“http://www.linuxidc.com/Linux/2015-02/113921.htm”之后再来进行网站发布的操作。

转自:https://www.jianshu.com/u/0d31bfec82e7