APACHE

APACHE

一、介绍

apache是企业中常用的web服务,用来提供http://(超文本传输协议)

二、apache的安装

yum install httpd -y       #安装apache软件包

systemctl start httpd      #打开服务

systemctl enable httpd    #开机自启动

systemctl stop firewalld     #关闭防火墙

systemctl disable firewalld   #开机不启动防火墙

测试:

访问apache默认页面http://172.25.254.148

apache还有一个使用手册:需要安装httpd-manual包,访问http://主机ip/manual可以查看

三、apache的基础信息

主配置目录: /etc/httpd/conf

主配置文件:/etc/httpd/conf/httpd.conf

子配置目录:/etc/httpd/conf.d

子配置文件:/etc/httpd/conf.d/*.conf

默认发布目录:/var/www/html

默认发布文件:index.html

默认端口:80

默认安全上下文:httpd_sys_content_t

程序开启默认用户:apache

apache日志:/etc/httpd/logs/*

四、配置apache服务

1.在默认发布目录发布内容

vim /var/www/html/index.html

<h1>redhat</h1>

访问http://172.25.254.142

2.修改默认端口

vim /etc/httpd/conf/httpd.conf

42 Listen 80                      ##修改默认端口为8080

3.修改默认发布文件:

默认发布文件就是访问apache时没有指定文件名称时默认访问的文件。这个文件可以指定多个,有访问顺序

vim /etc/httpd/conf/httpd.conf

164     DirectoryIndex index.html test   ##当index.html不存在时访问test

                                          ##如果将test放到index.html前面,在两个文件都存在的情况下会默认访问test里面的内容

测试:

rm -f /var/www/html/*

vim /var/www/html/test

<h1>test</h1>

systemctl restart httpd.service    ##修改完配置文件记得一定要重启服务生效

4.修改默认发布目录

vim /etc/httpd/conf/httpd.conf

120 DocumentRoot "/www/html"

121 <Directory "/www/html">

122         Require all granted

123 </Directory>

##将原本的DocumentRoot "/var/www/html"替换为以上内容

mkdir /www/html -p

[root@desktop ~]# ls -Z /var/www/html/ -d

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

[root@desktop ~]# ls -Z /www/html/ -d

drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /www/html/

由于selinux的存在,新建的目录安全上下文和默认发布目录是不同的

semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'  ##修改安全上下文

restorecon -FvvR /www/         ##刷新安全上下文

[root@desktop ~]# ls -Z /www/html/ -d

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /www/html/

systemctl restart httpd.service 

vim /etc/httpd/conf/httpd.conf 

<h1>新目录</h1>

五、apache的虚拟主机

1.

恢复默认发布目录,并创建默认文件index.html

[root@desktop conf.d]# cat /var/www/html/index.html 

<h1>默认目录</h1>

2.

mkdir /var/www/virtual/news/html -p    #虚拟主机放置路径

mkdir /var/www/virtual/music/html -p    #第二个虚拟主机路径

vim /var/www/virtual/news/html/index.html  #建立虚拟主机发布文件

 <h1>news.redhat.com</h1>

vim /var/www/virtual/music/html/index.html

<h1>music.redhat.com</h1>

cd /etc/httpd/conf.d/                       #进入apache服务子配置目录

vim adefault.conf                          #建立默认发布目录配置文件

  1 <VirtualHost _default_:80>

  2         DocumentRoot /var/www/html            #发布文件路径

  3         CustomLog "logs/adefault.log" combined  #日志路径,这里写相对路径,内容在/etc/httpd/logs/*.log里面

  4 </VirtualHost>

vim news.conf                            #建立虚拟发布目录文件

  1 <VirtualHost *:80>

  2         ServerName news.redhat.com              #虚拟主机的域名

  3         DocumentRoot /var/www/virtual/news/html  #发布目录

  4         Customlog "logs/news.log" combined        #站点日志,combined表示四种日志类型的合集

  5 </VirtualHost>

  6 <Directory "/var/www/virtual/news/html">

  7         Require all granted                        #建立认证关系

  8 </Directory>

vim music.conf

  1 <VirtualHost *:80>

  2         ServerName music.redhat.com

  3         DocumentRoot /var/www/virtual/music/html

  4         Customlog "logs/music.log" combined

  5 </VirtualHost>

  6 <Directory "/var/www/virtual/music/html">

  7         Require all granted

  8 </Directory>

systemctl restart httpd.service

测试:

在客户端访问以上网页时,做好本地解析,方法:

vim /etc/hosts

172.25.254.148 www.redhat.com news.redhat.com music.redhat.com

六、apache访问限制

1.通过黑白名单

vim /etc/httpd/conf.d/adefault.conf

<Directory "/var/www/html/westos">

Order Deny,Allow   ##deny和allow哪个在前就先读取下面的哪个配置

Allow from 172.25.254.1  ##允许1这台主机访问

Deny from All             ##拒绝所有

</Directory>

2.通过密码

1)创建密码文件:

[root@desktop conf.d]# htpasswd -cm /etc/httpd/userpass admin

New password:                           ##输入密码

Re-type new password:                   ##确认密码

Adding password for user admin

如果还要增加一个用户要去掉c参数,否则会覆盖原来的用户密码

htpasswd -m /etc/httpd/userpass admin1

密码文件在这里:

[root@desktop conf.d]# cat /etc/httpd/userpass 

admin:$apr1$GNsdwvzs$ONpK.ap5kzyJYUBe0XPRg/

admin1:$apr1$8KpmN94R$KRkKghToPsRf9X4vCdhGB0

可以查看一下,系统中是没有admin用户的,这是http服务建立的

[root@desktop conf.d]# id admin

id: admin: no such user

2)增加配置

mkdir /var/www/html/admin

vim /var/www/html/admin/index.html

<h1>admin</h1>

vim /etc/httpd/conf.d/adefault.conf

<Directory "/var/www/html/admin">

AuthUserFile /etc/httpd/userpass   #密码存放位置

AuthName "Input Name and Password" #登陆前提示语

AuthType basic                     #(最小化)基本模式

Require valid-user   #允许所有/etc/httpd/userpass里面的用户

#Require user admin  #只允许/etc/httpd/userpass里面的admin用户

</Directory>

访问http://172.25.254.142/admin,需要密码登陆,输入刚才创建的用户和密码即可

七、apache支持的语言

1.php

yum install php -y        #安装php包

vim /var/www/html/index.php    #默认发布目录下写一个php文件

  <?php

           phpinfo();

  ?>

vim /etc/httpd/conf/httpd.conf

164     DirectoryIndex index.php index.html   ##将php文件加入到服务识别中

systemctl restart httpd.service

2.cgi

cd /var/www/cgi-bin/

vim index.cgi              #建立相关文件

#!/usr/bin/perl

print "Content-type: text/html\n\n";

print `date`;              #表示执行date这个命令(脚本)

chmod +x index.cgi       #增加可执行权限

vim /etc/httpd/conf.d/adefault.conf

Alias /cgi /var/www/cgi-bin

<Directory "/var/www/cgi-bin">

        Options +ExecCGI       #告诉系统可以执行index.cgi中的命令(脚本)

        AddHandler cgi-script .cgi  #识别的文件类型是cgi-script或以cgi结尾的

</Directory>

vim /etc/httpd/conf/httpd.conf

164     DirectoryIndex index.php index.html index.cgi

systemctl restart httpd.service

测试:可见执行了`date`这个命令,这里也可以是一个脚本执行后的结果

3.其他

还支持jsp和asp,但不能直接使用,还需要中间键(程序)支持,如tomcat等。

 八、https(ssl加密认证)

1.ssl制作与使用

vim /var/www/html/index.html

<h1>!!redhat!!</h1>

yum install mod_ssl -y         #安装ssl认证模块

yum install crypto-utils -y     #安装ssl生成工具

genkey www.redhat.com     #执行命令运行ssl生成工具进入文本化图形

加密大小选择1024即可,太大的话文件生成过程也会变长:

等待加密过程:

到这一步需要到发布服务的主机上不停的随机敲字母,否则进度条会一直停止不动。具体原因与/dev/random文件有关,随机敲字母这个文件会随之增大:

是否加入CA认证(需要互联网|需要收费),选择否:

密码这里选择空-->Next,否则一会儿打开网页认证还需要输入此密码:

填写注册信息:

[root@desktop ~]# genkey www.redhat.com
                                ...
output will be written to /etc/pki/tls/certs/www.redhat.com.crt   #生成的证书位置
output key written to /etc/pki/tls/private/www.redhat.com.key    #生成的锁的位置
                               ...
vim /etc/httpd/conf.d/ssl.conf           #修改ssl配置文件,用下面内容替换原来行的内容,将新生成的证书和锁加进配置文件中

101 SSLCertificateFile /etc/pki/tls/certs/www.redhat.com.crt

109 SSLCertificateKeyFile /etc/pki/tls/private/www.redhat.com.key

systemctl restart httpd.service        #重启http服务

用https加密方式访问172.25.254.148服务器:

添加完认证证书就可以访问148主机发布的内容了

查看一下我们的ssl证书:

2.设定https虚拟主机和网页重写

1)设定https虚拟主机

vim /etc/httpd/conf.d/login.redhat.conf

<VirtualHost *:443>   #虚拟主机,与ssl加密服务同一个端口
        ServerName login.redhat.com    #域名
        DocumentRoot /var/www/virtual/login    #服务发布目录
        CustomLog "logs/login.logs" combined    #日志存放目录
        SSLEngine on        #打开ssl加密
        SSLCertificateFile /etc/pki/tls/certs/www.redhat.com.crt
        SSLCertificateKeyFile /etc/pki/tls/private/www.redhat.com.key   #两个加密文件
</VirtualHost>
mkdir -p /var/www/virtual/login

vim /var/www/virtual/login/index.html

<h1>ssl虚拟主机</h1>
systemctl restart httpd.service
vim /etc/hosts    #客户端主机做一个域名解析

172.25.254.148   login.redhat.com

在客户端浏览器输入https://login.redhat.com

2)网页重写

一般我们在访问一个域名的时候是不会在域名前面加一个https://的,那如何保证访问的安全性呢?

用户访问百度的时候输入www.baidu.com,等网页加载完成后的网址会变成https://www.baidu.com可以看到前面有一个ssl认证(锁)的标识。这里可以用网页重写来实现,用户不用在域名前面特意输入https://就能自动以https安全方式访问。

修改虚拟主机配置文件:

vim /etc/httpd/conf.d/login.redhat.conf

<VirtualHost *:443>
        ServerName login.redhat.com
        DocumentRoot /var/www/virtual/login
        CustomLog "logs/login.logs" combined
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/www.redhat.com.crt
        SSLCertificateKeyFile /etc/pki/tls/private/www.redhat.com.key
</VirtualHost>
<VirtualHost *:80>        #网页重写,客户端访问apache默认会访问80端口,因此重写也在这个端口
        ServerName login.redhat.com
        RewriteEngine on    #打开网页重写功能
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]    #网页重写规则,^(/.*)$用户输入的内容;https://%{HTTP_HOST}转换成https格式;$1代表用户刚才输入的内容;[redirect=301]临时转换
</VirtualHost>

systemctl restart httpd.service

可以看到输入login.redhat.com的域名,等网页加载完毕变成了https的方式。其实就是本身要访问默认80端口的服务却被重新定向到了443的ssl虚拟主机上,并且强制以https方式访问内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值