第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
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>
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 可以访问)
vaild-user拼写错误
利用 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 查看密码文件内容
systemctl restart httpd
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>
systemctl restart httpd
2.通过不同域名:(这种访问在企业比较常见)
vim bbs.conf
vim /etc/hosts
C:\Windows\System32\drivers\etc\hosts
方法 3:基于端口配置虚拟主机
vim /etc/httpd/conf/httpd.conf
添加端口
vim /etc/httpd/conf.d/bbs.conf
vim /etc/hosts
systemctl restart httpd