第6章 使用Apache搭建Web网站服务器

Apache服务器概述及安装

常见web服务器:

httpd、Nginx 适用php

Tomcat 适用jsp

IIS 适用asp

客户端:

ie,firefox,chrome,手机浏览器

LAMP=Linux Apache Mysql/MariaDB PHP

Apache HTTPD Server 简称Apache,是Apache软件基金会的一个开源网页服务器项目,其它开源项目包括Maven,Tomcat,Hadoop等,

LAMP工作原理

客户端浏览器向服务器发送http请求,服务器apache调用php模块解析php脚本并将解析结果response给浏览器,浏览器解析,渲染呈现网页。

使用Yum安装http服务器端
yum -y install httpd
ls /mnt/Packages/httpd-*

Apache主要配置文件
ls /etc/httpd/conf/httpd.conf

启动服务
systemctl start httpd
systemctl enable httpd

查看端口
netstat -lnput | grep 80

主要配置文件介绍

vim /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd"  #httpd服务的根目录 31行
Listen 80                         #监听端口,默认本地ip,如果指定ip写上ip:80,如果监听多个端口,则指定多个Listen xx  42行
Include conf.modules.d/*.conf  #当前目录下conf.modules.d 这个目录下所有conf文件都生效  56行
Options Indexes FollowSymLinks   #Options Indexes 目录浏览FollowSymLinks用连接浏览, 删掉Indexes,就表示不显示目录。
AllowOverride None               #设置为none,忽略.htaccess文件。
Include conf.d/*.conf              #conf.d里面的conf文件也属有效配置文件。 353行
User apache                         #以哪个身份运行        66行
Group apache                     #以哪个组的身份运行  67行
ServerAdmin [email protected]   #管理员邮箱
DocumentRoot "/var/www/html"  #默认的主目录,如果改动要改动两处Directory 119行
<Directory "/var/www/html">      131行
Options Indexes FollowSymLinks AllowOverride None
</Directory>
LogLevel warn  #日志等级  189行
AddDefaultCharset UTF-8  #支持的语言,默认编码  316行

yum 的方式搭建 LAMP 环境

yum -y install httpd mariadb mariadb-server php php-mysql

systemctl start mariadb
systemctl enable mariadb

测试apache是否支持php

 cd /var/www/html/
vim index.php
<?php
phpinfo();
?>
systemctl restart httpd
浏览器访问改服务器地址,查看php版本信息
 

配置WEB服务器,搭建LAMP环境

部门内部搭建一台WEB 服务器,采用的IP 地址和端口为 192.168.0.64:80,首页采用 index.html
文件。管理员E-mail 地址为 [email protected],网页的编码类型采用UTF-8,所有网站资源都存放
在/var/www/html 目录下,并将 Apache的配置文件根目录设置为/etc/httpd 目录。

改配置文件之前,先备份,以便恢复。
cp /etc/httpd/conf/httpd.conf{,.bak}
vim /etc/httpd/conf/httpd.conf
31 ServerRoot "/etc/httpd" #Apache 配置文件的根目录
32 Timeout 60 #添加此项,超时时间
42 Listen 80 #监听的端口

87 ServerAdmin [email protected] #设置管理员,e-mail 地址
96 ServerName 192.168.0.64:80 #服务器主机名
120 DocumentRoot "/var/www/html" #网站页面根目录
145 Options Indexes FollowSymLinks #当一个目录没有默认首页时,允许显示此目录列表
165 DirectoryIndex index.html index.php #指定默认首页

317 AddDefaultCharset UTF-8 #设置服务器的默认编码为: UTF-8
取消 Apache 默认欢迎页:
vim /etc/httpd/conf.d/welcome.conf
8 <LocationMatch "^/+$">
9 Options -Indexes
10 ErrorDocument 403 /.noindex.html
11 </LocationMatch>
注释掉以上4行 ,ctrl+v,移动光标选中四行,大写I,输入#,按esc
systemctl restart httpd
创建首页 echo 'hello ,everyone !' > /var/www/html/index.html 
浏览器输入服务器地址访问即可

修改 web 网站根目录-配置别名-虚拟目录

修改网站默认根目录,并且设置访问权限,只有在允许的范围之内可以访问创建目录,创建测试首页

mkdir /var/www/html/bbs

vim /etc/httpd/conf/httpd.conf
设置文档目录为/var/www/html/bbs
120 DocumentRoot "/var/www/html/bbs"
允许所有人访问/var/www/html/bbs 目录,目录与访问控制:
132 <Directory "/var/www/html/bbs"> #子目录会继承这个目录的属性
145     Options  FollowSymLinks  #删除Indexes 目录浏览
152     AllowOverride None   #none,忽略.htaccess文件

157 # Require all granted             #支持所有访问注释掉,改成下图,允许访问的ip和禁止访问的ip

第6章 使用Apache搭建Web网站服务器

Require all granted #允许所有
Require all denied #拒绝所有
Require method http-method [http-method] ...  #允许,特定的 HTTP方法
Require user userid [ userid ] ...  #允许,特定用户
Require group group-name [group-name] ... #允许,特定用户组
Require valid-user #允许,有效用户
Require ip 10 172.20 192.168.2 #允许 特定IP和网段
Require not ip  192.168.0 #不允许 192.168.0网段访问

 

使用别名,引用网站根目录以外的路径

将/usr/local/phpdata 目录通过虚拟目录功能添加到网站根目录。当访问http://192.168.0.64/phpdata/ 时,就可以访问目录/usr/local/phpdata 中的内容

Apache 的别名也叫虚拟目录

mkdir /usr/local/phpdata
echo 'this is Dopamine data' > /usr/local/phpdata/index.html

语法:
AliasURL 路径 PATH 物理路径

163 Alias /php/ "/usr/local/phpdata/"
164 <Directory "/usr/local/phpdata/">
165         Options FollowSymLinks
166         AllowOverride None
167         Require all granted
168 </Directory>

第6章 使用Apache搭建Web网站服务器

curl 192.168.0.64/php/     或使用浏览器访问 192.168.0.64/phpdata/

实现 Apache 打开软链接功能-禁止显示目录列表-用户认证

当网站没有默认的首页的时候,直接访问显示网站更目录下的文件夹资源

# Require all granted #取消注释
<RequireALL> #注释以下 4行
Require ip 192.168.0.6 192.168.0.64
Require not ip 192.168.0.60
</RequireALL>

145 Options Indexes FollowSymLinks   #取消注释此行,即可显示显示文件列表,注释掉,则不显示。
systemctl restart httpd

通过用户认证的方式,对网站下/usr/local/phpdata/目录进行保护
在需要使用用户验证的目录的相关 Directory 段落添加以内容
163 Alias /php/ "/usr/local/phpdata/"
164 <Directory "/usr/local/phpdata/">
165         Options Indexes FollowSymLinks
166         AllowOverride None
167         #Require all granted
168         authtype basic          #指定认证类型为:basic
169         authname "my web site" #指定认证区域名称。区域名称是在提示要求认证的对话框中显示给用户的
170         authuserfile /etc/httpd/conf/passwd.secret   #指定一个包含用户名和密码的文本文件,每行一对
171         require valid-user  
172 </Directory>

require命令
require valid-user (在 AuthUserFile指定的文件中任何用户都可以访问)
#指定哪些用户或组才能被授权访问。如:require user user1 user2 (只有用户user1 和user2 可以访问)

 

第6章 使用Apache搭建Web网站服务器 
vaild-user拼写错误

第6章 使用Apache搭建Web网站服务器

利用 Apache 附带的程序 htpasswd,生成包含用户名和密码的文本文
命令格式:htpasswd –cm 存放用户名和密码的文件名 用户名

htpasswd -cm /etc/httpd/conf/passwd.secret tom

第二次创建用户,不能用-c,否则会把前面的用户覆盖了,-c创建新文件,-m ,是md5加密

htpasswd -m /etc/httpd/conf/passwd.secret jack

cat /etc/httpd/conf/passwd.secret  查看密码文件内容
第6章 使用Apache搭建Web网站服务器

systemctl restart httpd
第6章 使用Apache搭建Web网站服务器

Apache 虚拟主机基于-IP-域名-端口三种搭建方式 

1、通过不同的 IP地址
2、通过不同的域名
3、通过不同的端口号

三种都需要把虚拟主机功能打开:

1.通过不同的IP 地址,解析不同域名

给服务器增加IP(另一个域名解析出来的那个 IP)
ifconfig ens33:1 192.168.0.53 netmask 255.255.255.0
echo 'this is ip mode' > /var/www/html/bbs/index.html
cd /etc/httpd/conf.d/
vim bbs.conf
  1 <VirtualHost 192.168.0.64:80>
  2         ServerAdmin [email protected]
  3         DocumentRoot /var/www/html/
  4         ServerName xx.xx.com
  5         ErrorLog logs/xx.xx.com-error_log
  6         CustomLog logs/xx.xx.com-access_log common
  7 </VirtualHost>
  8 <VirtualHost 192.168.0.53:80>
  9         ServerAdmin [email protected]
 10         DocumentRoot /var/www/html/bbs
 11         ServerName xx.xx.com
 12         Errorlog logs/xx.xx.com-error_log
 13         CustomLog logs/xx.xx.com-access_log common
 14 </VirtualHost>

第6章 使用Apache搭建Web网站服务器

systemctl restart httpd
第6章 使用Apache搭建Web网站服务器

第6章 使用Apache搭建Web网站服务器

2.通过不同域名:(这种访问在企业比较常见)

vim bbs.conf

第6章 使用Apache搭建Web网站服务器

vim /etc/hosts

第6章 使用Apache搭建Web网站服务器

第6章 使用Apache搭建Web网站服务器

C:\Windows\System32\drivers\etc\hosts

第6章 使用Apache搭建Web网站服务器

第6章 使用Apache搭建Web网站服务器

 第6章 使用Apache搭建Web网站服务器

 

方法 3:基于端口配置虚拟主机

vim /etc/httpd/conf/httpd.conf
添加端口

第6章 使用Apache搭建Web网站服务器

vim /etc/httpd/conf.d/bbs.conf

第6章 使用Apache搭建Web网站服务器

vim /etc/hosts

第6章 使用Apache搭建Web网站服务器

systemctl restart httpd

第6章 使用Apache搭建Web网站服务器
第6章 使用Apache搭建Web网站服务器
第6章 使用Apache搭建Web网站服务器