UOS运维工程师考试努力中,每天一个实验环境,争取一路向上早日获得认证!
一、apache2 服务安装
Apache 的安装无外乎两种方式: 源代码安装和 DEB 包安装。这两种安装类型各有特色,DEB包安装不需要编译,而源代码安装则需要先配置编译再安装,DEB 包安装在一个固定的位置下,选择固定的模块,而源代码安装则可以让你选择安装路径,选择你想要的模块。
1、环境准备
Server version: Apache/2.4.38 (Uos)
Server built: 2019-10-15T19:53:42
可使用以下命令查看 apache 版本
apache2 –v
2、安装 apache2
使用以下命令安装:
apt install apache2
安装完成后,可以使用下面的命令启动 Apache 服务:
systemctl start apache2
systemctl enable apache2 #设置开机启动
启动完成后打开浏览器,在 uos2 或宿主机上面访问验证
http://192.168.200.201
二、 apache 文件路径及配置文件详解
1、apache 各文件存放路径
默认 Web 目录: /var/www/html/
配置目录: /etc/apache2/
全局配置文件: /etc/apache2/apache2.conf
端口配置文件: /etc/apache2/ports.conf
虚拟主机配置文件: /etc/apache2/sites-enabled/000-default.conf
Apache2 环境变量设置:envvars
mods-available: 这个目录包含模块和模块配置文件,不是所有的模块都有配置文件。
mods-enabled :持有/etc/apache2/mods-available 目录下文件的链接,当该目录下有一
个模块文件和其配置文件,那么 Apache 重启后该模块将生效。
sites-available : 这个目录包含 Apache 虚拟主机的配置文件。虚拟主机允许 Apache 配置多个站点并为每个站点配置不同的参数。后面下面配置的时候会配置 80 端口的 http 重定向为 443 的 https。
sites-enabled: 持有/etc/apache2/sites-available 目录下文件的链接。当 Apache 重启后,该目录中包含的站点将会被激活
2、apache 配置文件详解:
ServerName www.uos.com #在 ServerName 后加上你的网站名称
ServerAlias ftp.uos.com mail.uos.com #如果你想多个网站名称都取得相同的网站,可以加在 ServerAlias 后加上其他网站别名。别名间以空格隔开 ServerAdmin uos@pxb.com #在 ServerAdmin 后加上网站管理员的电邮地址,方 便别人有问题是可以联络网站管理员
DocumentRoot /var/www/html #在 DocumentRoot 后加上存放网站内容的目录路径 (用户的个人目录)
#定义“/”目录区域的开始
Options FollowSymLinks #控制选项允许使用软链接
AllowOverride None #不允许隐含控制文件中的覆盖配置
Order allow,deny #访问控制策略的应用顺序
Allow from all #禁止任何人访问此区域
#定义“/”目录区域的结束
三、apache 虚拟主机配置实战
1、虚拟主机概念和类型介绍
(1)虚拟主机的概念
所谓虚拟主机,在 Web 服务里就是一个独立的网站站点(www.baidu.org),这个站点对应独立的域名(也可能是 IP 或端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问
(2)虚拟主机类型
常见的虚拟主机类型有如下几种
A、基于域名的虚拟主机
所谓基于域名的虚拟主机,意思就是通过不同的域名区分不同的虚拟主机,基于域名的虚拟主机是企业应用最广的虚拟主机类型,几乎所有对外提供服务的网站都是使用基于域名的虚拟主机,例如:www.apache.org
B、基于端口的虚拟主机
同理,所谓基于端口的虚拟主机,意思就是通过不同的端口来区分不同的虚拟主机,此类虚拟主机对应的企业应用主要为公司内部的网站,例如:一些不希望直接对外提供用户访问的网站后台等,访问基于端口的虚拟主机地址里要带有端口,例如:http://www.baidu.com:80
C、基于 IP 的虚拟主机
同理,所谓基于 IP 的虚拟主机,意思就是通过不同的 IP 区分不同的虚拟主机,此类虚拟主机对应的企业应用非常少见,一般不同业务需要使用多 IP 的场景都会在负载均衡器上进行VIP 绑定,而不是在 Web 上通过绑定 IP 区分不同的虚拟机。
4、基于端口的虚拟主机
在 uos1 上操作mkdir /var/www/8899 #创建网页目录
echo 8899 > /var/www/8899/index.html #准备访问页面
vim /etc/apache2/sites-enabled/vhosts.conf #修改配置文件
Listen 8899 #更改监听的端口号
ServerName 192.168.200.201 DocumentRoot /var/www/8899
systemctl restart apache2 #重启 apache 服务
在 uos2 或宿主机上面访问验证
http://192.168.200.201:8899 8899 #页面显示
2、基于域名的 web 虚拟主机
首先我们创建测试页面:mkdir /var/www/uos1 #创建网页目录
mkdir /var/www/uos2 #创建网页目录
echo "uos1" > /var/www/uos1/index.html #准备访问页面
echo "uos2" > /var/www/uos2/index.html #准备访问页面
这里使用 grep 过滤命令来生成基础的 apache 主配置文件,然后根据生成的初始配置进行修改,使其成为所需的形式,具体步骤为:cd /etc/apache2/sites-enabled/
cp 000-default.conf{,.bak} #备份模板配置文件
egrep -v "#|^$" 000-default.conf >vhosts.conf #去除带#和空行,重定向或者直接新创建配置文件,然后编辑。
vim vhosts.conf #修改配置文件如下
ServerName www.uos1.com #网站名,第一个网站 www.uos1.com DocumentRoot /var/www/uos #网站目录
ServerName www.uos2.com #第二个网站 www.uos2.com DocumentRoot /var/www/uos2
注:重启 apache2 服务(修改了 apache2 配置信息,必须重启才能生效)systemctl restart apache2
通过 IP 地址来访问的话,apache 并不知道你想要访问哪个站点,因此,他默认你是要访问
他配置文件里的第一个站点,也就是 www.uos1.com
通过修改 hosts 映射我们可以访问不同的站点。
在 uos2 或宿主机上面
修改 hosts 映射文件vim /etc/hosts #添加主机名映射
192.168.200.201 www.uos.com www.deepin.com
访问验证
http://www.uos1.com
uos1 #页面显示
http://www.uos2.com
uos2 #页面显示
如上所示:基于域名的虚拟主机配置完毕。
3、基于 IP 的虚拟主机
添加一块网卡并设置 IP 地址为 192.168.200.202/24nmcli device show
nmcli connection add type ethernet con-name ens36 ifname ens36
nmcli connection modify ens36 ipv4.method manual ipv4.addresses 192.168.200.202/24
connection.autoconnect yes
nmcli connection up ens36
cd /etc/apache2/sites-enabled/
vim vhosts.conf #修改配置文件如下
ServerName www.uos1.com DocumentRoot /var/www/uos1
ServerName www.uos2.com DocumentRoot /var/www/uos2
systemctl restart apache2 #重启服务
在 uos2 或宿主机上面
vim /etc/hosts #修改主机名映射
192.168.200.201 www.uos1.com
192.168.200.202 www.uos2.com
访问验证
http://192.168.200.201
uos1 #页面显示
http://192.168.200.202
uos2 #页面显示
四、alias 别名配置
Web 网站别名配置是被经常使用的一个特性。这个功能实际上是为站点 URI 定义一个路径
映射关系
(1)还原 uos1 到基于域名的虚拟主机环境mkdir /alias #目录的位置可以随意指定、根下也是可以的、但是不建议
echo alias > /alias/index.html #创建访问页面
vim vhosts.conf #修改配置文件
ServerName www.uos1.com
DocumentRoot /var/www/uos
Alias /net /alias #添加 alias 别名
#设置允许访问目录 AllowOverride none Require all granted
上述别名的配置,就是说当你基于你的站点访问 www.uos1.com/net 目录下的文件时,会直接从服务器/alias 目录下访问对应的文件。systemctl restart apache2 #重启 apache 服务
(2)在 uos2 或宿主机上面访问验证
http://192.168.200.201/net
alias #页面显示
五、软链接网站
在 uos1 上mkdir /test
echo “uos test” > /test/index.html
ln -s /test/ /var/www/html/test_uos #建立软链接
vim /etc/apache2/sites-enabled/vhosts.conf
ServerName 192.168.200.201 DocumentRoot /var/www/html
systemctl restart apache2
在 uos2 或宿主机上面访问验证
http://192.168.200.201/test_uos/
六、拒绝谋客户端访问
在 uos1 上mkdir /var/www/uos #创建网页目录
echo "uos" >/var/www/uos/index.html #创建访问页面
vim /etc/apache2/sites-enabled/uos.conf #修改配置文件
ServerName www.uos.com DocumentRoot /var/www/uos
Order allow,deny #设置优先级 allow from all #允许所有人访问 deny from 127.0.0.1 #禁止本地访问
systemctl restart apache2 #重启 apache 服务
使用本地访问 www.uos.com 拒绝访问
使用其他客户端 uos2 上访问,可以访问
相关案例:
Order deny,allow //默认充许所有主机访问
Deny from 192.168.200.202 //单独禁止
Order deny,allow
allow from all
deny from 192.200.202
全部都可以通行
——————————-
Order allow,deny
deny from 192.168.200.202
allow from all
只有 192.168.200.202 不能通行
——————————-
Order deny,allow
allow from 192.168.200.202
deny from all
只允许 192.168.200.202 通行
——————————–
Order deny,allow
全部都可以通行(默认的)
——————————-
Order allow,deny
全部都不能通行(默认的)
——————————-
Order allow,deny
deny from all
全部都不能通行
——————————-
对于上面两种情况,如果换成 allow from all,则全部都可以通行!
七、帐号密码访问
在 uos1 上
htpasswd -c /etc/apache2/.htpasswd uos #创建 Apache 可用于验证用户身份的密码文
件。第一次使用此程序时,需要添加-c 选项以创建指定的文件
New password:
Re-type new password:
Adding password for user uos
htpasswd /etc/apache2/.htpasswd another_user #省略添加的任何其他用户的-c 参数
vim /etc/apache2/sites-enabled/vhosts.conf
ServerName 192.168.200.201 DocumentRoot /var/www/html AuthType Basic #设置 Basic 基本身份验证 AuthName “uos” #提示输入凭据时将显示给用户的 领域名称 AuthUserFile /etc/apache2/.htpasswd #将 Apache 指向我们创建的密码文件 Require valid-user #要求 valid-user 访问此资源,这意味着 任何可以使用密码验证其身份的人都将被允许
systemctl restart apache2
在 uos2 或宿主机上面访问验证
http://192.168.200.201/html
网络浏览器中访问受限制的内容,看到一个用户名和密码提示符.
八、ssl
SSL 是 Secure Sockets Layer(安全套接层协议)的缩写,可以在 Internet 上提供秘密性传输。
Netscape 公司在推出第一个 Web 浏览器的同时,提出了 SSL 协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为 Internet 上保密通讯的工业标准。
SSL 能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL 协议要求建立在可靠的传输层协议(TCP)之上。SSL 协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET 等)能透明地建立于 SSL 协议之上。SSL 协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
OpenSSL 是一个强大的安全套接字层密码库,整个软件包大概可以分成三个主要的功能部分
- 密码算法库
- 常用的密钥和证书封装管理功能
- SSL 通信 API 接口
- 丰富的应用程序供测试或其它目的使用
openssh安装与证书生成
apt install -y openssl #安装 openssl
mkdir /etc/apache2/ssl #创建证书存放目录
cd /etc/apache2/ssl
openssl genrsa >uos.key #生成私钥
openssl req -new -x509 -key uos.key > uos.pem #生成证书
Country Name (2 letter code) [AU]:CN #国家
State or Province Name (full name) [Some-State]:BJ #省份
Locality Name (eg, city) []:BJ #城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:TX #机构名称
Organizational Unit Name (eg, section) []:PXB #部门
Common Name (e.g. server FQDN or YOUR name) []:TEST #服务器或个人名称
Email Address []:test@test.com #邮箱
配置文件
cd /etc/apache2/
cp sites-available/default-ssl.conf sites-enabled/
cd sites-enabled/
vim sites-enabled/default-ssl.conf # https 协议网站使用的网站配置文件
DocumentRoot /var/www/html SSLCertificateFile /etc/apache2/ssl/uos.pem #证书文件位置
SSLCertificateKeyFile /etc/apache2/ssl/uos.key #私钥位置
a2enmod ssl #开启 SSL 模块
systemctl restart apache2
在 uos2 或宿主机上面访问验证访问
https://192.168.200.1201