Linux中 httpd服务
部分借鉴于白蓝的橙
httpd是Apache超文本传输协议(HTTP)服务器的主程序,运行该程序
即可启动web服务。
一般结合DNS使用
Linux下配置dns的三种方法
1. HOST 本地DNS解析 vi /etc/hosts eg:23.231.234.33 www.baidu.com
2. 网卡配置文件DNS服务地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 eg:DSN1='114.114.114.114'
3. 系统默认DNS配置 vi /etc/resolv.conf eg:nameserver 114.114.114.114
系统解析的优先级 1>2>3
命令参数
-h可查看命令选项
-M查看静态编译及动态装载的模块(动态模块加载:不需重启即生效)
-c<httpd指令> 在读取配置文件前,先执行选项中的指令。
-C<httpd指令> 在读取配置文件后,再执行选项中的指令。
-d<服务器根目录> 指定服务器的根目录。
-D<设定文件参数> 指定要传入配置文件的参数。
-f<设定文件> 指定配置文件。
-l 显示服务器编译时所包含的模块。
-L 显示httpd指令的说明。
-S 显示配置文件中的设定。
-t 测试配置文件的语法是否正确。
-v 显示版本信息。
-V 显示版本信息以及建立环境。
-X 以单一程序的方式来启动服务器
配置文件
httpd服务配置文件模块化,以便于管理
主配置文件/etc/httpd/conf/httpd.conf
调用配置文件 /etc/httpd/conf.d/*.conf
httpd默认先读取主配置文件,再读其他配置文件。
一般是尽量不在主配置文件上修改,有操作时新建其他配置文件,如控制访问的文件这类。
Apache默认文件路径在/var/www/html
修改主配置文件的DocumentRoot可以设置新的路径。
检测配置文件语法:
httpd -t
service httpd configtest
简单搭建web服务器
1,安装httpd(Apache)软件包(服务端软件)
[root@server~]#yum -y install httpd
2.重起httpd服务
[root@server~]#systemctl restart httpd
[root@server~]#systemctl enable httpd
3、写个页面
默认存放网页路径 /var/www/html
默认主页名称 index.html
4、重启服务并设置开启启动
systemclt restart httpd
systemclt enable httpd
5、验证
http://服务器ip或域名/
httpd配置虚拟主机
一台服务器一般只能配置一个站点,通过httpd的虚拟主机功能可实现在一台主机上配置多个站点。
httpd虚拟主机配置分别可以基于ip,基于端口,基于域名。
一旦使用虚拟web主机功能,所有的网站都必须用虚拟web主机实现。
1、基于ip
需要服务器一个站点对应一个ip,需要服务器有多个网卡或者启用网卡的别名。
2、基于端口
需要开启额外的端口(默认80开启)分配给站点,而用户在访问时则需要注明访问的端口才可以访问,由于额外开启的端口不是默认端口,用户要自己记住这些端口,故不建议使用这种方式。
3、基于域名
时则可以直接通过用户要访问的域名而链接到对应的站点,不需要额外的ip和端口,虽然在用户要访问一个站点时是dns先将用户输入的域名解析为ip(此时服务器只有一个ip,实际上所有站点都会解析为一个ip)然后在访问到服务器,再通过数据包中的端口找到httpd服务,但是由于在传输的数据包中包含有域名的数据,所以在通过ip+端口找到服务器和httpd服务后,httpd通过分析数据包中的域名信息即可知道用户要访问的是哪一个站点了。但是如果用户通过ip访问则会默认访问到第一个站点。
下面是三种虚拟主机的配置方式:
注意修改配置文件是在调用配置文件 /etc/httpd/conf.d/
下以*.conf结尾,不然无法生效。
1、基于端口
[root@centos7(nanyibo) ~]# vim /etc/httpd/conf.d/vhost.conf
Listen 8080 //开启额外的监听端口
Listen 9090
<VirtualHost *:8080> //虚拟主机的开始标签<VirtualHost ip:port> *表示任意
DocumentRoot "/app/website1" //网页文件存放的目录,同时也是URL路径的起始位置
<Directory "/app/website1"> //虚拟主机的文件目录标签
Require all granted //允许所有人访问
</Directory>
</VirtualHost> //虚拟主机的结束标签
<VirtualHost *:9090>
DocumentRoot "/app/website2"
<Directory "/app/website2">
Require all granted
</Directory>
</VirtualHost>
2、基于ip
[root@centos7(nanyibo) ~]# vim /etc/httpd/conf.d/vhost.conf
<VirtualHost 192.168.153.17:80>
DocumentRoot "/app/website1"
<Directory "/app/website1">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.153.27:80>
DocumentRoot "/app/website2"
<Directory "/app/website2">
Require all granted
</Directory>
</VirtualHost>
[root@centos7(nanyibo) ~]# ifconfig ens34:0 192.168.*.1/24 //通过别名对一个网卡配置多个ip
[root@centos7(nanyibo) ~]# ifconfig ens34:1 192.168.*.2/24
3、基于域名的虚拟主机
<VirtualHost *:80>
ServerName server1.com
DocumentRoot /var/www/webapp
Alias / /var/www/webapp/index.html #设置别名,当输入/ 访问后面的内容
<Directory "/var/www/webapp">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName server1-1.com
DocumentRoot /var/www/baidu
<Directory "/var/www/baidu">
Require all granted
</Directory>
</VirtualHost>
服务端要在/var/www/下创建相应的文件夹,同时客户端要能够解析这两个域名。
问题:原先的域名是www.server1.com 发现效果是/var/www/html/index.html的内容,域名去掉www正常显示。
经过分析是浏览器的缓存影响,原先缓存了www.server1.com的旧效果,更新httpd单纯的输入网址跳转没有改变。所以刷新界面很重要!
注意要结合域名解析
修改配置文件要重启httpd
修改站点内容实时同步