【UOS运维学习笔记】-APACHE2安装与配置

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/24
nmcli 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

关于软件资源类分享的免责声明:
本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并未做任何贩卖软件信息等行为,不存在任何商业目的及用途。
根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。"
您需知晓本站所有分享内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任。
如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇