基于Linux下的appache Web 服务

什么是appache?

APACHE就是一个网络服务器,这个服务器侦听一个TCP端口,一般是80,对端口收到的命令进行解释,然后提交一些结果。Apache是专门用来提供HTTP服务的,以及相关配置的(例如虚拟主机等)。


appache与nginx的区别

apache 稳定;同步阻塞模式(前面的人有优先权等待的人,后面的人被阻塞)
nginx 高效;异步非阻塞模式(前面的人和后面的人可以同时访问)


apache基本配置

1、清理实验环境:

rpm -e httpd php php-mysql
rm -fr /var/www/
![这里写图片描述](https://img-blog.csdn.net/20180531175422456?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdrYW5h/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

2、安装apache:

yum install httpd -y   //安装
systemctl start httpd  //开启http服务
systemctl stop firewalld //关闭防火墙
netstat -antlupe | grep httpd //查看httpd的端口
vim /var/www/html/index.html  //默认发布文件编辑,其中,/var/www/html为默认发布目录
        hello world  //内容

这里写图片描述
这里写图片描述
文件index.html内容(其中<h1>是改变字体大小的):
这里写图片描述
浏览器测试:看到的内容就是/var/www/html/index.html的内容
这里写图片描述


修改端口后的查询方式

vim /etc/httpd/conf/httpd.conf //编辑配置文件
     listen 8080;  //将原来的80改为现在的8080;
systemctl restart httpd  //重启服务

这里写图片描述
这里写图片描述
浏览器查询(这里的端口已经不是默认的了,需要指定端口):
这里写图片描述
将端口恢复至80,不要影响后面的实验;


重新指定默认发布目录

[root@foundation174 html]# mkdir /westos/html -p //建立新的目录
[root@foundation174 html]# cd /westos/html/
[root@foundation174 html]# pwd  //查询当前目录
/westos/html
[root@foundation174 html]# vim index.html  //编辑文件内容
[root@foundation174 html]# vim /etc/httpd/conf/httpd.conf //编辑配置文件119行附近,重新修改目录:
    121 DocumentRoot "/westos/html" //修改默认发布目录
    122 <Directory "/westos">
    123         require all granted
    124 </Directory>
[root@foundation182 html]# systemctl restart httpd //重启服务

编辑配置文件的内容:
这里写图片描述
指定默认发布目录/westos/html后,编辑发布文件index.html:
这里写图片描述
浏览器查询:
这里写图片描述


重新指定默认发布文件

vim /etc/httpd/conf/httpd.conf //编辑配置文件
    121 DocumentRoot "/westos/html"
    122 <Directory "/westos/html/linux">
    123         DirectoryIndex index.html
    124 </Directory>
    125 <Directory "/westos">
    126         require all granted
    127         DirectoryIndex index.html
    128 </Directory>
systemctl restart httpd //重启服务

配置文件编写内容:
这里写图片描述
这里写图片描述
指定发布文件/westos/html/linux/index.html 内容:
这里写图片描述
浏览器查询:(linux目录里2个文件:index.html和test.html,因为指定的文件为index.html,所以不会显示test.html的内容)
这里写图片描述


基于ip的访问控制

[root@desktop ~]# systemctl start httpd  //开启httpd服务
[root@desktop ~]# systemctl stop firewalld //关闭火墙
[root@desktop ~]# vim /etc/httpd/conf/httpd.conf //编辑配置文件,恢复默认发布目录;恢复默认发布目录为/var/www/html
119 DocumentRoot "/var/www/html"
120 
121 #DocumentRoot "/westos/html"
[root@desktop ~]# systemctl restart httpd //重启服务
[root@desktop ~]# cd /var/www/html/
[root@desktop html]# mkdir westos
[root@desktop html]# ls
index.html  test.html  westos
[root@desktop html]# cd westos/

这里写图片描述
这里写图片描述
这里写图片描述

[root@desktop ~]# vim /etc/httpd/conf/httpd.conf//编辑文件:对某些ip进行访问控制;
    122 <Directory "/var/www/html/westos">
    123         Order Allow,Deny    //先读取白名单的内容,后读取黑名单的内容
    124         Allow from All   //白名单:允许所有ip进行访问
    125         Deny from 172.25.254.74 //黑名单,禁止ip为172.25.254.74进行访问;
    126 </Directory>
[root@desktop ~]# systemctl restart httpd //重启服务

配置文件编辑内容:
这里写图片描述
用ip为172.25.254.74的主机浏览器进行访问:(被拒绝)
这里写图片描述

[root@desktop ~]# vim /etc/httpd/conf/httpd.conf
122 <Directory "/var/www/html/westos">
123         Order Deny,Allow  //先读取黑名单的内容,后读取白名单的内容
124         Allow from 172.25.254.74 //只允许ip为172.25.254.74主机进行访问
125         Deny from ALL  //禁止所有用户进行访问
126 </Directory>
[root@desktop ~]# systemctl restart httpd //重启服务

配置文件编辑:
这里写图片描述
用ip为172.25.254.74的主机浏览器进行访问:(允许)
这里写图片描述


基于用户的访问控制

A:指定单个用户进行访问
准备实验环境:注释刚刚ip的设定

[root@desktop httpd]# htpasswd -cm apacheuser tom  //修改tom的密码
New password: 
Re-type new password: 
Adding password for user tom
[root@desktop httpd]# htpasswd -m apacheuser admin //加上-c会覆盖之前的内容
New password: 
Re-type new password: 
Adding password for user admin
[root@desktop httpd]# cat apacheuser  //查看用户及密码信息
tom:$apr1$JI/YD8Pi$RnrExjesN/s.8tPjOfnmO.
admin:$apr1$UsLV8vRU$cqTY/f.YHS5g5XC127Tix/
[root@desktop ~]# vim /etc/httpd/conf/httpd.conf //编辑配置文件
129 <Directory "/var/www/html/westos">
130         AuthUserFile /var/www/html/westos/apacheuser  //指定文件,这里的文件是apacheuser的绝对路径
131         AuthName "Please input your name and your passwd!!"  //网页提示语
132         AuthType basic  //基本认证(认证类型)
133         Require user admin   //指定用户
[root@desktop ~]# systemctl restart httpd  //重启服务

这里写图片描述
这里写图片描述
这里写图片描述
配置文件/etc/httpd/conf/httpd.conf内容:
这里写图片描述
浏览器查询(会出现一个用户登录认证界面):
这里写图片描述
现在我们输入admin(刚刚指定可以登录的用户)和密码:是可以看到内容的
这里写图片描述
那么输入tom(其余用户)和密码:是不能登陆成功的
这里写图片描述

B:指定文件的所有用户

[root@desktop ~]# vim /etc/httpd/conf/httpd.conf  //编辑配置文件
129 <Directory "/var/www/html/westos">
130         AuthUserFile /etc/httpd/apacheuser
131         AuthName "Please input your name and your passwd!!"
132         AuthType basic
134         Require valid-user  //所有apacheuser文件中存在的所有用户
[root@desktop ~]# systemctl restart httpd  //重启服务

文件内容:
这里写图片描述
浏览器查询(所有用户都试一遍),当然都可以看见内容了;
这里写图片描述


用一个ip发布多个节点的测试页

本次实验用真机进行浏览器访问测试(浏览器在哪台主机,ip就是这台主机的ip)

1、首先完成本地解析:

vim /etc/hosts  //本地解析文件
   172.25.254.174 www.westos.com music.westos.com news.westos.com

这里写图片描述
这里写图片描述
2、在虚拟机desktop完成以下操作(完成apache配置的主机):

[root@desktop conf.d]# vim /etc/httpd/conf.d/default.conf //编辑默认网页发布的文件
  1 <VirtualHost _default_:80>
  2         DocumentRoot /var/www/html 
  3         CustomLog "logs/defult.log" combined 
  4 </VirtualHost>

这里写图片描述
这里写图片描述

[root@desktop conf.d]# mkdir /var/www/virtual/westos.com/news -p  //建立文件
[root@desktop conf.d]# mkdir /var/www/virtual/westos.com/music -p
[root@desktop conf.d]# cd /var/www/virtual/westos.com
[root@desktop westos.com]# cd news
[root@desktop news]# vim index.html  //编辑news.westos.com发布内容
        编辑内容:我是:/var/www/virtual/westos.com/news/index.html
[root@desktop westos.com]# cd music
[root@desktop news]# vim index.html //编辑music.westos.com发布内容
        编辑内容:我是:/var/www/virtual/westos.com/music/index.html

这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述

[root@desktop conf.d]# vim news.conf //编辑news.westos.com发布内容
      1 <VirtualHost *:80>
      2         ServerName news.westos.com  
      3         DocumentRoot "/var/www/virtual/westos.com/news/"
      4         CustomLog "logs/news.log" combined
      5 </VirtualHost>
      6 <Directory "/var/www/virtual/westos.com/news/">
      7         Require all granted
      8 </Directory>

这里写图片描述

[root@desktop conf.d]# cp new.conf music.conf //复制一份
[root@desktop conf.d]# vim music.conf //更改所有的news为music :%s/news/music/g
[root@desktop conf.d]# systemctl restart httpd  //重启

这里写图片描述
这里写图片描述
这里写图片描述
浏览器(配置本地解析的那台主机的浏览器)测试:
这里写图片描述
这里写图片描述
这里写图片描述
如果三个域名出现各自的文件,那么操作成功;


自定义自签名证书

[root@desktop ~]# yum install mod_ssl -y 
[root@desktop ~]# yum install crypto-utils.x86_64 -y 
[root@desktop ~]# genkey www.westos.com //执行此命令后进入自定义设置界面

这里写图片描述
这里写图片描述
这里写图片描述
执行genkey www.westos.com 后进入自定义设置界面:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
完成之后,进入选择:
这里写图片描述
接下来,谈些自定义信息:
这里写图片描述
完成一系列设置之后,替换证书和密钥:

[root@desktop ~]# vim /etc/httpd/conf.d/ssl.conf  //安装证书及其私钥     
    100 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
    107 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
[root@desktop ~]# systemctl restart httpd  //重启服务

密钥和证书的地址,可以在genkey命令后面找到;

编辑替换原来的证书和密钥:
这里写图片描述
这里写图片描述
这里写图片描述
打开浏览器,输入 https://www.westos.com(点击锁的样式,看证书是否是自定义的;)
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
查询证书,会发现,证书信息是自己定义的:
这里写图片描述


网页重写
在真机的地址解析添加:在172.25.254.174后面添加login.westos.com
这里写图片描述
这里写图片描述

//在虚拟机完成以下操作:
[root@desktop conf.d]# cp new.conf login.conf
[root@desktop conf.d]# mkdir -p /var/www/virtual/westos.com/login/
[root@desktop conf.d]# vim /var/www/virtual/westos.com/login/index.html
                   编辑内容:我是:/var/www/virtual/westos.com/login/index.html
[root@desktop conf.d]# vim login.conf
      1 <VirtualHost *:443>              //建立一个虚拟主机
      2         ServerName login.westos.com
      3         DocumentRoot "/var/www/virtual/westos.com/login/"
      4         CustomLog "logs/login.log" combined
      5         SSLEngine on                 //功能开启
      6         SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
      7         SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
      8 </VirtualHost>
      9 <Directory "/var/www/virtual/westos.com/login/">
     10         Require all granted
     11 </Directory>
     12 <VirtualHost *:80>      //自动转换
     13         ServerName login.westos.com
     14         RewriteEngine on
     15         RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301] //^(/.*)$客户主机在浏览器所写入的字符; https://%{HTTP_HOST}$1 客户主机在浏览器所写入的内容去掉协议的部分;redirect=301 代表临时转换
     16 </VirtualHost>
[root@desktop conf.d]# systemctl restart httpd  //重启服务

/etc/httpd/conf.d/login.conf 的内容:
这里写图片描述
/var/www/virtual/westos.com/login/index.html的内容:
这里写图片描述
浏览器查询,输入域名login.westos.com
这里写图片描述


php语言支持

[root@desktop html]# yum install php -y  //安装软件
[root@desktop html]# vim index.php  //编辑php类型文本
  1 <?php
  2         phpinfo();
  3 ?>
[root@desktop html]# vim /etc/http/conf/httpd.conf  //在配置文件将php添加在html之前,让系统访问
  180     DirectoryIndex index.php index.html 
[root@desktop html]# systemctl restart httpd  //重启服务

这里写图片描述
文件index.php内容:
这里写图片描述
配置文件编辑(调整顺序,在配置文件将php添加在html之前,让系统先于php访问):
这里写图片描述
浏览器查询:
这里写图片描述


cgi

[root@desktop conf.d]# cd /var/www/html
[root@desktop html]# mkdir cgi  新建目录
[root@desktop html]# vim cgi/index.cgi  //编辑cgi脚本
  1 #!/usr/bin/perl
  2 print "Content-type: text/html\n\n";
  3 print `date`;   //显示日期

这里写图片描述
这里写图片描述

[root@desktop html]# ll cgi/index.cgi 
-rw-r--r-- 1 root root 67 May 27 02:13 cgi/index.cgi
[root@desktop html]# chmod +x cgi/index.cgi  //赋予可执行权限
[root@desktop html]# ./cgi/index.cgi  //执行脚本
Content-type: text/html

Sun May 27 02:14:16 EDT 2018

这里写图片描述
这里写图片描述

[root@desktop html]# cd /etc/httpd/conf.d
[root@desktop conf.d]# vim default.conf                   
      1 <VirtualHost _default_:80>
      2         DocumentRoot /var/www/html
      3         CustomLog "logs/defult.log" combined
      4 </VirtualHost>
      5 <Directory "/var/www/html/cgi">
      6         Options +ExecCGI
      7         AddHandler cgi-script .cgi
      8         DirectoryIndex index.cgi
      9 </Directory>
[root@desktop conf.d]# systemctl restart httpd

这里写图片描述
这里写图片描述
这里写图片描述
浏览器查询,输入172.25.254.174/cgi,会看到浏览器显示的是编写的脚本执行结果
这里写图片描述


squid正向代理

确保有一台主机可以上网(真机),另一台主机想要上网必须通过有网的主机缓存

在虚拟机里设置网络,确保虚拟机可以连接到网络;
yum install squid -y   
vim /etc/sysconfig/nework-scripts/ifcfg-eth0
  GATE=172.25.254.74
  DNS1=114.114.114.114
systemctl restart network
vim /etc/squid/squid.conf
    56 http_access allow all  
    62 cache_dir ufs /var/spool/squid 100 16 256 //取消这行的注释
systemctl start squid 

输入百度的网址,测试可以看到网页,但是真实访问的不是真实的网页,而是172.25.254.114这台主机的缓存;

浏览器设置网络代理:

preferences–>Advanced–>Network–>Settings–>Manual proxy configuration
HTTP Proxy: 172.25.254.74 (可以上网的主机) Port:3128
选中 use this proxy server for all protocols 这一项;


squid反向代理
实现了两次加速;

实验需要2个主机:
主机作为服务端,相当于深圳;server作为中介,相当于西安;
主机(服务端):设置好httpd服务

server:
        yum install squid -y //安装squid;
        systemctl stop firewalld //关闭火墙
        vim /etc/squid/suqid.conf 
            56 http_access allow all
            59 http_port 80 vhost vport  //虚拟主机和虚拟端口
            60 cache_peer 172.25.254.114 parent 80 0 proxy-only //通过80端口缓存自己没有的东西
        systemctl start squid

打开浏览器,关闭网络代理:preferences–>Advanced–>Network–>Settings–>No Proxy
在desktop(客户端)浏览器中查询ip:172.25.254.247(server),可以看到apache的发布内容;

猜你喜欢

转载自blog.csdn.net/wangkana/article/details/80529015
今日推荐