linux中的APACHE配置

APACHE

curl -I www.baidu.com ###查看所用的服务类型
查看服务端口:  netstat -lntup |grep httpd
apache日志: /etc/httpd/logs/*
注意:如果selinux未关,修改安全上下文为httpd_sys_content_t

一、介绍

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

二、apache的安装

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

systemctl start httpd      #打开服务

systemctl enable httpd    #开机自启动

systemctl stop firewalld     #关闭防火墙

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

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


 

systemctl start httpd      #打开服务

systemctl enable httpd    #开机自启动


 

firewalld-cmd --permanent --add-service=http  #在防火墙策略中添加http和https服务

firewalld-cmd --permanent --add-service=https

firewalld-cmd --reload  #重新加载策略

测试:

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

 

apache还有一个使用手册:需要安装httpd-manual包

访问http://主机ip/manual可以查看,自带的手册,点中文翻译没用

apache手册中文版,在百度中搜索apache手册,语言转换即可:

三、apache的基础信息

四、配置apache服务

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

vim /var/www/html/index.html   ##默认发布文件

<h1>hello world</h1>

主配置目录: /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/*

systemctl restart httpd

访问http://172.25.254.110

netstat -antlupe | grep httpd   ##查看当前http服务的网络接口

2.修改默认端口

vim /etc/httpd/conf/httpd.conf

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

[root@apache html]# firewall-cmd --permanent --add-port=8080/tcp

[root@apache html]# firewall-cmd --reload

[root@apache html]# systemctl restart httpd

测试:

3.修改默认发布文件:

恢复实验环境:将apache的端口恢复为80

默认发布文件就是访问apache时没有指定文件名称时默认访问的文件。

这个文件可以指定多个,有访问顺序

vim /etc/httpd/conf/httpd.conf

164     DirectoryIndex  westos.html   index.html

##当index.html不存在时,访问westos.html

                                          
##如果将westos.html放到index.html前面,

在两个文件都存在的情况下会默认访问westos.html里面的内容

 

 

[root@apache html]# vim westos.html

[root@apache html]# cat westos.html
<h1>westos.html</h1>

[root@apache html]# ls

index.html  westos.html

[root@apache html]# rm -f index.html

[root@apache html]# ls

westos.html

##如果没编辑/etc/httpd/conf/httpd.conf(没添加加westoshtml),

要想看到westos的页面,则在浏览器中输入:http端IP/westos.html 即可
[root@apache html]# systemctl restart httpd.service   修改完配置文件记得一定要重启服务生效

ctrl shift delete 清除缓存

 

  

测试:

4.修改默认发布目录

vim /etc/httpd/conf/httpd.conf

120 DocumentRoot "/www/html"

121 <Directory "/www/html">

122         Require all granted

123 </Directory>

将119行的DocumentRoot "/var/www/html"注释掉复制到下面编辑新的默认发布目录,

再将124-128行的内容复制到,121行到125行,

在删掉AllowOverride None   # Allow open access:,

将/var/www 改为/www/html即可

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

mkdir /www/html -p

vim /www/html/index.html

systemctl restart httpd

为了方便期间我的selinux设置为disabled

注意:如selinux为enforcing则操作如下(改为enforcing重启)

将新建的文件夹的安全上下文改为与/var/www/相同即可

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

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

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

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 

测试

五、apache的虚拟主机

index.html:apache默认发布文件

news.conf 或 music.conf:apache子配置文件

1.

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

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

<h1>172.25.254.110</h1>

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

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

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

 <h1>news.westos.com</h1>

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

<h1>music.westos.com</h1>


 

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

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

<VirtualHost _default_:80>

       DocumentRoot /var/www/html            #发布文件路径
       CustomLog "logs/adefault.log" combined  #日志路径,这里写相对路径,内容在/etc/httpd/logs/*.log里面

 </VirtualHost>


 

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

   <VirtualHost *:80>

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

           DocumentRoot /var/www/virtual/news/html  #发布目录
           Customlog "logs/news.log" combined        #站点日志,combined表示四种日志类型的合集

   </VirtualHost>

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

           Require all granted                        #建立认证关系

  </Directory>


 

vim music.conf

  1 <VirtualHost *:80>

  2         ServerName music.westos.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

 

做完后清空环境

http端:

浏览器端:

恢复apache主配置文件的默认发布目录

六、apache访问限制(http端IP:172.25.254.110 浏览器端:172.25.254.210)

重新编辑apache默认发布文件

1.通过黑白名单

vim /etc/httpd/conf.d/a_default.conf

DocumentRoot "/var/www/html"
<Directory "/var/www/html">
        order deny,allow      #deny和allow哪个在前就先读取下面的哪个配置
        allow from 172.25.254.210##允许210这台主机访问
        deny from all    ##拒绝所有
</Directory>
        

测试端:

IP(210)

IP(57)

直接访问html文件:

2.通过密码

1)创建密码文件:

[root@fuwu 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@fuwu conf.d]# cat /etc/httpd/userpass 

admin:$apr1$GNsdwvzs$ONpK.ap5kzyJYUBe0XPRg/

admin1:$apr1$8KpmN94R$KRkKghToPsRf9X4vCdhGB0

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

[root@fuwu 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/httpd.conf

DocumentRoot "/var/www/html"

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

#    Require all granted

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,需要密码登陆,输入刚才创建的用户和密码即可

输入用户和密码:admin 和******

七、apache支持的语言(html,php)

1.php

yum install php -y        #安装php包

清理环境:

vim /var/www/html/index.php    #默认发布目录下写一个php文件(编写php测试页)

  <?php

           phpinfo();

  ?>

vim /etc/httpd/conf/httpd.conf

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

 

systemctl restart httpd.service

在客户端(210):

 

2.cgi

cd /var/www/cgi-bin/

vim index.cgi  wq退出保存,不编辑

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

vim index.cgi              #建立相关文件

 

#!/usr/bin/perl

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

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

vim /etc/httpd/conf.d/a_default.conf

[root@fuwu cgi-bin]# cat /etc/httpd/conf.d/a_default.conf
<VirtualHost _default_:80>
    DocumentRoot "/var/www/html"
    CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
    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`这个命令,这里也可以是一个脚本执行后的结果

 

[root@fuwu cgi-bin]# systemctl restart httpd

测试:

3.其他

 

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

 

 

八、https(ssl加密认证)

 

 

1.ssl制作与使用

vim /var/www/html/index.html

<h1>westso</h1>

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

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

genkey www.westos.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.110服务器:

 

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

 

查看一下我们的ssl证书:

 

 

 

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

1)设定https虚拟主机

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

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

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

 

systemctl restart httpd.service

可以看到输入login.westos.com的域名,等网页加载完毕变成了https的方式。

其实就是本身要访问默认80端口的服务却被重新定向到了443的ssl虚拟主机上,

并且强制以https方式访问内容。

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值