目录
一.Web服务的概述
二.安装,启动和停止Apache服务
1.安装Apache相关软件
2.让防火墙放行或者关闭防火墙,并设置SElinux为允许
3.测试httpd服务是否安装成功
三.认识Apache服务器的配置文件
四.常规设置Apache服务器的示例
1.如果我想把保存网站的根目录修改为/home/www,并将首页文件修改为myweb.html,怎么操作呢?
2.用户个人主页示例
3.配置虚拟主机
4,基于TLS加密的虚拟主机(用https访问网站)
5.创建一个PHP的动态页面
五.其他的常规设置
一.Web服务的概述
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。、
Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
Web服务通常可以分为两种:静态Web(HTML+CSS)和动态Web服务。(PHP)
二.安装,启动和停止Apache服务
1.安装Apache相关软件
这里显示没有仓库可用,说明我这台虚拟机还没有配置yum仓库
这里就浅浅配置一下
(要是还不会配置yum仓库,可以看这篇文章)liunx操作系统中yum仓库的配置_m0_60981735的博客
安装httpd服务
[root@localhost~]#rpm -q httpd //查看系统中是否安装了httpd
[root@localhost~]#mount /dev/sr0 /mnt //挂载磁盘
[root@localhost~]#cd /etc/yum.repos.d/
[root@localhost~]#ls
[root@localhost~]#vim redhat.repo //配置yum仓库
[root@localhost~]#yum clean all //清除缓存
[root@localhost~]#yum repolist //刷新仓库
[root@localhost~]#yum -y install httpd //安装httpd
[root@localhost~]#rpm -qa httpd //检查组件是否安装成功
2.让防火墙放行或者关闭防火墙,并设置SElinux为允许
[root@localhost~]#firewall-cmd --list-all <查看防火墙放行的服务>
[root@localhost~]#firewall-cmd --permanent --add-service=http <添加服务http放行>
[root@localhost~]#firewall-cmd --reload <重新加载防火墙策略>
[root@localhost~]#firewall-cmd --list-all <查看防火墙放行的服务>
以上是让防火墙放行http,还可以直接关闭防火墙<在实际服务器上不推荐>
[root@localhost ~]# systemctl stop firewalld.service
编辑selinux配置文件,设置selinux为允许
[root@localhost ~]# vim /etc/selinux/config
把enforcing改为disabled
3.测试httpd服务是否安装成功
[root@localhost ~]# systemctl restart httpd.service //开启apache服务
[root@localhost ~]# systemctl enable httpd.service //设置apache服务为自启动
[root@localhost ~]# firefox http://192.168.80.128 //用火狐浏览器访问192.168.80.128
三.认识Apache服务器的配置文件
在Linux系统中配置服务,其实就是修改服务的配置文件。httpd服务程序的主要配置文件及存放位置如图表
linux系统中的配置文件及存放位置
配置文件的名称 存放位置 服务目录 /etc/httpd 主配置文件 /etc/httpd/conf/httpd.conf 网络数据目录 /var/www/html 访问日志 /var/log/httpd/access_log 错误日志 /var/log/httpd/error_log
#注意:/etc/httpd/conf/httpd.conf为主配置文件
/etc/httpd/conf.d为子配置文件在httpd服务程序的主配置文件中,存在3种类型的的信息:注释行信息,全局配置,区域配置。、在httpd服务程序主配置文件中,最常用的有:
配置httpd服务程序时最常用的参数及其用途描述
参数 用途 ServerRoot 服务目录 ServerAdmin 管理员邮箱 User 运行服务的用户 Group 运行服务的用户组 ServerName 网站服务器的域名 DocumentRoot 文档根目录(网站数据目录)(默认是/var/www) Directory 网络数据目录的权限 Listen 监听的IP地址与端口号(默认是80) DirectoryIndex 默认的索引页页面(默认是index.html) ErrorLog 错误日志文件 CustomLog 访问日志文件 Timeout
网页超时时间,默认为300秒
我们向/var/www/html目录中写入一个文件,替换掉httpd服务程序的默认页面
四.常规设置Apache服务器的示例
1.如果我想把保存网站的根目录修改为/home/www,并将首页文件修改为myweb.html,怎么操作呢?
[root@localhost ~]# mkdir /home/www
[root@localhost ~]# echo "The Web's DocumentRoot Test " > /home/www/myweb.html
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
把DocumentRoot "/var/www"改为 "/home/www"
把<Directory "/var/www">改为"<Directory "/home/www">"
把DirectoyIndex index.html 改为 DirectoryIndex myweb.html
更改配置文件之后,一定要重启httpd服务
2.用户个人主页示例
现在许多网站都允许用户拥有自己的主页空间,而用户可以很容易地管理自己的主页空间。Apache可以实现用户的个人主页。客户端在浏览器中浏览个人主页的URL地址格式为:
http://www.域名。com
在linux上:做临时解析
[root@localhost~]#vim /etc/hosts
添加一项
ip地址 www.域名.com
在火狐浏览器中输入
www.域名.com在windows上
c盘下的Windows目录下的system32目录下的derives
C:\Windows\System32\drivers\etc
的hosts文件上
打开,添加一项
ip地址 www.域名.com
保存退出
用火狐浏览器,输入完整主机名3.配置虚拟主机
3.1虚拟主机(虚拟主机的首页文件路径和主配置文件一致)
1.查询虚拟主机样例文件
[root@localhost~]#cd /etc/httpd/conf.d
[root@www conf.d]# rpm -ql httpd | grep vhost <vhost为虚拟主机>
/usr/lib64/httpd/modules/mod_vhost_alias.so
/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf2.复制样例文件到子目录
[root@www conf.d]# cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/3.编写子文件
[root@www conf.d]# vim /etc/httpd/conf.d/httpd-vhosts.conf
<VirtualHost *:80> //注意:端口号和文档根目录跟主配置文件保持一致
DocumentRoot "/home/www" <网页根目录,跟配置文件里面一样>
ServerName www.wx1.com <虚拟主机>
</VirtualHost>
4.做临时解析
linux:
[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.128 www.wx1.com
192.168.80.128 www.example1.com
在windows操作系统上c盘下的Windows目录下的system32目录下的derives
C:\Windows\System32\drivers\etc
的hosts文件上
打开,添加一项
ip地址 www.htmlname.com
保存退出
用火狐浏览器,输入完整主机名
5.重启httpd
[root@localhost ~]# systemctl restart httpd3.2虚拟主机(虚拟主机的首页文件路径和主配置文件不一致)1.创建新路径
[root@localhost~]#mkdir /home/www/virtual
2.编写子文件
[root@www conf.d]# vim /etc/httpd/conf.d/httpd-vhosts.conf
<VirtualHost *:80> //注意:端口号和文档根目录跟主配置文件保持一致
DocumentRoot "/home/www" <网页根目录,跟配置文件里面一样>
ServerName www.wx1.com <虚拟主机>
</VirtualHost>
<VirtualHost *:80> //注意:端口号和文档根目录跟主配置文件保持一致
DocumentRoot "/home/www/virtual" <网页根目录,跟配置文件里面一样>
ServerName www.wx2.com <虚拟主机>
</VirtualHost>
3,做临时解析
linux:
[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.128 www.example2.com
192.168.80.128 www.wx1.com
192.168.80.128 www.example1.com
在windows操作系统上
c盘下的Windows目录下的system32目录下的derives
C:\Windows\System32\drivers\etc
的hosts文件上
打开,添加一项
ip地址 www.htmlname.com
保存退出
用火狐浏览器,输入完整主机名
4.启动httpd服务
[root@localhost ~]# systemctl restart httpd
4,基于TLS加密的虚拟主机(用https访问网站)
1查找有关TLS的ssl软件并安装
[root@www ~]# yum search sslmod_ssl.x86_64 : SSL/TLS module for the Apache HTTP Server <需要安装这个安装包>
[root@www ~]# yum -y install mod_ssl.x86_64
[root@www ~]# cd /etc/httpd/
[root@www httpd]# ls
conf conf.d conf.modules.d logs modules run state
[root@www httpd]# cd conf.d/
[root@www conf.d]# ls
autoindex.conf httpd-vhosts.conf README ssl.conf userdir.conf welcome.conf
2.编写ssl的配置文件
[root@www conf.d]# vim ssl.conf
<VirtualHost *:443>
# General setup for the virtual host, inherited from global configuration
DocumentRoot "/home/www" <网页根目录>
ServerName www.example1.com <主机名>
3.启动httpd服务
[root@localhost ~]# systemctl restart httpd
4.验证
[root@localhost ~]# firefox & <后台运行火狐浏览器>
输入:httpd://www.example1.com
点击高级(Advanced),选择添加安全例外(Add Exception。。),点击确保安全例外(Confirm Security Exception)
5.创建一个PHP的动态页面
1查找有关PHP的软件包并安装
[root@www ~]# yum search php
php.x86_64 : PHP scripting language for creating dynamic web sites[root@www ~]# yum -y install php
2.编写一个PHP动态页面
[root@www ~]#vim /home/www/index.php
<?php
phpinfo();
?>3.编写/etc/httpd/conf/httpd.conf为主配置文件
把DirectoryIndex myweb.html 更改为 DirectoryIndex index.php
4.启动httpd服务
[root@localhost ~]# systemctl restart httpd
5.验证
五.其他的常规设置
1.根目录设置(ServerRoot)
配置文件中的ServerRoot字段用来设置Apache的配置文件,错误文件和日志文件的存放目录。该目录是整个目录树的根节点,如果下面这个的字段设置中出现相对路径,那么就是相对这个路径的。默认是/etc/httpd
2.超时设置(Timeout)
Timeout字段用于设置接收和发送数据时的超时设置。默认时间单位是秒。如果超时,客户端仍无法连接上服务器,则予以断线处理。
3.客户端连接数限制
客户端连接数限制就是指在某一段时刻内,WWW服务器允许多少客户端同时进行访问。
在配置文件中,MaxClients字段用于设置同一时刻内最大的客户端访问数量。
4.设置管理员邮件地址(ServerAdmin)
当客户端访问服务器发生错误时,服务器通常会把带有错误提示信息的网页反馈给客户端,并且上面包含管理员的E-mail地址。
5.设置主机名(ServerName)
6.目录设置
目录设置就是为服务器上的某个目录设置权限。通常在访问某个网站的时候,真正所访问的仅仅是那台Web服务器里某个目录下的某个网页文件而已。而整个网站也是由这些零零总总的目录和文件组成。作为网站的管理人员,可能经常需要只对某个目录做出设置,而不是对整个网站做设置。例如,拒绝192. 168.0.100的客户端访问某个目录内的文件。这时,可以使用<Drectory> </Directory>容器来设置。这是一对容器语句, 需要成对出现。在每个容器中有0ptions、AllowOveride 、Limit 等指令,它们都是和访问控制相关的。
Apache目录访问控制选项
访问控制选项 描述 Options 设置特定目录中的服务器特性 AllowOveride 设置如何使用访问控制文件.htaccess Order 设置Apache缺省的访问权限及Allow和Deny语句的处理顺序 Allow 设置允许访问Apache服务器的主机,可以是主机可以是IP地址 Deny 设置拒绝访问Apache服务器的主机,可以是主机可以是IP地址
(1)根目录默认设置。
<Directory/>
Options FollowSymLinks
AllowOverride None
< / Directory>
以上代码中带有序号的两行说明如下。
①Options字段用来定义目录使用哪些特性,后面的FollowSymLinks指令表示可以在该目录中使用符号链接。Options 还可以设置很多功能,常见功能请参考表所示。
②AllowOverride用于设置htaccess文件中的指令类型。None表示禁止使用.htaccessOptions选项的取值
可用选项取值 描述 Indexes 允许目录浏览。当访问的目录中没有DirectoryIndex参数的网页文件时,会列出目录的目录清单 Multiviews 允许内容协商的多重视图 All 支持除Multiviews以外的所有选项,如果没有Options 语句,默认为All ExecCGI 允许在该目录下执行CGI脚本 FollowSysmLinks 可以在该目录中使用符号链接,以访问其他目录 Includes 允许服务器端使用SSI ( Server Side Include,服务器端包含)技术 IncludesNoExec 允许服务器端使用SSI(服务器包含)技术,但禁止执行CGI脚本 SymLinksIfOwnerMatch 目录文件与目录属于同一用户时支持符号链接
2)文档目录默认设置。
<Directory" /var/ www/html">
Options Indexes FollowSymLinks
AllowOverride None ①
Order allow, deny ②
Allow from all ③
</ Directory>
以上代码中带有序号的两行说明如下。
①AllowOverride所使用的指令组此处不使用认证。②设置默认的访问权限与Allow和Deny字段的处理顺序
③Allow字段用来设置那些客户不可以访问
Deny字段用来设置那些客户端不能访问
下面举例来说明Allow和Deny字段的用法:
Ⅰ.允许所有的客户端访问(先允许后拒绝)
Ⅱ.拒绝IP地址为192.168.80.1和来自.bad.com的客户端访问。其他用户可以正常访问
Ⅲ仅允许192.168.0.0/24网段的客户端访问,但其中192.168.0.100不能访问
Ⅳ.除了www.test.com的主机,允许其他所有人访问Apache服务器
Ⅴ.只允许10.0.0.0/8网段的主机访问服务器
如果仅仅相对某个文件做权限设置,则可以使用<Files 文件名></ Files>容器语句,跟<Directory " 目录名">< /Directory>几乎一样