本实验使用Linux虚拟机
web网站服务的安装
实验名称:
web网站服务
二、 实验目的:
学会编译安装httpd服务器
熟悉httpd服务的部署过程及常见配置
三、实验环境:
设备名称 |
系统版本 |
IP地址 |
所需软件 |
Web服务器 |
Linux-7.3 |
eth0=192.168.10.101 |
Httpd-2.4.25.tar.gz |
客户端 |
Linux-7.3 |
eth0=192.168.10.102 |
|
四:实验思路:
安装httpd服务器
httpd服务器的基本配置
实验过程
二:安装httpd
1:安装
[root@localhost ~]# systemctl stop firewalld //暂停防火墙
[root@localhost ~]# systemctl disable firewalld //禁用防火墙
[root@localhost ~]# rpm -e httpd –nodeps //卸载系统自带的httpd
[root@localhost ~]# mkdir /media/cdrom //创建挂载点文件夹
[root@localhost ~]# mount /dev/cdrom /media/cdrom //挂载光盘
[root@localhost ~]# yum -y install gcc* apr-devel apr-util-devel pcre-devel //安装开发包
[root@localhost ~]# tar zxvf httpd-2.4.25.tar.gz //解压缩
[root@localhost ~]# cd httpd-2.4.25
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi //配置
注释:
--prefix:制定程序的安装目录
--enable-so:启用动态加载模块DSO的支持,使httpd具备进一步扩展功能的能力
--enable-rewrite:启用网页地址重写功能,用于网站优化
--enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页
--enable-cgi:启用cgi脚本程序支持,扩展网站的应用访问能力
DSO是Dynamic SharedObjects(动态共享目标)的缩写,它是现代Unix派生出来的操作系统都存在着的一种动态连接机制。它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存执行的方法。
[root@localhost httpd-2.4.25]# make //编译
[root@localhost httpd-2.4.25]# make install //编译安装
[root@localhost httpd-2.4.25]# ls /usr/local/httpd //查看安装后的文件
[root@localhost httpd-2.4.25]# /usr/local/httpd/bin/apachectl start //启动httpd
[root@localhost httpd-2.4.25]# netstat -anpt |grep httpd //查看监听的端口
[root@localhost httpd-2.4.25]# /usr/local/httpd/bin/apachectl stop //停止httpd
[root@localhost httpd-2.4.25]# netstat -anpt |grep httpd //查看监听的端口
2:优化执行路径
[root@localhost httpd-2.4.25]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ //做软连接,方便快速启动
[root@localhost httpd-2.4.25]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl //查看软连接
[root@localhost httpd-2.4.25]# httpd -v //查看httpd的版本
[root@localhost httpd-2.4.25]# apachectl start //启动httpd
[root@localhost httpd-2.4.25]# netstat -anpt |grep httpd //查看监听的端口
[root@localhost httpd-2.4.25]# apachectl stop //停止httpd
[root@localhost httpd-2.4.25]# netstat -anpt |grep httpd //查看监听的端口
3:添加httpd系统服务
(1)使用chkconfig添加为系统服务
[root@localhost httpd-2.4.25]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd //复制配置文件
[root@localhost httpd-2.4.25]# vi /etc/init.d/httpd //编辑配置文件
添加:
#!/bin/sh \\原来就有
#chkconfig:35 85 21 \\没有这一行,chkconfig --add httpd无法执行
#description:httpd server
[root@localhost httpd-2.4.25]# chkconfig --add httpd //加入系统服务,开机启动
[root@localhost httpd-2.4.25]# chkconfig --list httpd //查看启动
[root@localhost httpd-2.4.25]# service httpd start //启动httpd
(2)建立.service配置文件
[root@localhost ~]# vi /lib/systemd/system/httpd.service //编辑文档
[Unit] //单元
Description=the apache http server //描述信息
After=network.target //启动顺序
[Service] //服务
Type=forking //类型
PIDFile=/usr/local/httpd/logs/httpd.pid //进程文件
ExecStart=/usr/local/bin/apachectl $OPTIONS //启动命令
ExecReload=/bin/kill -HUP $MAINPID //重新加载命令
KillMode=process //杀死进程的模式:杀死主进程
Restart=on-failure //异常退出时重启
RestartSec=42s //重启等待时间
[Install] //安装
WantedBy=graphical.target //图形模式
[root@localhost ~]# systemctl start httpd.service //启动httpd
[root@localhost ~]# systemctl enable httpd.service //开机自启动
三:httpd服务器的基本配置
1:确定网站的名称、ip地址和域名
2:配置并启动httpd
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf
修改(前面的数字是行号):
ServerName www.bdqn.com ##第200行 //网站域名,做域名解析
[root@localhost ~]# apachectl -t //检测配置文件语法
2:启动httpd服务
[root@localhost ~]# systemctl start httpd //启动httpd
[root@localhost ~]# netstat -anpt | grep httpd //查看端口
3:部署网页
[root@localhost ~]# vi /usr/local/httpd/htdocs/index.html //编辑主页
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# service httpd restart //重启httpd服务
4:测试
打开网站
http://192.168.10.101
5:查看站点访问情况
[root@localhost ~]# tail /usr/local/httpd/logs/access_log //查看访问日志
[root@localhost ~]# tail /usr/local/httpd/logs/error_log //查看错误日志
四:httpd.conf配置文件
1:全局配置项
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf
ServerRoot "/usr/local/httpd"
Listen 80
User daemon
Group daemon
ServerAdmin you@example.com
ServerName www.bdqn.com
DocumentRoot "/usr/local/httpd/htdocs"
DirectoryIndex index.html
ErrorLog "logs/error_log"
LogLevel warn
CustomLog "logs/access_log" common
Include conf/extra/proxy-html.conf
2:区域配置项
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf
<Directory />
AllowOverride none
Require all denied
</Directory>
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
五:虚拟目录的设置(www.dbqn.com/xuni)
alias /xuni "/var/xuni"
<Directory "/var/xuni">
Options None
AllowOverride None
Require all granted
</Directory>
六:符号链接
web网站经过一段时间的运行,网站的内容会越来越多,这时文档根目录的空间会不足;另外希望在文件移动位置之后使得用户仍然能够访问该文件。这两种情况可以通过在文档目录下使用符号链接使文档目录之外的内容被访问。
(1)编辑配置文件
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
<Directory />
Options FollowSymlinks
AllowOverride none
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
(2)创建符号链接
[root@localhost ~]# ln -s /usr/share/man /var/www/html/man
(3)客户端访问
七:网页重定向
在apache服务器中,通过使用网页重定向可以使得用户在访问URL地址时,apache服务器将自动重定向到另外一个URL网址。
(1)编辑配置文件
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
<IfModule alias_module>
Redirect 302 /foo http://www.benet.com/xuni
。。。。。。略。。。。。。
</IfModule>
注释:
302为错误代码,当遇到指定的错误是重定向
301:被请求的url已经永久的移动到新的url
302:被请求的url临时移动到新的url
303:被访问的页面已经被替换
410:被访问的页面已经不存在,使用此代码时不应该使用重定向url参数
(2)重启服务
[root@localhost ~]# systemctl restart httpd
(3)客户端访问
当访问http://www.benet.com/foo时,会被重定向到http://www.benet.com/xuni
注释:
Options指令如下:
All 准许以下除MultiViews以外所有功能
MultiViews 允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用
Indexes 若该目录下无index文件,则准许显示该目录下的文件以供选择,禁止目录浏览可以删这项或“-Indexes”。
IncludesNOEXEC 准许SSI,但不可使用#exec和#include功能
Includes 准许SSI
FollowSymLinks 在该目录中,服务器将跟踪符号链接。注意,即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名,如果在<Local>标记内设置,该选项会被忽略
SymLinksIfOwnerMatch 在该目录中仅仅跟踪本站点内的链接
ExecCGI 在该目录下准许使用CGI
AllowOverride指令如下:
AuthConfig 允许使用所有的权限指令,他们包括 AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile 和 Require
FileInfo 允许使用文件控制类型的指令。它们包括 AddEncoding AddLanguage AddType DEfaultType ErrorDocument LanguagePriority
Indexes 允 许使用目录控制类型的指令。它们包 括 AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName
Limit 允许使用权限控制指令。它们包括Allow Deny和Order
Options 允许使用控制目录特征的指令.他们包括Options 和XBitHack