“Apache HTTP Server”是开源软件项目的杰出代表,基于标准的HTTP网络协议提供网页浏览服务。
LAMP
WISA Windows IIS Sqlserver Asp
LAMP Linux Apache Mysql PHP、Perl、Python
LNMP Linux Nginx Mysql PHP、Perl、Python
Nginx比Apache响应速度快,处理静态页面能力更强
Apache比Nginx功能强大,负载量也大
apache起源
apache特点:
开放源代码、支持各种语言、跨平台使用、模块化设置、运行稳定、良好的安全性
版本
1.x
2.x
安装apache
安装方式
rpm
tar
yum
mount
/media
/mnt
rpm -ivh lynx-2.8.8-0.3.dev15.el7.x86_64
lynx-level-2.8.8-0.3.dev15.el7.x86_64
lynx-client-2.8.8-0.3.dev15.el7.x86_64
rpm安装:
apr和apr-util:通用开发组件
cyrus-sasl-devel:协议认证环境
pcre和pcre-devel:perl库
mailcap:邮件消息/web文档
httpd-tools:http工具包
[root@localhost Packages]# rpm -ivh apr-1.4.8-3.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh apr-devel-1.4.8-3.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh cyrus-sasl-devel-2.1.26-19.2.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh expat-devel-2.1.0-8.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh libdb-devel-5.3.21-19.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh openldap-devel-2.4.40-8.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh pcre-devel-8.32-15.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh pcre-8.32-15.el7.x86_64.rpm
rpm -qa | grep httpd
httpd-2.4
1、linux Centos7.3(纯净)
2、在电脑上插入光盘
3、mkdir /media/dvd
mount /dev/cdrom /media/dvd
4、rpm -qa | grep httpd
5、安装 滤清思路(依赖关系)
-rw-r--r--. 1 root root 2229 10月 23 2018 /etc/passwd
- 文件
d 目录
l 链接文件
b 块设备文件
rwx:421读写执行 644:文件 755:目录
rw-r--r--
rw- 6 用户
r-- 4 组
r-- 4 其他用户
selinux 沙盒内核
1 链接文件
root root 属主/属组
2229 大小
10月 23 2018 最后一次修改时间
/etc/passwd 文件名
yum安装(需要挂载光盘)
mount /dev/cdrom /media
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/yum.repo
[yum]
name=yum
baseurl=file:///media
enabled=1
gpgcheck=0
tar安装:
apr和apr-util:通用开发组件
tar zxf apr-1.5.2.tar.gz -C /usr/src/
cd /usr/src/apr-1.5.2/
./configure --prefix=/usr/local/apr && make -j 4 && make install
tar zxvf apr-util-1.5.4.tar.gz -C /usr/src/
cd /usr/src/apr-util-1.5.4/
./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr && make -j 4 && make install
yum -y install pcre-devel openssl-devel zlib-devel
http的安装:
tar zxvf httpd-2.4.25.tar.gz -C /usr/src/
cd /usr/src/httpd-2.4.25/
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-mpms-shared=all --with-mpm=event --enable-deflate --enable-cgid --enable-modules=most --enable-shared=most --enable-ssl
选项:
--enable-so:启用动态加载模块支持
--enable-rewrite:地址重写功能
--enable-charset-lite :启用字符集支持
--enable-cgid:支持线程MPMs
--with-apr=/usr/local/apr:指定apr路径
--with-apr-util=/usr/local/apr-util/:指定apr-util路径
--enable-mpms-shared=all:支持共享MPM:多道处理模块
--with-mpm=event
(apache:工作模式→prefork,worker,event)
支持默认的MPM(apache2.2版本:默认支持prefork,
apache2.4版本:默认支持event)
prefork:单进程响应单请求(web服务器提空多个空闲进程,供客户端访问)
worker:单进程多线程,每个线程响应一个请求
event:一个进程生成多个线程,每个线程响应多个请求
--enable-deflate:支持内容压缩(web中压缩文本,httpd只能处理静态请求)
--enable-cgid:支持线程MPMs
--enable-modules=most:支持大部分模块
--enable-mods-shared=most:支持共享摸块
--enable-ssl:支持ssl
make && make install
验证:
ls /usr/local/httpd/
bin cgi-bin error icons logs manual
build conf htdocs include man modules
1、挂载光盘
2、写本地yum库
3、安装apr和apr-utils(tar)
4、yum安装三种依赖软件
5、安装httpd(apache)
解压→配置(./configure )→编译和安装
6、验证
主要目录含义:
ls /usr/local/httpd/
bin:二进制文件
build:构建工具目录,编译安装都有
cgi-bin:通用网关接口
conf:配置文件
error:错误信息
htdocs:网页目录
icons:图标
include:头文件
logs:日志 access_log:访问日志 error_log:错误日志
man:在线帮助手册
manual:帮助文档。官网网站内容放这里
modules:模块。和一个应用程序对接需要到的模块。
优化
ln -s /usr/local/httpd/bin/* /usr/local/bin/
ln -s /usr/local/httpd/include/* /usr/local/include/
[root@lala ~]# httpd -l
Compiled in modules:
core.c
mod_so.c
http_core.c
worker.c
查看httpd版本信息
[root@lala ~]# httpd -v
Server version: Apache/2.4.25 (Unix)
Server built: Jul 30 2019 00:26:04
建立可控的服务脚本
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
vim /etc/init.d/httpd
添加
#chkconfig:35 25 25
特殊用法,不算注释,设置开启自动启用服务
35 服务识别参数,在级别3和5中启动
25 启动优先级
25 关闭优先级
#description:this is apache.my apache!haha 描述信息
将httpd服务添加到服务管理器
chkconfig --add httpd
设置开机自动启动
chkconfig httpd on
建立[service]配置文件
vim /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-failures
RestartSec=42s
[Install]
WantedBy=graphical.target
配置httpd服务
vim /usr/local/httpd/conf/httpd.conf
200行下面添加
ServerName 192.168.6.20:80
启动服务
systemctl restart httpd
部署主页文件
vim /usr/local/httpd/htdocs/index.html
<html>
<body>
<h1>318de gushi</h1>
<p>床前明月光</p>
<p>疑是地上霜</p>
<p>举头望明月</p>
<p>我是李飞翔</p>
</body>
</html>
虚拟主机:在同一个服务器上搭建多个web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”web主机。只需要运行一个httpd服务
基于:IP PORT DOMAIN NAME
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
VirtualHost *:80
apache2.2及以前的版本基于域名的虚拟主机必须使用的声明
apache2.4不再用此选项
<VirtualHost *:80>
ServerAdmin:管理员邮箱
DocumentRoot:网站目录
ServerName:域名
ServerAlias:域名别名
ErrorLog:错误日志
CustomLog:访问日志
</VirtualHost>
基于域名的虚拟主机
挂载光盘
搭建DNS
yum -y install bind bind-libs bind-utils
setenforce 0
systemctl stop firewalld
vim /etc/named.conf (全局配置文件),全删掉,然后粘贴
options {
directory "/var/named";
};
zone "baidu.com" IN {
type master;
file "baidu.com";
};
zone "sohu.com" IN {
type master;
file "sohu.com";
};
cd /var/named/
cp named.localhost baidu.com
cp named.localhost sohu.com
添加主机配置文件
vim baidu.com
NS www.baidu.com.
www A 192.168.6.20
vim sohu.com
NS www.sohu.com.
www A 193.168.6.20
cd /var/named/
chown named.named baidu.com sohu.com
vim /usr/local/httpd/conf/httpd.conf
Options None 238
Include conf/extra/httpd-vhosts.conf(去掉#) 483
mkdir -p /var/www/{baidu,sohu}
cd /var/www/baidu/
vim index.html 主页内容自己写
cd /var/www/sohu/
vim index.html 主页内容自己写
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/var/www/baidu"
ServerName www.baidu.com
ServerAlias baidu.com
ErrorLog "logs/www.baidu.com-error_log"
CustomLog "logs/www.baidu.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/sohu"
ServerName www.sohu.com
ErrorLog "logs/www.sohu.com-error_log"
CustomLog "logs/www.sohu.com-access_log" common
</VirtualHost>
验证:
客户机上加DNS地址(DNS服务器的地址)
结果不通,因为没授权
所以:
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
在头部添加:(记住确认防火墙已经关闭)
<Directory "/var/www">
Require all granted
</Directory>
再次验证:
firefox http://www.baidu.com
firefox http://www.sohu.com
客户机地址限制
<Directory>
Require all granted
</Directory>
常用策略格式
Require all granted:表示允许所有主机访问
Require all denied:表示拒绝所有主机访问
Require local:表示仅允许本地主机访问
Require [not] host<主机名或域名列表>:表示允许或拒绝指定主机或域访问。
Require [not] ip<IP地址或网段列表>:表示允许或拒绝指定IP地址网段访问。
例:
<Directory>
Require all granted
Require not 192.168.6.50/24 192.168.6.51/24
</Directory>
用户授权访问
cd /usr/local/httpd/bin/
htpasswd -c /usr/local/httpd/conf/.awspwd ls
htpasswd -c /usr/local/httpd/conf/.awspwd ww
htpasswd /usr/local/httpd/bin/.awspwd zl
总结:加-c覆盖之前的用户
不加-c追加之前的用户
cat /usr/local/httpd/conf/.awspwd
在vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 配置文件中添加
<Directory "/var/www">
Require all denied
AuthName "DocumentRoot"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
require valid-user
</Directory>
AuthName:名称
AuthType Basic:认证类型为基本认证
AuthUserFile:保存用户账号、密码的认证文件
require valid-user:只有认证文件中的合法用户才能访问
systemctl restart httpd
验证:
浏览器会首先弹出认证对话框。只有输入正确的用户名和密码后才能查看网页,否则将拒绝访问。