安装配置Apache服务器

Love The Way You Lie 2022-12-28 07:54 235阅读 0赞

安装配置Apache服务器

一、Apache的工作原理

  Web系统是客户端/服务器模式的,所以应该有服务器程序和客户端程序两个部分。常用的服务器程序是Apache,常用的客户端程序是浏览器。可以在浏览器的地址栏中输入统一资源定位地址(URL)来访问Web页面,Web最基本的概念是超文本,它使得文本可以在阅读过程中从一个页面位置跳转到另一个页面位置。用来书写Web页面的语言称为“超文本标记语言”,即HTML。
  WWW协议遵从HTTP协议,默认的TCP/IP端口是80,客户端与服务器的通信过程如下:

  1. 客户端(浏览器)和Web服务器建立TCP链接,然后向Web服务器发出访问请求(如GET).根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型和请求的URL等一系列信息
  2. Web服务器收到请求后,将客户端的要求的页面内容返回到客户端。如果出现错误,则返回错误代码。
  3. 断开与远程Web服务器的连接。

二、安装和配置服务器

1、安装

  1. yum install httpd -y ##安装http服务器
  2. yum install httpd-manual -y ##安装http手册
  3. systemctl start httpd ##开启服务
  4. systemctl enable httpd ##开机自启动
  • 1
  • 2
  • 3
  • 4

2、apache的基础信息

  1. 主配置文件目录: /etc/httpd/conf
  2. 主配置文件: /etc/httpd/conf/httpd.conf
  3. 子配置目录: /etc/httpd/conf.d/
  4. 子配置文件: /etc/httpd/conf.d/*.conf
  5. 默认发布目录: /var/www/html/
  6. 默认发布文件: /var/www/html/index.html
  7. 默认端口: 80
  8. 默认安全上下文: httpd_sys_content_t
  9. 程序开启默认用户: apache
  10. apache日志: /etc/httpd/logs/*
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3、配置

1)修改默认端口

  1. vim /etc/httpd/conf/httpd.conf
  2. --> 43: Listen 8080 ##修改端口为8080
  3. systemctl restart httpd ##重启服务使修改生效
  • 1
  • 2
  • 3

修改后截图:
这里写图片描述

2)修改默认发布文件

默认发布文件就是访问apache时默认指向的文件,在客户端浏览器输入时直接输入ip地址,而不需要输入文件名即可显示的信息页,这个文件可以在配置文件中指定多个,但他们有访问的先后顺序,因为http默认指向的目录是在/var/www/html/目录里面,所以默认发布文件应该写在这个目录下面才会生效

  1. vim /etc/httpd/conf/httpd.conf
  2. --> 164: DirectoryIndex index.html test.html #当index.heml不存在时访问test.html
  3. vim /var/www/html/index.html
  4. --> <h1> www.lcl.com </h1> ##写默认发布文件
  5. rm -fr /var/www/html/index.html ##删除index.html文件,默认会指向test.html文件
  6. vim /var/www/html/test.html
  7. --> <h1> test's page </h1>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

结果如下:《2》
这里写图片描述
这里写图片描述

3)修改默认发布目录

从上面一个配置的内容可以看到,httpd的默认发布目录是在/var/www/html/目录里面,这个目录时可以通过修改配置文件修改的,具体如下

  1. mkdir /www ##创建想要新指向的默认发布目录
  2. vim /etc/httpd/conf/httpd.conf
  3. --> 120 DocumentRoot "/www" ##默认发布目录指向
  4. 121 <Directory "/www">
  5. 122 Require all granted ##这个目录允许所有请求访问资源
  6. 123 </Directory>
  7. vim /www/index.html ##编写默认文件
  8. --> <h1> another directory test's page</h1>
  9. systemctl restart httpd
  10. 另:若selinux开启的话,必须修改安全上下文,若没有开启的话,不用修改
  11. 修改方法如下:
  12. semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
  13. restorecon -RvvF /www/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

结果如下:
这里写图片描述

4)Apache的虚拟主机

1> 先创建虚拟主机默认发布目录并编写测试页

  1. mkdir -p /var/www/virtual/linux.lcl.com/html
  2. mkdir -p /var/www/virtual/python.lcl.com/html
  3. vim /var/www/virtual/linux.lcl.com/html/index.html
  4. --> <h1>linux.lcl.com</h1>
  5. vim /var/www/virtual/python.lcl.com/html/index.html
  6. --> <h1>python.lcl.com</h1>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2> 编写虚拟主机访问控制文件

这些虚拟主机访问控制文件,可以在http的配置文件/etc/httpd/conf/httpd.conf里面直接添加修改,也可以在/etc/httpd/conf.d/这个目录里面直接添加配置文件,但添加的配置文件必须以.conf结尾,否则不会生效,而且这个目录里面的文件的读取是根据文件名的ascii码的顺序来读取的,所以要想让某一个目录先读取的话,必须把它放在这个目录的第一个上,具体做法如下

  1. cd /etc/httpd/conf.d/
  2. vim adefault.conf
  3. --> <VirtualHost _default_:80> ##主机名默认的80端口
  4. DocumentRoot "/var/www/html" ##找这个文件目录里面的默认访问文件
  5. Customlog "logs/www.lcl.com.logs" combined ##创建日志,这里的路径是相对路径,时在/etc/httpd/目录里面,并且这个设置在配置文件中可以更改,combined表示4中日志格式(access,error,deny,worry)都放在www.lcl.com.logs这个文件中
  6. </VirtualHost>
  7. vim linux.conf
  8. --> <VirtualHost *:80>
  9. ServerName linux.lcl.com ##在客户端浏览器输入的URL为linux.lcl.com
  10. DocumentRoot "/var/www/virtual/linux.lcl.com/html" ##这个目录为默认目录
  11. CustomLog "logs/www.linux.com.logs" combined
  12. </VirtualHost>
  13. <Directory "/var/www/virtual/linux.lcl.com/html">
  14. Require all granted
  15. </Directory>
  16. vim python.conf
  17. --> <VirtualHost *:80>
  18. ServerName python.lcl.com
  19. DocumentRoot "/var/www/virtual/python.lcl.com/html" CustomLog "logs/www.python.com.logs" combined
  20. </VirtualHost>
  21. <Directory "/var/www/virtual/python.lcl.com/html">
  22. Require all granted
  23. </Directory>
  24. systemctl restart httpd
  25. 做到这里,服务器的虚拟主机已经配置完毕,但不要忘记在客户端的主机上进行地址解析,否则将无法用URL访问
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

测试结果如下图:<3>
这里写图片描述
这里写图片描述
这里写图片描述

5)Apache内部访问控制

1> 针对主机的访问控制

针对主机的访问控制是设置主机的黑名单或者白名单

  1. mkdir /var/www/html/test
  2. vim /var/www/html/test/index.html ##创建测试页
  3. <h1> test </h1>
  4. vim /etc/httpd/conf.d/adefault.conf ##修改默认配置文件
  5. --> <Directory "/var/www/html/test"> ##访问/var/www/html/tset目录时,
  6. Order deny,allow ##读取这个配置设置,按照先后顺序读取下面的设置
  7. Allow from 172.25.254.70 ##允许这个ip地址读取
  8. Deny from all ##所有的都不允许
  9. </Directory>
  10. ##因为设置的是先读Deny设置,再读Allow,所以这个设置是只有172.25.254.70ip可以读取test目录下的内容
  11. systemctl restart httpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

测试结果如下:
这里写图片描述

2> 用户访问方式的控制

在用客户端浏览器进入指定的目录时,会弹出一个提示框需要输入正确的被授权的用户名和密码,才可以成公登陆,浏览到指定的文件

  1. [root@station conf.d]# htpasswd -cm /etc/httpd/userpass admin ##创建admin用户并加密密码放到/etc/httpd/userpass文件里面
  2. New password: ##输入密码并不会在shell中显示
  3. Re-type new password:
  4. Adding password for user admin
  5. [root@station conf.d]# htpasswd -m /etc/httpd/userpass admin1 ##新创建admin1用户并输入加密密码放入指定文件中,这条命令和上一条命令相比少了-c,如果有-c的话,会把这个文件原来的内容覆盖掉,而没有的话则会自动在后面添加
  6. New password:
  7. Re-type new password:
  8. Adding password for user admin1
  9. [root@station conf.d]# cat /etc/httpd/userpass ##该文件的内容
  10. admin:$apr1$n7ILq.Rc$84darYQhhvlZ/4y8mt2vH.
  11. admin1:$apr1$Dtb0Oxpk$VMqXbyCPFtFky3k5z3j5q.
  12. [root@station conf.d]# vim adefault.conf
  13. --> <Directory "/var/www/html/test"> ##访问这个目录时
  14. AuthUserFile /etc/httpd/userpass ##先找这个文件
  15. AuthName "Please input your name and password" ##浏览器输入用户名和密码界面会显示的内容
  16. AuthType basic ##类型为基本的类型
  17. Require user admin ##只允许admin用户登陆,而上面设置的admin1用户不会登陆进入访问页面
  18. #Require valid-user ##表示允许有效用户登陆,则userpass文件里面的所有用户均可以登陆
  19. ##上面两行写一行即可,可根据需要更改用户名
  20. </Directory>
  21. [root@station conf.d]# systemctl restart httpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

运行结果如下:<5>
这里写图片描述
用admin用户登陆
这里写图片描述
这里写图片描述
用admin1用户登陆,不会显示测试页,而是还是输入用户名和密码的页面
这里写图片描述
这里写图片描述

6) Apache所支持的语言

1> html,从前面的配置可以看出,用的都是html语言,所以这里就不再解释。

2> php,需要下载php的安装包,可以直接yum下载

  1. [root@station conf.d]# yum install php -y
  2. [root@station conf.d]# vim /var/www/html/index.php
  3. --> <?php
  4. phpinfo();
  5. ?>
  • 1
  • 2
  • 3
  • 4
  • 5

测试结果如下图:
这里写图片描述

3> cgi,前面下载了httpd-manual,关于cgi的配置可以在这上面找到,这里举一个例子即可。

  1. [root@station conf.d]# mkdir /var/www/html/cgi
  2. [root@station conf.d]# vim /var/www/html/cgi/index.cgi
  3. --> #!/usr/bin/perl
  4. print "Content-type: text/html\n\n";
  5. print `date`; ##打印出date命令执行的结果
  6. [root@station conf.d]# chmod +x /var/www/html/cgi/index.cgi
  7. [root@station conf.d]# vim adefault.conf
  8. --> <Directory "/var/www/html/cgi">
  9. Options ExecCGI
  10. AddHandler cgi-scripts .cgi
  11. </Directory>
  12. [root@station conf.d]# systemctl restart httpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

7) https:https是http+ssl,传输通道加密,https的端口是443

  1. [root@station cgi]# yum install crypto-utils mod_ssl -y
  2. [root@station cgi]# keygen www.lcl.com ##进行加密,设置完成后会在界面出现证书和密钥的位置及文件
  3. [root@station cgi]# systemctl restart httpd
  • 1
  • 2
  • 3

此时用浏览器输入https://www.lcl.com 就可以看到浏览器让下载证书,下载后,可以正常访问
测试及配置结果如下:
配置
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
证书位置和key位置
这里写图片描述
测试过程
这里写图片描述
下载证书
这里写图片描述
这里写图片描述

8) 设置https虚拟化主机并设置网页重定向功能

  1. [root@station ~]# mkdir ![这里写图片描述](https://img-blog.csdn.net/20171122191016682?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGNsX3hpYW93dWd1aQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)-p /var/www/virtual/login.lcl.com/html
  2. [root@station ~]# vim /var/www/virtual/login.lcl.com/html/index.html
  3. <h1>login.lcl.com </h1>
  4. [root@station conf.d]# vim /etc/httpd/conf.d/login.conf
  5. 1 <VirtualHost *:443> ##用443端口访问login.lcl.com
  6. 2 ServerName login.lcl.com
  7. 3 DocumentRoot "/var/www/virtual/login.lcl.com/html"
  8. 4 CustomLog "logs/login.logs" combined
  9. 5 SSLEngine on ##SSL加密模式开启,可从httpd-manual里面查看
  10. 6 SSLCertificateFile /etc/pki/tls/certs/www.lcl.com.crt ##生成的证书位置
  11. 7 SSLCertificateKeyFile /etc/pki/tls/private/www.lcl.com.key ##生成的key位置
  12. 8 </VirtualHost>
  13. 9 <Directory "/var/www/virtual/login.lcl.com/html">
  14. 10 Require all granted
  15. 11 </Directory>
  16. 12 <VirtualHost *:80>
  17. 13 ServerName login.lcl.com
  18. 14 RewriteEngine On
  19. 15 RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301] ##端口为80的http的访问login.lcl.com转到https
  20. 16 </VirtualHost>
  21. ##^(/.*)$ ##客户在浏览器地址栏中输入的所有字符
  22. ##https:// ##强制客户加密访问
  23. ##%{HTTP_HOST} ##客户请求主机
  24. ##$1 ##和^(/.*)$值一样
  25. ##[redirect=301] ##临时重写,302表示永久转换
  26. 客户端也需要做好地址解析,才能访问
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

测试结果如图:
这里写图片描述
可以看出自动转到https
这里写图片描述
这里写图片描述

其他则不会转到https
这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,235人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Apache服务器配置

    Apache服务器的配置 WampService集成环境的使用 配置本地IP资源 > 说明:在局域网环境中,不允许别人访问本机的资源,默认情况下Apache中