经过上面一章的内容,笔者已经对服务器网络设置相对熟悉了,可以实现服务器自由联网,但对于linux这个没有图形化的东西而言,联网又可以做什么呢?最直观的一件事情,就是制作网站。
对于笔者而言,接触的比较多的是硬件层面,对网站制作这种需要艺术天分的操作实在是无法胜任。但对于一些基础业务(如dns、负载均衡、反向代理等)都涉及网站发布,没有一个测试网页很难对之后的业务进行测试和故障排除,因此,笔者咬咬牙,来做第三章的学习:发布一个网站,内容为“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”之后再来进行网站发布的操作。对于希望做网页前端的朋友推荐一本html5的书籍是笔者的一位朋友写的,附送亚马逊链接:https://www.amazon.cn/dp/B01M61QWT7/ref=sr_1_1?ie=UTF8&qid=1515483353&sr=8-1&keywords=html5+%E5%88%98%E6%AC%A2